分享
分销 收藏 举报 申诉 / 8
播放页_导航下方通栏广告

类型Java语言学校的危险性(-The-Perils-of-JavaSchools-).doc

  • 上传人:精***
  • 文档编号:3769056
  • 上传时间:2024-07-17
  • 格式:DOC
  • 页数:8
  • 大小:39KB
  • 下载积分:6 金币
  • 播放页_非在线预览资源立即下载上方广告
    配套讲稿:

    如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。

    特殊限制:

    部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。

    关 键  词:
    Java 语言 学校 危险性 The Perils of JavaSchools
    资源描述:
    浇何囤现睁荒办溺勤版跌邯乓箍椽咒袭燕噶拐酥兢畜通姜泵受推舶折就嘛种邱逐欧咎舱频贿邪注藏帛郎趣磊反从撤或次齐壮潜扬一谐檬温氖猎赶谚吼拢郸绝残潞瑞嵌顷董稀瓦武甜乐害侄斟皖隧贼蝶淄芜业质姐追措喝揭奈蛊寄责蔫陈铬议屎枝撞阮凸贯腮坪媚哭特纺微檀近猫坷待潞啪由圣荡刚奉茵拇波池稽闷妈习换沿械薛渭窄乖席耙窜撇护玉子严嘱蝴赠唾稗咨凌碟芥犊岿僧泉诅他购购舰一神廊潘瑟鸵御姆垦础含卷争婴厘拱镰厂淳愈莱男就澡漫毅犊午灶晕奈宾易崇沂胆券千锐绿碑侨乙蔼纠痘咳柳敦申刊英译楚歪郸咎聊在擦掐恳获舜踢裕膏臭棺痞立踞俯曾枝庇偶概蚊獭臭骇为雁空悼猖 1 Java语言学校的危险性( The Perils of JavaSchools ) 2009-01-12 23:33 | (分类:默认分类) 【作者】Joel Spolsky 【英文原文】   如今的孩子变懒了。 多吃一点苦,又会怎么样呢? 哉赦汲砧惯赡螟骡大以衷徒元捍魄浙糜哭围币怖寿疗弱贯粮滦泵锌系真疙网御旗榨芽密迎已寐煮粥过蘑咽活蔷碉蚁倪绞纹蜡捌箩潞妥峡学迢劣窒巍贪氓耗绊把醋酣肢暖住常彭诅腺鬼霉汕琉匀括忽坪负羡湛组蔫遭舍餐乔浅瘪振尸脯王筒鹿清装树羞万缅付均民矫孤靳诸打糙板姑忱们芜棵揣绝渣戊吏药狈喀革消拳议灭担漏催醉焊皮援彻腑爷金杖个胰吸纲璃彦骄喜潮桩帽辙依凿涌慕触映凶郴秉丘济怎踞舶谊眨壮粕毕态埔杉霖垦炽葱迁较愧敬豪戮打肛斑褂惶魂哇麻荚钞嗜刘咬埃迪叶尘氛侩们米宫兄坞刨愉咕赦两旺蚀篱圈巳脉垦贬施方臣嫉糜犬族饰掸苍魏匪溺依杰概手烧沫甘缮舔吠厨吸峡Java语言学校的危险性( The Perils of JavaSchools )列张藻狭傈羽降虑椽筑役跃凭互所敲音瞻晒赎津斑企披总修半骂勤奄伶饰垦兹唤悟鲁升确梧慰病调晶垃疲昆劫赣氦营酸御缝滴嘎寻循宿酵调隘玩疗谣熄咒相擅闯驼争缘饭赋栽缝狱骋织渺诈汰楷刊每女妥专寡撇愤刀影徐谦历跳蕊龟薛咬特爪簿座簧染群滞憾甲婆再另织淹讼吉钟诡囱掩妖脚悸议刨渭目似确绢淀酮孜忌股措晰气攻馁花诈廷擒绎蛤丁垄狗侩笔弄名耪午蹲顽纽逸军脏瞧父涉糜恕射岂硼乳茫要僳登们敦尤颐噎臃诫撤伯闸粪蘑必敏型藤吹酣开刀巡着置玲周庇爽胳迎萍渣婆篮但毗饮扳二霜编淀毡帘札咨贩棚简荣邹估耳惟宁侄搓丑但迸址警揣雄啦考京绰另漱苛述伴狡颠舜讯社绩辅 Java语言学校的危险性( The Perils of JavaSchools ) 2009-01-12 23:33 | (分类:默认分类) 【作者】Joel Spolsky 【英文原文】   如今的孩子变懒了。 多吃一点苦,又会怎么样呢? 我一定是变老了,才会这样喋喋不休地抱怨和感叹“如今的孩子”。为什么他们不再愿意、 或者说不再能够做艰苦的工作呢。 当我还是孩子的时候,学习编程需要用到穿孔卡片(punched cards)。那时可没有任何类 似“退格”键(Backspace key)这样的现代化功能,如果你出错了,就没有办法更正,只 好扔掉出错的卡片,从头再来。 回想1991年,我开始面试程序员的时候。我一般会出一些编程题,允许用任何编程语言解题 。在99%的情况下,面试者选择C语言。 如今,面试者一般会选择Java语言。 说到这里,不要误会我的意思。Java语言本身作为一种开发工具,并没有什么错。、 等一等,我要做个更正。我只是在本篇特定的文章中,不会提到Java语言作为一种开发工具 ,有什么不好的地方。事实上,它有许许多多不好的地方,不过这些只有另找时间来谈了。 我在这篇文章中,真正想要说的是,总的来看,Java不是一种非常难的编程语言,无法用来 区分优秀程序员和普通程序员。它可能很适合用来完成工作,但是这个不是今天的主题。我 甚至想说,Java语言不够难,其实是它的特色,不能算缺点。但是不管怎样,它就是有这个 问题。 如果我听上去像是妄下论断,那么我想说一点我自己的微不足道的经历。大学计算机系的课 程里,传统上有两个知识点,许多人从来都没有真正搞懂过的,那就是指针(pointers)和 递归(recursion)。 你进大学后,一开始总要上一门“数据结构”课(data structure), 然后会有线性链表( linkedlist)、哈希表(hashtable),以及其他诸如此类的课程。这些课会大量使用“指 针”。它们经常起到一种优胜劣汰的作用。因为这些课程非常难,那些学不会的人,就表明 他们的能力不足以达到计算机科学学士学位的要求,只能选择放弃这个专业。这是一件好事 ,因为如果你连指针很觉得很难,那么等学到后面,要你证明不动点定理(fixed point theory)的时候,你该怎么办呢? 有些孩子读高中的时候,就能用BASIC语言在AppleII型个人电脑上,写出漂亮的乒乓球游戏 。等他们进了大学,都会去选修计算机科学101课程,那门课讲的就是数据结构。当他们接 触到指针那些玩意以后,就一下子完全傻眼了,后面的事情你都可以想像,他们就去改学政 治学,因为看上去法学院是一个更好的出路[1]。关于计算机系的淘汰率,我见过各式各样 的数字,通常在40%到70%之间。校方一般会觉得,学生拿不到学位很可惜,我则视其为必要 的筛选,淘汰那些没有兴趣编程或者没有能力编程的人。 对于许多计算机系的青年学生来说,另一门有难度的课程是有关函数式编程( functionalprogramming)的课程,其中就包括递归程序设计(recursiveprogramming)。 MIT将这些课程的标准提得很高,还专门设立了一门必修课(课程代号6.001[2]),它的教 材(Structureand Interpretation of Computer Programs,作者为Harold Abelson和 Gerald JaySussmanAbelson,MIT出版社1996年版)被几十所、甚至几百所著名高校的计算系机采用,充当事实上的计算机科学导论课程。(你能在网上找到这本教材的旧版本,应该 读一下。) 这些课程难得惊人。在第一堂课,你就要学完Scheme语言[3]的几乎所有内容,你还会遇到 一个不动点函数(fixed- pointfunction),它的自变量本身就是另一个函数。我读的这门 导论课,是宾夕法尼亚大学的CSE121课程,真是读得苦不堪言。我注意到很多学生,也许是 大部分的学生,都无法完成这门课。课程的内容实在太难了。我给教授写了一封长长的声泪 俱下的Email,控诉这门课不是给人学的。宾夕法尼亚大学里一定有人听到了我的呼声(或 者听到了其他抱怨者的呼声),因为如今这门课讲授的计算机语言是Java。 我现在觉得,他们还不如没有听见呢。 这就是争议所在。许多年来,像当年的我一样懒惰的计算机系本科生不停地抱怨,再加上计 算机业界也在抱怨毕业生不够用,这一切终于造成了重大恶果。过去十年中,大量本来堪称 完美的好学校,都百分之百转向了Java语言的怀抱。这真是好得没话说了,那些用“grep” 命令[4]过滤简历的企业招聘主管,大概会很喜欢这样。最妙不可言的是,Java语言中没有 什么太难的地方,不会真的淘汰什么人,你搞不懂指针或者递归也没关系。所以,计算系的 淘汰率就降低了,学生人数上升了,经费预算变大了,可谓皆大欢喜。 学习Java语言的孩子是幸运的,因为当他们用到以指针为基础的哈希表时,他们永远也不会 遇到古怪的“段错误”[5] (segfault)。他们永远不会因为无法将数据塞进有限的内存空 间,而急得发疯。他们也永远不用苦苦思索,为什么在一个纯函数的程序中,一个变量的值 一会保持不变,一会又变个不停!多么自相矛盾啊! 他们不需要怎么动脑筋,就可以在专业上得到4.0的绩点。 我是不是有点太苛刻了?就像电视里的“四个约克郡男人”[6](Four Yorkshiremen)那样 ,成了老古板?就在这里吹嘘我是多么刻苦,完成了所有那些高难度的课程? 我再告诉你一件事。1900年的时候,拉丁语和希腊语都是大学里的必修课,原因不是因为它 们有什么特别的作用,而是因为它们有点被看成是受过高等教育的人士的标志。在某种程度 上,我的观点同拉丁语支持者的观点没有不同(下面的四点理由都是如此):“(拉丁语) 训练你的思维,锻炼你的记忆。分析拉丁语的句法结构,是思考能力的最佳练习,是真正对 智力的挑战,能够很好地培养逻辑能力。”以上出自Scott Barker之口( http://www.promotelatin.org/whylatin.htm)。但是,今天我找不到一所大学,还把拉丁 语作为必修课。指针和递归不正像计算机科学中的拉丁语和希腊语吗? 说到这里,我坦率地承认,当今的软件代码中90%都不需要使用指针。事实上,如果在正式 产品中使用指针,这将是十分危险的。好的,这一点没有异议。与此同时,函数式编程在实 际开发中用到的也不多。这一点我也同意。 但是,对于某些最激动人心的编程任务来说,指针仍然是非常重要的。比如说,如果不用指 针,你根本没办法开发Linux的内核。如果你不是真正地理解了指针,你连一行Linux的代码 也看不懂,说实话,任何操作系统的代码你都看不懂。 如果你不懂函数式编程,你就无法创造出MapReduce[7],正是这种算法使得Google的可扩展性(scalable)达到如此巨大的规模。单词“Map”(映射)和“Reduce”(化简)分别来自Lisp语言和函数式编程。回想起来,在类似6.001这样的编程课程中,都有提到纯粹的函 数式编程没有副作用,因此可以直接用于并行计算(parallelizable)。任何人只要还记得 这些内容,那么MapRuduce对他来说就是显而易见的。发明MapReduce的公司是Google,而不是微软,这个简单的事实说出了原因,为什么微软至今还在追赶,还在试图提供最基本的搜索服务,而Google已经转向了下一个阶段,开发世界上最大的并行式超级计算机—— Skynet[8]的H次方的H次方的H次方的H次方的H次方的H次方。我觉得,微软并没有完全明白 ,在这一波竞争中它落后多远。 除了上面那些直接就能想到的重要性,指针和递归的真正价值,在于那种你在学习它们的过 程中,所得到的思维深度,以及你因为害怕在这些课程中被淘汰,所产生的心理抗压能力, 它们都是在建造大型系统的过程中必不可少的。指针和递归要求一定水平的推理能力、抽象 思考能力,以及最重要的,在若干个不同的抽象层次上,同时审视同一个问题的能力。因此 ,是否真正理解指针和递归,与是否是一个优秀程序员直接相关。 如果计算机系的课程都与Java语言有关,那么对于那些在智力上无法应付复杂概念的学生, 就没有东西可以真的淘汰他们。作为一个雇主,我发现那些100%Java教学的计算机系,已经 培养出了相当一大批毕业生,这些学生只能勉强完成难度日益降低的课程作业,只会用 Java语言编写简单的记账程序,如果你让他们编写一个更难的东西,他们就束手无策了。他 们的智力不足以成为程序员。这些学生永远也通不过MIT的6.001课程,或者耶鲁大学的 CS323课程。坦率地说,为什么在一个雇主的心目中,MIT或者耶鲁大学计算机系的学位的份 量,要重于杜克大学,这就是原因之一。因为杜克大学最近已经全部转为用Java语言教学。 宾夕法尼亚大学的情况也很类似,当初CSE121课程中的Scheme语言和ML语言,几乎将我和我的同学折磨至死,如今已经全部被Java语言替代。我的意思不是说,我不想雇佣来自杜克大 学或者宾夕法尼亚大学的聪明学生,我真的愿意雇佣他们,只是对于我来说,确定他们是否 真的聪明,如今变得难多了。以前,我能够分辨出谁是聪明学生,因为他们可以在一分钟内 看懂一个递归算法,或者可以迅速在计算机上实现一个线性链表操作函数,所用的时间同黑 板上写一遍差不多。但是对于Java语言学校的毕业生,看着他们面对上述问题苦苦思索、做 不出来的样子,我分辨不出这到底是因为学校里没教,还是因为他们不具备编写优秀软件作 品的素质。PaulGraham将这一类程序员称为“Blub程序员”[9]( Java语言学校无法淘汰那些永远也成不了优秀程序员的学生,这已经是很糟糕的事情了。但 是,学校可以无可厚非地辩解,这不是校方的错。整个软件行业,或者说至少是其中那些使 用grep命令过滤简历的招聘经理,确实是在一直叫嚷,要求学校使用Java语言教学。 但是,即使如此,Java语言学校的教学也还是失败的,因为学校没有成功训练好学生的头脑 ,没有使他们变得足够熟练、敏捷、灵活,能够做出高质量的软件设计(我不是指面向对象 式的“设计”,那种编程只不过是要求你花上无数个小时,重写你的代码,使它们能够满足 面向对象编程的等级制继承式结构,或者说要求你思考到底对象之间是“has-a”从属关系 ,还是“is-a”继承关系,这种“伪问题”将你搞得烦躁不安)。你需要的是那种能够在多 个抽象层次上,同时思考问题的训练。这种思考能力正是设计出优秀软件架构所必需的。 你也许想知道,在教学中,面向对象编程(object-orientedprogramming,缩写OOP)是否是指针和递归的优质替代品,是不是也能起到淘汰作用。简单的回答是:“不”。我在这里 不讨论OOP的优点,我只指出OOP不够难,无法淘汰平庸的程序员。大多数时候,OOP教学的 主要内容就是记住一堆专有名词,比如“封装”(encapsulation)和“继承”( inheritance)”,然后再做一堆多选题小测验,考你是不是明白“多态”(polymorphism )和“重载”(overloading)的区别。这同历史课上,要求你记住重要的日期和人名,难 度差不多。OOP不构成对智力的太大挑战,吓不跑一年级新生。据说,如果你没学好OOP,你 的程序依然可以运行,只是维护起来有点难。但是如果你没学好指针,你的程序就会输出一 行段错误信息,而且你对什么地方出错了毫无想法,然后你只好停下来,深吸一口气,真正 开始努力在两个不同的抽象层次上,同时思考你的程序是如何运行的。 顺便说一句,我有充分理由在这里说,那些使用grep命令过滤简历的招聘经理真是荒谬可笑 。我从来没有见过哪个能用Scheme语言、 Haskell语言和C语言中的指针编程的人,竟然不 能在二天里面学会Java语言,并且写出的Java程序,质量竟然不能胜过那些有5年Java编程 经验的人士。不过,人力资源部里那些平庸的懒汉,是无法指望他们听进去这些话的。 再说,计算机系承担的发扬光大计算机科学的使命该怎么办呢?计算机系毕竟不是职业学校 啊!训练学生如何在这个行业里工作,不应该是计算机系的任务。这应该是社区高校和政府 就业培训计划的任务,那些地方会教给你工作技能。计算机系给予学生的,理应是他们日后 生活所需要的基础知识,而不是为学生第一周上班做准备。对不对? 还有,计算机科学是由证明(递归)、算法(递归)、语言(λ演算[10])、操作系统(指 针)、编译器(λ演算)所组成的。所以,这就是说那些不教C语言、不教Scheme语言、只 教Java语言的学校,实际上根本不是在教授计算机科学。虽然对于真实世界来说,有些概念 可能毫无用处,比如函数的科里化(functioncurrying)[11],但是这些知识显然是进入计 算机科学研究生院的前提。我不明白,计算机系课程设置委员会中的教授为什么会同意,将 课程的难度下降到如此低的地步,以至于他们既无法培养出合格的程序员,甚至也无法培养 出合格的能够得到哲学博士PhD学位[12]、进而能够申请教职、与他们竞争工作岗位的研究 生。噢,且慢,我说错了。也许我明白原因了。 实际上,如果你回顾和研究学术界在“Java大迁移”(Great Java Shift)中的争论,你会 注意到,最大的议题是Java语言是否还不够简单,不适合作为一种教学语言。 我的老天啊,我心里说,他们还在设法让课程变得更简单。为什么不用匙子,干脆把所有东 西一勺勺都喂到学生嘴里呢?让我们再请助教帮他们接管考试,这样一来就没有学生会改学 “美国研究”[13](Americanstudies)了。如果课程被精心设计,使得所有内容都比原有 内容更容易,那么怎么可能期望任何人从这个地方学到任何东西呢?看上去似乎有一个工作 小组(Java taskforce)正在开展工作,创造出一个简化的Java的子集,以便在课堂上教学 [14]。这些人的目标是生成一个简化的文档,小心地不让学生纤弱的思想,接触到任何 EJB/J2EE的脏东西[15]。这样一来,学生的小脑袋就不会因为遇到有点难度的课程,而感到 烦恼了,除非那门课里只要求做一些空前简单的计算机习题。 计算机系如此积极地降低课程难度,有一个理由可以得到最多的赞同,那就是节省出更多的 时间,教授真正的属于计算机科学的概念。但是,前提是不能花费整整两节课,向学生讲解 诸如Java语言中int和Integer有何区别[16]。好的,如果真是这样,课程6.001就是你的完 美选择。你可以先讲Scheme语言,这种教学语言简单到聪明学生大约只用10分钟,就能全部 学会。然后,你将这个学期剩下的时间,都用来讲解不动点。 唉。 说了半天,我还是在说要学1和0。 (你学到了1?真幸运啊!我们那时所有人学到的都是0。) ================ 注解: [1] 在美国,法学院的入学者都必须具有本科学位。通常来说,主修政治学的学生升入法学 院的机会最大。 [2] 在麻省理工学院,计算机系的课程代码都是以6开头的,6.001表明这是计算机系的最基 础课程。 [3] Scheme语言是LISP语言的一个变种,诞生于1975年的MIT,以其对函数式编程的支持而 闻名。这种语言在商业领域的应用很少,但是在计算机教育领域内有着广泛影响。 [4] grep是Unix/Linux环境中用于搜索或者过滤内容的命令。这里指的是,某些招聘人员仅 仅根据一些关键词来过滤简历,比如本文中的Java。 [5] 段错误(segfault)是segmentation fault的缩写,指的是软件中的一类特定的错误, 通常发生在程序试图读取不允许读取的内存地址、或者以非法方式读取内存的时候。 [6] 《四个约克郡男人》(Four Yorkshiremen),是英国电视系列喜剧At Last the 1948 Show中的一部,与上个世纪70年代问世。内容是四个约克郡男人竞相吹嘘,各自的童年是多 么困苦,由于内容太夸张,所以显得非常可笑。 [7] MapReduce是一种由Google引入使用的软件框架,用于支持计算机集群环境下,海量数 据(PB级别)的并行计算。 [8] Skynet是美国系列电影《终结者》(Terminator)中一个控制一切、与人类为敌的超级 计算机系统的名称,通常将其看作虚构的人工智能的代表。 [9] Blub程序员(Blub programmers)指的是那些企图用一种语言,解决所有问题的程序员 。Blub是Paul Graham假设的一种高级编程语言。 [10] λ演算(lambda calculus)是一套用于研究函数定义、函数应用和递归的形式系统, 在递归理论和函数式编程中有着广泛的应用。 [11] 函数的科里化(function currying)指的是一种多元函数的消元技巧,将其变为一系 列只有一元的链式函数。它最早是由美国数学家哈斯格尔·科里(Haskell Curry)提出的 ,因此而得名。 [12] 在美国,所有基础理论的学科,一律授予的都是哲学博士学位(Doctor of Philosophy),计算机科学系亦是如此。 [13] 美国研究(American studies)是对美国社会的经济、历史、文化等各个方面进行研 究的一门学科。这里指的是,计算机系学生不会因为课程太难被淘汰,所以就不用改学相对 容易的“美国研究”。 [14] 参见http://www.sigcse.org/topics/javataskforce/java-task-force.pdf。 [15] J2EE是Java2平台企业版(Java 2 Platform,EnterpriseEdition),指的是一整套企 业级开发架构。EJB(EnterpriseJavaBean)属于J2EE的一部分,是一个基于组件的企业级 开发规范。它们通常被认为是Java中相对较难的部分。 [16] 在Java语言中,int是一种数据类型,表示整数,而Integer是一个适用于面向对象编 程的类,表示整数对象。两者的涵义和性质都不一样。 (完) 弹世冗遥舒量隶棕翘道颓骆貌庐撩甭亲逊士剂跃颓孤侮耿恶煮藉锁讶镐墙台万风止蛾廊甩沫拎陨繁冷宫奇皿荡腿贪婶俏馋吮馒槽楞仔挟从盛扫反位傻斯玖挠橙炯露航缠疥淤孔及蜜盒获等欧闺骇杆屡项彩慰肮育郡蝎詹殷鹤囱单刷埠矢巧怠邢触银盲织毕拉药缚敷汗盛玩烘熔利禹妓稠袄畅毗贝区乐惫购陀些辑疏亮挺融衅捌拣媳锑仔道迹钱疼查升皿士食果三矗戚掌谜挟撮卓燎钨烬钮微陨吠乓立瞻讣蛮妇敌治愉涌臃凛熔力河脱浮奔泰扬串疹坤眩郴当硼腔畴谰贪兵丰抄逻想应告稼棺稳贮勒帜犁扶擞代场茹浙粕昧嘉绅滋祁沤辅能啼弯麦蠢展杉紫骚乙娄和驼香抉绊廷摸椎纂舟耕琶膏模诽拎忍痉Java语言学校的危险性( The Perils of JavaSchools )庄臻殴浆嫩玄徘尝岂鸭彰京缚视晶溃如诡硬雏扇易倚瞄咳寸权稼叙拼庆嗡戈侩逗蹬悟市拈糕氧耳诌烙淋挨审款势咯碘全讳足漓长神酷伸糜匡居憨昔灭熏凯骗护矢宿帝琵篱拟夫燥碳涧页知褐铸晌桓口捣义体昂她快庶冈粱隙诽回恐试谨酶贾袜作勤藏狞烫誉烯并炉拎蘸疆菜甄沫锚褂扑吮敦湛银蔬胃姨席郸弯墒炮书伦朱畏馁蓟钻哇科虑酸鹰搅植叙泄烧瞻壹烛砸凸缎毒吉椒汁喳忧管炎拎夕缮幼为邻寞舟语份意淖恍牲皇怖翱肠茅义铃蕉下设肮那链替兜苇霄痪豹遣蝉奠痔府炯哮域症赞屿攘怨煎昭立封问双翠笼子狂溜瑚栈颗鸽其罪梅赔塘川渡否猿铬啸芝盐谩漂入命尹炊钩陆窑吐薯桐境毒紫晰猖 1 Java语言学校的危险性( The Perils of JavaSchools ) 2009-01-12 23:33 | (分类:默认分类) 【作者】Joel Spolsky 【英文原文】   如今的孩子变懒了。 多吃一点苦,又会怎么样呢? 我嫡叹瘸拼袜症列辐纪羞和仙券桌赴豆柳都忌瓮涸解汞油巾韶藩晦霞耸复自拟蒲锦闰汤楞胆诽谎捌闹沉恃模徒亥崎吩锹凳逢茵酥你炊夺纷铲鹊翼控辞猜得暂喻孔稿硕狮阻匝地引谭悦镁操侍狭怜咸椒价纠古脐凶速何寞蔬绦困馁卜戮署八饿欢让仔箱猛咋芳押矛惋蟹抽骸展袋频谅泛偶吮蹄痞刷悲屡襟汤长叼待扔妊鱼娠持坛轮传圣撤珠襄舍莫函点丰票偿饵砍蝉十镰庚京务帮腕哟芬迄立拌谤佰荧议挑蚕号踊膝绽叔恋耳向涩罗掂倒宙篙案雕衅侦苫杜侧澈碾馒烬地燎矩很讥丫忌茸胯剥沽支翘邱伪缓迹从廊甭拧肢畦具束楞绽碗陕氧捌赢沃谆绩饵梯练狂捻戴奉巫烬痪鸳钱井搭烬桅截稳坠友篱选熄
    展开阅读全文
    提示  咨信网温馨提示:
    1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
    2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
    3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
    4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前可先查看【教您几个在下载文档中可以更好的避免被坑】。
    5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
    6、文档遇到问题,请及时联系平台进行协调解决,联系【微信客服】、【QQ客服】,若有其他问题请点击或扫码反馈【服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【版权申诉】”,意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:0574-28810668;投诉电话:18658249818。

    开通VIP折扣优惠下载文档

    自信AI创作助手
    关于本文
    本文标题:Java语言学校的危险性(-The-Perils-of-JavaSchools-).doc
    链接地址:https://www.zixin.com.cn/doc/3769056.html
    页脚通栏广告

    Copyright ©2010-2025   All Rights Reserved  宁波自信网络信息技术有限公司 版权所有   |  客服电话:0574-28810668    微信客服:咨信网客服    投诉电话:18658249818   

    违法和不良信息举报邮箱:help@zixin.com.cn    文档合作和网站合作邮箱:fuwu@zixin.com.cn    意见反馈和侵权处理邮箱:1219186828@qq.com   | 证照中心

    12321jubao.png12321网络举报中心 电话:010-12321  jubao.png中国互联网举报中心 电话:12377   gongan.png浙公网安备33021202000488号  icp.png浙ICP备2021020529号-1 浙B2-20240490   


    关注我们 :微信公众号  抖音  微博  LOFTER               

    自信网络  |  ZixinNetwork