还记得你学习的第一门编程语言是什么吗?
就从 11 级软件工程出身的笔者而言,《Java 程序设计》是大学课程中必学科目,且学分相比其他课程都要高出不少。
不过,近几年随着人工智能的崛起,各大初高中、甚至是幼儿园都在将 AI 教学列入基本教学范畴。这不前几日,由中国科学院自动化所、Google 及其他相关高校的 AI 专家专为幼儿园学生设计的 AI 教材也被曝光。
随之而来的是,作为 AI 领域的首选编程语言 Python 也水涨船高,甚至不少高校将其取代了 Java 的基本教学任务。对于这种现状,本文作者不禁提出疑问,如今倘若仍将 Java 作为学习编程的入门课程教给学生究竟对还是不对?如果不对,在学习编程时又该学什么呢?Python 吗?
Java 依然是最流行的编程语言,但很少有人认为它是最酷的编程语言。一些人甚至认为,Java 已进入垂暮之年,因此许多从事教育的人都不愿意教 Java。
于是问题来了:学校和大学是否依然应该教学生 Java 编程?如果不应该,那么教什么语言最好?
在我上大学的时代——其实就是十年前,Java 还是计算机科学的入门课程中的必学语言。如果你想学其他语言,比如 C、Python、PHP,你就得专门选那个语言的课程,或者选相关的应用。
但是现在,Java 不再受大学的青睐。根据国际计算机协会(ACM)的研究发现,截至 2014 年,Python 已经取代 Java 成了主流大学计算机入门课程必学的语言。
但这个研究并不全面,因为它只覆盖了最主要的美国大学,而且它代表的只是几年前的一个时间点而已。但是,我依然强烈地感觉到,如果现在对计算机科学的入门课程使用的计算机语言做一次全面调查,那么很可能会发现 Java 并不是最受欢迎的语言。
我敢肯定许多学院依然在教 Java,但我也怀疑大多数已经把入门课程改成了其他语言(很可能是 Python)。甚至高中的计算机教学也有同样的现象。
Java 的衰退是好事还是坏事?当然,答案取决于你问的人是谁。但是一般而言,有几点很好的理由支持我们应当在计算机学习的过程中尽早改变教授编程语言的方式。
Java 太冗长。Java 程序员自己都承认,Java 是个极其冗长的语言,比大多数语言都要冗长,完成非常简单的任务都要写大量代码。也许对于能快速写代码的专业程序员来说无所谓吧。
但是,对于学习编程的学生来说,他会愿意写三四行代码只为了在控制台输出一行字符串吗?其他语言(比如 Python)只需要一行代码:
echo 'my string';
可学习性的因素。你也许认为,Java 是使用最广泛的语言,所以每个人都应该学习它。毕竟,许多专业的程序员每天都在使用 Java。许多重要的应用程序也是用 Java 写的,而且,就算现在所有人都不再写 Java,未来几十年中我们依然需要维护旧的 Java 代码。
但是,仅凭最流行的企业语言以及依然会广泛流行几十年这点,并不能说明我们应当总是让学生首先学习 Java。如果你是新入学的计算机科学的学生,希望用简单的办法探索应用程序设计和开发的精髓,那么 Java 并不是好的起点。
Java 是编译语言。如果你是 DevOps 工程师,在 Jenkins 流水线中构建 Java 应用程序,那这是件好事。但如果你只想学习编程,那尝试之前需要先编译就不太理想了。最好还是使用一门脚本语言。
如果职业需要,你可以稍后再学习构建过程和发布的流水线。而且你有可能根本不需要。并不是每个选了计算机入门课程的人都会成为专业的开发者并且编译代码。
有许多 Java 的替代品。你经常听到的学习 Java 的理由之一就是“它是面向对象的!”没错,Java 是面向对象编程(OOP)的标志性语言。但许多其他语言也可以使用 OOP。
而且,教 OOP 的原理并不需要特定的语言。OOP 只是一种概念,是一种结构性的策略,而不是语言的特性。除此之外,微服务的趋势已经让 OOP 变得不再那么重要了。就像微服务部署削弱了单一架构一样,也许以后根本就不再需要 OOP 了。
Java Development Kit(JDK)没有统一的标准。Oracle JDK、OpenJDK 和许多其他厂商的 JDK 平台都不一样,这可能会造成许多困惑。不同 JDK 之间的口味不同,意味着你在一个平台上的代码可能无法在另一个平台上正确工作,这会让初次学习编程的学生感到沮丧。
当然,你可以通过要求所有学生使用同一个 JDK 来避免这个问题。但为什么不干脆避免这个问题本身呢?许多其他语言都只有一个实现标准,而且通常是开源的。
但这并不是说 Java 不适合教学——它依然有卖点。Java 是跨平台的。它有健康的生态系统和开发工具,包括 Eclipse,能让许多新手程序员的生活变得更加容易。Java 还有易于使用的文档和社区支持,因为太多人都在使用 Java。所以,教 Java 究竟有没有错?这个问题很难回答。但是现在,Java 并不是向学生教授第一门编程语言的最佳选择。在我看来,Python 和 C++ 是更好的选择。
对此,你怎么看,欢迎下方留言分享你的看法。
原文:
https://www.theserverside.com/opinion/Is-it-a-mistake-to-teach-Java-as-a-first-programming-language作者:Chris Tozzi
译者:弯月,责编:屠敏
“征稿啦”
CSDN 公众号秉持着「与千万技术人共成长」理念,不仅以「极客头条」、「畅言」栏目在第一时间以技术人的独特视角描述技术人关心的行业焦点事件,更有「技术头条」专栏,深度解读行业内的热门技术与场景应用,让所有的开发者紧跟技术潮流,保持警醒的技术嗅觉,对行业趋势、技术有更为全面的认知。
如果你有优质的文章,或是行业热点事件、技术趋势的真知灼见,或是深度的应用实践、场景方案等的新见解,欢迎联系 CSDN 投稿,联系方式:微信(guorui_1118,请备注投稿+姓名+公司职位),邮箱(guorui@csdn.net)。