高考结束,很多人都开始着手学习编程,不过编程语言各式各样,不少新手都表示不知道该从何学起。在这个AI崛起的时代,很多时候学习编程语言都是学习它背后的设计思想,而非完全理解所有函数表达的意思,因为这个世界上的库众多,如果每一个库都去记忆其调用格式,那么人的记忆力很显然是跟不上的。当然AI编程只是提升效率的工具,不能对它持有偏见或过度依赖于它。就像汇编语言是二进制的简化使用,高级语言是汇编语言的简化使用,集成开发环境是高级语言的简化工具,所谓AI也只是高级语言的简化工具罢了。
一、 选择第一个编程语言大部分人可能会认为Python是最好入门的语言,但是实际上如果是为了掌握语言的完整范式,第一个学习的语言最好是C++。Python确实是业余学习者理想的学习语言,但是它的弱类型机制会让入门其他语言变得稍微有些困难。
作为偏底层的编程语言,C++可以完整学习各种内存管理和类型分配的概念,为其他语言的学习打好基础。同时他又不像Rust那样拥有过多的抽象概念,属于是万金油了。
入门学习的话,个人建议在Github上面寻找成熟的教程。这边推荐一个:https://github.com/AnkerLeng/Cpp-0-1-Resource
二、根据目标方向去选择合适的语言C++学通了之后,一般来讲其他语言的语法都可以进行迁移。很多时候需要在工作或者实际项目中选择最合适的语言来进行接触与学习。
如果你要接触云原生编程,那么可以学习Golang。云原生就是指原生就为云环境开发的服务。在Golang的官网上可以看到他的详细入门指南;
如果你要接触底层编程,那么c和c++还有汇编是必须的。如果要保证极致的内存安全,你可能还需要学习rust。在rust官网上也可以看到详细入门指南;
如果你要接触游戏开发,使用游戏引擎的话,很多时候需要学习的是脚本语言,比如C#和Lua;
如果你要接触企业级应用开发,那么可以学习Java;
如果要接触前端网页开发,需要学习HTML和css还有js这三大金刚。可以在mdn上面获取HTML的入门指南:https://developer.mozilla.org/zh-CN/docs/Learn_web_development/Core/Structuring_content/Basic_HTML_syntax;
如果要接触移动端开发,需要学习kotlin(Android)、Swift(iOS)。跨平台开发可能要学习react(实际上是前端)或Dart等
当然世界上的语言千奇百怪,有的时候很多语言它同时兼备多种语言的功能,所以要按项目的整体情况来进行选择。语言学习中迁移能力是关键。
三、什么才叫做掌握了一款编程语言?以下为个人角度分析。
一款编程语言拥有无数个库。以目前最大的包管理生态npm来讲,它的库的总数已经超过300万个。将学习的语言的所有库的语法调用全部记下来是不现实的。现如今没有多少程序员可以离开在线文档与集成开发环境编程,在线文档可以提供详尽的调用示例和接口定义,而集成开发环境可以提供高效的代码高亮以及错误检测等。不要试图离开这些来编写你的程序,很多时候没苦硬吃是愚蠢的,除非拥有极其特殊的环境。
同时现在AI时代崛起,使用一个技术栈的入门门槛再度降低。因此很多时候在我看来,入门一个语言的标准是你成功的掌握了它的语法基础、架构范式以及代码组织结构。
掌握一个常用的库并不是掌握一个语言所必须的,因为AI可以帮助完成所有有关于查询这个库的行动,人所做的是架构设计及错误排除。
后谈:语言学习的精髓是什么?真正意义上讲,迁移能力和架构规划能力都是可以练出来的,而语言学习需要一个最基础的特质,就是向内探索的好奇心。对每个语言的底层规范进行探索,可以让你在这个语言的基础优化中取得更强的成绩。编程本质上是创造力与钻研力铸就的工作,如果仅仅只有工程思维,或者只有科学思维,都是不够的。