当我闇练节制了 Logo 和小型 MicroWorlds 环境后,我就开始学习 Visual Basic 了,缘故原由很大略:我有能力学它,并且可以在 Microsoft Office 中轻松将其用作游乐场。因此某种程度上来说,Visual Basic 6 是我打仗的第一门真正的编程措辞。
早期 Web 开拓
在上世纪 90 年代末,互联网是最前沿的技能,因此 Web 开拓是每个人都想学习的东西,以是我很早就买了一本《Sierra Web Artist》来建立自己的网站。虽然我以前学过一些 HTML 3,但实际上打仗 HTML 4 后才是我第一次构建繁芜的网页。通过一个局域网派对上认识的朋友,我很早就打仗到了 CSS,JavaScript 我也很喜好,与其说它是一种措辞,不如说它为网页带来了无限可能。

跟很多同龄人一样,我花了很多韶光让我写的 JavaScript 代码在 Internet Explorer 4 和 Netscape Navigator 4 上运行。就个人偏好而言,我一贯都选择 Navigator,这大概是我坚持利用 Firefox 的缘故原由:首先在我看来,Firefox 是最好的浏览器;其次,它总会让我想起 Netscape Navigator。
Dreamweaver 是构建 Web 运用程序的首选办理方案,专业人士利用 UltraDev
做事器端利用 ASP 和 PHP
一样平常而言,你开始学习第一门编程措辞后每每会坚持很长一段韶光。当我开始编程时,统统都是全新和未知的,节制至少一门编程措辞(如 Visual Basic)会让我感到些许安慰。我在 Web 开拓中利用的第一套做事器端代码,是在 IIS 上用 VB6 和 Microsoft ASP 编写的。由于在当时这是一种昂贵的技能,以是我寻衅自学 PHP。
我自学 PHP 不仅是为了 Web 开拓,也为了我非常喜好的 SUSE Linux 7.2——大约在 2001 年,我开始深入研究 Linux 后,SUSE 成了我的日常驱动程序。有履历的人该当能知道,当你刚从 Visual Basic 天下出来的时候,学习 PHP 就相对随意马虎。虽然第二门措辞不像第一门措辞那么难学,由于你已经知道了数据类型和编程的根本知识,但它的学习曲线还是很陡峭的——尤其是,当时我只有 17 岁。
你可能会问:我之前不是提到过 JavaScript 吗?别忘了,JavaScript 早期的功能极其有限,速率慢得令人痛楚,而且只能在浏览器中运行。当时在我看来,它只是一种脚本措辞,可以让网站更具交互性或更花哨,以是那时我并没有把 JavaScript 当作一门正经的编程措辞。
在 Visual Studio 中构建 Web 运用程序、桌面和做事器端代码
教诲让我打仗到了 C、C++ 和 C#
17 岁时,我通过德国的双制度职业教诲开始了我的第一份事情。那是 2002 年,发生了两件大事:微软发布了 .NET 框架,并建议从 Visual Basic 迁移到 C#。其次,我的专业教诲课程包括 C 和 C++——不是当代的 C,而是经典的 C,没有任何字符串库和其他有用的东西。
我没有办法绕过这条学习曲线,它很陡峭,因此一开始我很讨厌 C 和 C++。.NET 框架、C#、C 和 C++ 让我觉得自己完备不懂编程,在刚开始打仗时,我以为自己就像个白痴。不过,如果你像我一样年轻,你就不会像终年夜后那样质疑自己。我刚开始学 C#、C 和 C++ 时,确实写过一些很烂的 C 代码,但也没受到什么惩罚。
Borland C++ 2.0 on DOS 让我开始打仗 C 措辞编程
让我真正喜好上 C 措辞的是 Linux。在 Windows 上利用 C 措辞觉得有些无用,由于 C# 每每是更好的选择。然而,在 Linux 上,C 和 C++ 有自己的主场。为了能够精确运用 C 和 C++ 办理任何问题,我花了 5 年多的韶光学习和运用这门措辞。
学习 C 措辞后,觉得统统都一样
当我闇练节制 C 措辞后,统统都开始变得千篇一律,紧张是由于所有的东西都是用 C 或 C++ 编写的:PHP 本身是用 C 编写的,Windows 和 Linux 系统的大部分库是用 C 编写的,.NET 框架也是用 C 编写的。
学会 C 措辞后,我很快就学会了大量编程措辞,包括 Flash 的 ActionScript、Mac 的 AppleScript 以及一些 Delphi(当时我须要掩护一个 Delphi 项目)。后来当 WAP 在诺基亚 7110 上大行其道时,我还学习了 WML 和 WMLScript。
随着第一个 Xcode 版本的到来,我开始学习 Objective C,这是第一门我在学习时觉得非常困难的措辞。诚笃说,我从未与 Objective C 成为朋友,后来当苹果发布 Swift 和 SwiftUI 时,我超级愉快,毕竟我从未理解过 Storyboard 这种 UI 开拓方法。
如今,我个人最喜好的 10 种编程措辞是 Swift、Go、C、JavaScript、C++、CMake、SQL、Java、C# 和 Scratch,个中 Scratch 非常适宜儿童来学习编程。
我认为一个有序排列的个人编程书库非常有用
我是如何学习编程措辞的?
在早期学习编程的过程中,我有过很多考试测验,但事后看来,我试错太多了。有两件事对我来说是行不通的:一是全身心扎进去,比如边走边学,二是一开始就只读理论书本。我从过去到现在都是一个自学者,对我个人来说,最好的做法是将实际运用和理论相结合。我喜好通过书本学习,由于书本可以给我供应一个构造化的学习方法,但它们无法取代实际运用。
只管我只用了 2-3 天就学会了 Go,但我还是买了两本关于这门措辞的书,这两本书帮我理解了并发性以及该措辞的基本事理和设计决策。至于 JavaScript,到目前为止我还没看过任何一本书,紧张是利用在线参考手册和网站教程——这是由于,我和 JavaScript 是一起发展的。
对付像我这样的自学者来说,动手实践和照着书本学习是节制一门措辞最快的方法。不过须要强调的是,学习的过程详细还是取决于作为软件工程师的履历。
对编程有益的知识
编程措辞只是为打算机及其操作系统构建运用程序的工具。理解打算机体系构造、打算机的事情事理、网络事情事理(紧张是 TCP/IP、IPv4、IPv6、HTTP)以及用 Wireshark 在数据包层面跟踪 HTTP 要求的能力,将有助于你理解自己在做什么。
阅读文档和参考手册也有很大帮助,我为 Linux、Windows、BSD、Macintosh System 6-9、macOS、Pocket PC、Windows Mobile、PalmOS、iOS、iPadOS、tvOS、watchOS、Android、Tizen TV、OpenWRT、Arduino、ARM Mbed 等平台写过软件,理解操作系统的事情事理,有助于你理解它们的范式和代码的实际浸染。
在 Linux 上用 C、Rust 或 Go 编写一个具有网络功能的系统守护进程,会让你对打算机和网络有更多的理解。对我来说,这些知识是我学到的最有用的东西,缘故原由很大略:如今险些所有的东西都在 Linux 或 BSD 上联网,你的 iPhone 是,你的三星电视是,你的网络路由器也是。
Arduino 对付学习与打算干系的电子学非常有用
SQL 本身便是一个奇妙的存在
SQL 则完备不同,知道如何编写嵌套 SELECT 语句并不虞味着你就理解 SQL。我学过我非常喜好的 MySQL、微软的 T-SQL 和 PL/SQL,还曾在 MySQL、MSSQL、Oracle 和大量其他数据库管理系统上为存储过程、函数、触发器和视图编写了数千行代码。
可以说,学习运用 SQL 不仅仅是将 SQL 作为一种查询措辞,它还涉及到关系数据库管理系统的精确设计和利用:例如不许可系统外的运用程序直接操作表的范例,存储过程、函数和触发器与外界隔离底层表的设计模式,以及许多与 SQL 本身并无太大关系的其他观点。我一贯认为,与其说是学习 SQL 措辞,不如说是学习关系数据库。
10 到 20 年前,如果你想找一份高薪的软件工程师事情,就必须闇练节制 SQL,并对其充满信心。后来随着许多替代方案的兴起,情形可能不再是这样了。不过,我也看到了很多人由于专注于关系数据库和 SQL,从而得到了很好的职业发展。
SQL 不仅仅涉及编程查询
我有 10 多年没有用过的编程措辞
当一个人学习那么多种编程措辞时,总有会忘却一些,这很正常。以下是我已经 10 多年来没用过的编程措辞:Objective C、Visual Basic、Delphi、Perl、ActionScript、Logo、OpenScript、WMLScript。
随着韶光的流逝,这些措辞会逐渐消逝在你的日常编程中,由于你不再须要它们了。当我 10 年没写过 Delphi 再重新打仗它时,我虽然还能记得它的很多方面,但诚笃说,觉得就像要重新学一遍。至于 WMLScript 和 ActionScript 这种已经一去不复返的措辞,我就把它们忘得一干二净了:如果我看到 WMLScript,我可能还记得它,但如果手头没有参考资料和书本,我根本就写不出来。
我不再利用的开拓环境
我日常用的驱动是 VSCode、Xcode 和 vim,个中我非常喜好 Xcode,觉得它便是我想要的编程办法。对付一个多措辞程序员来说,VSCode 在我看来便是一个邪术的存在,由于我可以有一个舒适的天下来完成我须要和想要做的大部分编程事情。其余还有一些集成开拓环境我已经不再利用,但也曾在个中度过了大半生。
Microsoft Visual Studio 6
Microsoft Visual C++
Borland C++ Builder 5
Borland C++ 2.0
Borland Delphi
ThinkC 和 MPW
CodeWarrior
Dreamweaver UltraDev
这些集成开拓环境都很有趣,我也花了很多韶光利用它们。不过,当新的编程措辞和运行时涌现时,新的工具也会随之涌现。每种工具都有适宜利用的时候,也有须要改换的时候。例如随着 Mac OSX 的到来,所有 System 9 工具都在一夜之间消亡了。
不要迷恋这些集成开拓环境,由于你永久不知道它们还能存活多久。但是,学习 vim 的根本知识永久不会错。
你说 30 种编程措辞?
文章标题提到我已经学会了 30 种措辞,而我所说的学会,是指我用它们编写了一定数量的代码,发布并支配了运用程序。
以下是这些措辞的完全列表,按字母顺序排列:ActionScript、Arduino、Assembly、Bash、C、C#、C++、CMake、COBOL、ColdFusion、Dart、Delphi、Go、Java、JavaScript、Logo、Objective-C、OpenScript、Perl、PHP、PL/SQL、PowerShell、Scratch、SQL、Swift、T-SQL、TypeScript、Visual Basic .NET、Visual Basic Classic 和 WMLScript。
可能还有一些措辞我忘却了,由于我还学过很多小脚本措辞,用了几周就忘了,以是可能不止 30 种。但是,这个数字并不主要——会多少种措辞并不主要,主要的是你能用它们来做什么。
学习编程中,一定要重视的生理成分
对付多数程序员来说,缺点和失落误这天常经历,因此我们可能常常觉得自己很笨。然而打算机天下如此广阔,你不可能无所不知。在 20 世纪 80 年代中期,那时的打算机相对大略,但纵然在那个期间,从芯片设计到运用用户界面设计,也不可能有人能全面节制。人脑根本不可能存储所有这些信息,不要对自己太苛刻。
你须要享受打算机带来的乐趣
我强烈推举《Just For Fun》这本书,它是 Linus Torvalds 的传记。除了讲述他如何创建 Linux 之外,书中还先容了他的许多个人生活经历——理解 Linus 的经历可以让你明白,你并不孤单,我们都经历过编程的起起伏伏。
对我来说,Linus 是目前天下上最顶尖的软件工程师和程序员之一,他值得我们追随并向他学习。他编写了我们这个时期最盛行、最主流的操作系统,乃至现在仍在卖力掩护它,是我想要仰望的人。
在你最喜好的领域进行编程
当打仗了许多不同的编程措辞后,你会创造自己最感兴趣的领域。对我来说,那是移动打算领域。我喜好移动运用程序、移动网站和可以装在口袋里的打算机,因此我不仅喜好为掌上电脑和安卓系统编程,也喜好为苹果生态系统编程。
我最喜好给智好手机编写量身定制的移动网络运用,但你可能不是。每个人都有不同的兴趣爱好,我个人的建议是:随着自己的愉快点走,这样纵然身处残酷的编程过程中,你也会乐在个中。
别太紧张,记得放轻松
编程措辞已有 100 多年的历史,汇编措辞更是将在 2049 年迎来它的百岁生日。在 Konrad Zuse 于 1938 年发明 Zuse Z1 之后的几十年里,打算机领域发生了许多演化。理解根本知识当然有帮助,但你不须要成为万事通,也不可能成为万事通,由于我们的大脑做不到。
我过去对自己很苛刻,认为一定要学习最热门的新事物。例如,为了能制作 Flash 运用程序,我严格哀求自己必须学会 ActionScript,但实际上我根本一点都不喜好。当年我喜好用的是 Dreamweaverf 和 Fireworks,就像本日我喜好用 VSCode、XCode、vim、Photoshop 和 Illustrator 一样。
以是我想说:去学你喜好做的事情,不要对自己太苛刻;要有条理地学习,不要急于求成。你可以逐步获取一些非常好的学习材料,比如书本和视频课程。提及来我真希望以前就有这些视频课程,由于我非常喜好躺在沙发上看电视上的编程课程。
编程该当是一件有趣的事情,如果你以为它不好玩,那就换个办法来学,可以考试测验不同的领域(如系统运用而非网络运用)或不同的问题来办理寻衅(如技能寻衅而非算法寻衅)。个人而言,相较于办理算法难题,我更喜好办理技能难题。
当然,并不是所有程序员都一样,每个人都有不同的喜好。只要记住一句话:编写你喜好的程序,去学习你喜好做的事。
原文链接:https://medium.com/@jankammerath/i-learned-30-programming-languages-in-25-years-heres-what-to-expect-08ce2ac9d80b