我一一作答吧。但还是要说明一下,学习编程切忌漫无目的铺开式学习,一定要有目标,比如做个计算器也算不错的小目标,想做 APP 所以学 Java、Swift 也是不错的目标。
一 · 编程语言及其主要用途
常见的是 C Family (C系列语言),比如:C、Cpp(C++)、C Sharp(C#)、Java、Python、R、JavaScript、Objective-C、Swift、Go、Kotlin 等等。然后有很多脚本语言,Python 也在其内,比如:Ruby、Perl 等。
光说名字意义不大,所以举几个例子。
C 常用于单片机开发和一些接底层硬件的操作使用;
C++ 是 C 的超集,因为直接支持了面向对象所以更多用于游戏、图像开发方面;
C# 是微软为了把 Java 人才引入 Windows 平台设计的语言,和 Java 语法几乎一致,目前多用于服务器后端开发和 Unity 3D 的游戏开发,也有人会用这个做很多 windows 平台下的软件插件甚至常说的软件外挂(外挂其实严格说就是插件,但大陆地区已经有更深层的意义了,所以两者并列举例出来);
Java 是目前最流行的服务器后端开发语言和 Android 开发语言,因为有大量框架和工具包的支持,Java 语言的运行速度已经不能阻挡 Java 成为服务器开发的首选语言。至于是什么服务器后端开发,题主学了 JavaEE 自然便知,通俗举例来说可以 yy 一下:我写了这篇答案,答案存在哪里呢?肯定是在知乎那边!至于怎么存、怎么取,都是后端开发需要设计的问题了。Java 也曾一度是 Android 的首选语言(虽然目前 Kotlin 的影响很多人转战 Kotlin 去了),负责 Android 顶层的 APP 层开发。
Python 是目前机器学习最流行的语言,也可以做服务器开发,有堪比 Java Spring 框架的 Django 作为支持。更多的人会使用 Python 作为机器学习、深度学习的首选语言,因为 Python 语法的简洁和类似数学式表达的规范,当然还是因为包多,很多学者科学家都会使用 Python 做科学研究。
R 语言作用类似 Python,常用于工程方面。还有一门语言是 Matlab,其实称之为语言是不恰当的,因为这是一个软件,脱离了软件就无法生存,远不是编译器那么简单的结构了。MatLab 汇集了太多的工具,便于科学从业人员快速分析数据,写出优良的程序,这种程序语言通常也称之为 Matlab;
JavaScript 是前端开发首选语言,在使用 HTML + CSS 模式绘制出页面图像后,通常都会使用 JS (JavaScript)来写交互、动画、请求、视图内容更新这些操作,这门语言是函数式也是面向对象的语言,灵活度极高,但有了 C Family 任何一门语言的基础就很容易学;
Objective-C 是苹果(Apple.Inc)开发的一门为 mac 和 iPhone 设备开发程序的语言,和 C++ 类似,也是 C 的超集,也是面向对象。但由于其太过于面向对象了(基于消息的传递数据机制)导致很不 C Family,所以对 C 系列人员上手难度偏大,比较冷门。但后来 iPhone 的崛起,导致该语言又一度热议起来;
Swift 是苹果最新发明的一门函数式编程语言,和 OC(Objective-C)的目的一样,为苹果设备而生,但苹果也提倡用该语言做工程方面的扩展,比如苹果会在宣传的时候拿它和 Python 对比。为了兼容 OC 的所有工具包,避免该语言的冷门,创造了 bridge 作为两个语言直接的桥梁,解决了语言兼容问题;
Go 语言是 Google 开发的一门函数式语言,特点是能解决大规模的高并发问题,天然支持多线程使得该语言一出来就广受关注。目前多用于机器学习和一些 Google 自己产品的开发以及后端服务器开发;
Kotlin 是大家常用的 IDEA 开发工具的开发商 Jetbrains 发明的函数式语言,这门语言是基于 JVM 进行设计的,比较完美地兼容了 Java 语言,所以前后端开发都可以使用该语言替代 Java,不确切统计是可以用比 Java 少一半的代码量完成同样的功能并拥有同样的运行效率。类似的 JVM 语言也有 Scale,但比较元老了,兼容力度不大所以也开始广受诟病;
Ruby 和 Perl 这些是典型的脚本语言,Ruby 多用于各个语言的粘合剂,Perl 是 Linux 下最常用的脚本语言,文本处理能力极强。
二 · 如何自学
这个问题其实答案很多,就像问一个人「如何才能提高分数」一样,是个「上帝问题」。我来简单解释一下什么是「上帝问题」:一个问题条件不充分,导致问题答案变数太大甚至可以出现毫无任何限制的答案,这类答案往往无意义或者意义不大,称之为「上帝问题」。
所以这个问题是没有好的答案的。
于是我便假设题主问题是:「一个时间充足、智力正常、周围电子设备允许、自律能力可以、、、等等的男生该如何自学达到学会某一门语言的目标?」
这样的话我们探讨起来可能会容易很多。
来个老套路吧,其实真的自律可以什么套路都行,自律不行,说什么都是废话。以下不是捷径,是远方:
通过视频入门(视频拥有大量的声音、图像、文字以及讲师不经意的犯错引发的笑点),视频和书不一样,视频是容纳了很多错误的,这些错误都是编程中可能会犯的,比如讲师少打了一个分号,变量名字写错了等等等等,这些在书本里面是看不到的,视频带给你的信息量远大于书本。
通过书本扎实思考,书本还是得看,必须得看,书是代表系统的、完备的,书总是一章一节地讲,不会错一个字地讲,很多东西就得从书里找,视频老师可能会讲漏,但书漏了第二版本还可以修订。至于怎么选好书,三步筛选:是否有第二版(或者第三四五... 版本)、豆瓣评价、实地摸(怎么说都不如自己去摸一摸,试试就知道适不适合自己了)
以一本书为主,其余书为辅,不出数月即可见效。
然后练习项目,此时你已经有了一定的基础了,而且在学习过程中肯定也是不断地码代码练习小项目小题目。此时你需要更多的时间去做更大的项目,通常很多杂牌书后面都会附一两个项目实战,可以试试手。项目必须练,这会让你成为和以前不同的两个人。
三 · 入门选择哪门语言最好
我个人一开始的话就是学习Java,Java相对于C语言来说更加的简单,包含的内容更加丰富,而且Java的就业方向也较广。
网友评论