84669인 학습
152542인 학습
20005인 학습
5487인 학습
7821인 학습
359900인 학습
3350인 학습
180660인 학습
48569인 학습
18603인 학습
40936인 학습
1549인 학습
1183인 학습
32909인 학습
如題所示,咋樣才算是學習好了一門編程語言?就比如拿 swift 來說吧
标题和内容是两个问题啊喂……
掌握(实用的)编程语言往往分为两大块,语言本身和周边类库/框架,这两块相辅相成缺一不可
就语言本身来说,最重要的是理解这门语言的抽象机制/编程范式:早期的语言可能相对单纯,纯过程式,纯面向对象,而多数现代通用语言往往是多范式的,往往即支持面向对象又支持面向过程,还有或多或少的函数式,这种混合的比例和风格决定了整门语言的风格。有的语言会有一些“核心概念”,拿掉以后会直接洞穿整个根基的重要概念/机制(比如JS的原型,Java的接口,C的指针),那么抓住这些核心概念突破是个好主意;而另一些语言可能没有这样明显的核心,这类语言往往混合多种其他语言的特色,那么可以通过他借鉴了哪些特性,做了哪些调整,又没有借鉴哪些特性来入手。重要的是“味道”,写Java就要有Java味道(而不是试图用Java实现一个动态语言的子集),写JS就要有JS的味道(而不是试图搞接口,封装之类)。而有一些味道是所有语言共通追求的比如可读可维护(恕我排除了brainfuck……),这也可以成为突破口(比如这门语言的哪些特性增强了可读性?)
另外一块就是周边类库包括工具集了,我经常用学英文打比方,前面那块可能对应语法,而类库就相当于词汇了,这门语言的主要应用场景在哪里,在这些场景下有哪些内置或开源的类库可以用,不同类库之间的优缺点如何,怎么选择合适的类库,怎么让几个不同的类库在一起融洽地工作。什么样的代码适合抽离成类库,自己写类库的时候要注意什么。这门语言有哪些常见的辅助工具。
我觉得学好一门语言的主要标志就是它从你的思考中消失了,你发现你考虑如何写代码的时候的思维过程和这门具体的语言没有关系,“怎么用XX实现YY”之类的问题从来没有出现,更没有打断你的思路
掌握这些:
语言的背景和理念
基本语法和概念 从 hello world 开始,到小作品,小应用。
应用开发框架
技巧和陷阱
语言的实现 进一步加深对语言的理解。
我觉得是这样:
想想你学它要干什么 想想怎样用它来做 学语法 了解API 做你要做的事情
我觉得还是要关注一下与系统之间的关系,多了解一些系统调用
标题和内容是两个问题啊喂……
掌握(实用的)编程语言往往分为两大块,语言本身和周边类库/框架,这两块相辅相成缺一不可
就语言本身来说,最重要的是理解这门语言的抽象机制/编程范式:早期的语言可能相对单纯,纯过程式,纯面向对象,而多数现代通用语言往往是多范式的,往往即支持面向对象又支持面向过程,还有或多或少的函数式,这种混合的比例和风格决定了整门语言的风格。有的语言会有一些“核心概念”,拿掉以后会直接洞穿整个根基的重要概念/机制(比如JS的原型,Java的接口,C的指针),那么抓住这些核心概念突破是个好主意;而另一些语言可能没有这样明显的核心,这类语言往往混合多种其他语言的特色,那么可以通过他借鉴了哪些特性,做了哪些调整,又没有借鉴哪些特性来入手。重要的是“味道”,写Java就要有Java味道(而不是试图用Java实现一个动态语言的子集),写JS就要有JS的味道(而不是试图搞接口,封装之类)。而有一些味道是所有语言共通追求的比如可读可维护(恕我排除了brainfuck……),这也可以成为突破口(比如这门语言的哪些特性增强了可读性?)
另外一块就是周边类库包括工具集了,我经常用学英文打比方,前面那块可能对应语法,而类库就相当于词汇了,这门语言的主要应用场景在哪里,在这些场景下有哪些内置或开源的类库可以用,不同类库之间的优缺点如何,怎么选择合适的类库,怎么让几个不同的类库在一起融洽地工作。什么样的代码适合抽离成类库,自己写类库的时候要注意什么。这门语言有哪些常见的辅助工具。
我觉得学好一门语言的主要标志就是它从你的思考中消失了,你发现你考虑如何写代码的时候的思维过程和这门具体的语言没有关系,“怎么用XX实现YY”之类的问题从来没有出现,更没有打断你的思路
掌握这些:
语言的背景和理念
基本语法和概念
从 hello world 开始,到小作品,小应用。
应用开发框架
技巧和陷阱
语言的实现
进一步加深对语言的理解。
我觉得是这样:
想想你学它要干什么
想想怎样用它来做
学语法
了解API
做你要做的事情
我觉得还是要关注一下与系统之间的关系,多了解一些系统调用