學習好一門編程語言要關注哪些地方?

问题 by MexiQQ

如題所示,咋樣才算是學習好了一門編程語言?就比如拿 swift 來說吧


我的看法

标题和内容是两个问题啊喂……

掌握(实用的)编程语言往往分为两大块,语言本身和周边类库/框架,这两块相辅相成缺一不可

就语言本身来说,最重要的是理解这门语言的抽象机制/编程范式:早期的语言可能相对单纯,纯过程式,纯面向对象,而多数现代通用语言往往是多范式的,往往即支持面向对象又支持面向过程,还有或多或少的函数式,这种混合的比例和风格决定了整门语言的风格。有的语言会有一些“核心概念”,拿掉以后会直接洞穿整个根基的重要概念/机制(比如JS的原型,Java的接口,C的指针),那么抓住这些核心概念突破是个好主意;而另一些语言可能没有这样明显的核心,这类语言往往混合多种其他语言的特色,那么可以通过他借鉴了哪些特性,做了哪些调整,又没有借鉴哪些特性来入手。重要的是“味道”,写Java就要有Java味道(而不是试图用Java实现一个动态语言的子集),写JS就要有JS的味道(而不是试图搞接口,封装之类)。而有一些味道是所有语言共通追求的比如可读可维护(恕我排除了brainfuck……),这也可以成为突破口(比如这门语言的哪些特性增强了可读性?)

另外一块就是周边类库包括工具集了,我经常用学英文打比方,前面那块可能对应语法,而类库就相当于词汇了,这门语言的主要应用场景在哪里,在这些场景下有哪些内置或开源的类库可以用,不同类库之间的优缺点如何,怎么选择合适的类库,怎么让几个不同的类库在一起融洽地工作。什么样的代码适合抽离成类库,自己写类库的时候要注意什么。这门语言有哪些常见的辅助工具。


我觉得学好一门语言的主要标志就是它从你的思考中消失了,你发现你考虑如何写代码的时候的思维过程和这门具体的语言没有关系,“怎么用XX实现YY”之类的问题从来没有出现,更没有打断你的思路


如何将bootstrap的默认字体改为微软雅黑?

问题 by zengdamo

如题,我正在用joomla搭建网站,引用了bootstrap作为css样式。 但是目前默认的字体是宋体,这是不能忍受的。 我在网上找到了如下的解决办法 :http://www.imooc.com/wenda/detail/214057 或者 http://www.igooda.cn/jzjl/20130914360.html

但是照做之后没有改变,网站的字体还是宋体。 请问有什么办法能将默认字体改为微软雅黑吗?


我的看法

直接改就行 https://github.com/twbs/bootstrap/blob/v3.3.1/less/variables.less#L45

有时候我真觉得bootstrap最大的败笔就是直接提供css下载


phper 进阶困惑

问题 by 葡了个萄

经朋友推荐来到SF 感觉很不错… 回到正题,作为一名phper快一年的时间,这是指开发时间不包括自学时间.. 但是慢慢的发现自己处于一个瓶颈中无法走出,提高很慢… 自己目前也能独立使用各种框架进行项目的开发,但这些好像都是属于PHP初级知识范围内的吧??(自己划分的).对于其他的知识 譬如 PHP的cli模式 线程问题.还有一些其他的PHP知识想去深入的了解自己也gg过很多资料,但是还无从下手的感觉,希望SF的大大能够给予解惑 万分感谢
PS 本人非计算机专业 PHP是大学偶然中接触之后有兴趣开始学习的..求各位大大给予建议和帮助.


我的看法

我觉得这是典型的舒适区问题……你能很好的满足工作需求了,更牛逼的cli,线程,zend之类的工作上项目上用不到(多数项目确实用不到),没有需求/老板之类的外界来push你,于是你感觉很难提高

我的建议有三条,我都各自用过这些方法来冲出舒适区,仅供参考

NightJob

不知道你有没读过《黑客与画家》,这里说的NightJob就是你在工作之余,下班,周末来作的项目。无需考虑盈利,只需要做你最想做的事情,你自己是产品经理负责规划,自己是老板负责挤出工作之余的时间,自己是开发负责找最cool的技术来实现。

我个人的NightJob有很多很多,绝大多数最后都是0用户,自己写不下去了,但每一次从发现灵感,尝试去做,最后做了个半成品,渐渐遇到困难,克服了一些困难的过程都对自己的成长有很大帮助。每次反思“啊那个项目怎么最后就做不下去了”也都很有收获。

OverJob

顺势给第二条建议起了个这么个名字,就是工作之余,想想有啥可以额外做的小工具,mini项目,做出来可以略微提高一点工作效率的。比如我做的事情是

我司内部有一个MySQL缓存中间件,负责在web机器和DB之间做cache,一直没有图形界面的,我花了一些时间(嗯,包括一次周五额外加班通宵),日了一个网页版的图形界面出来,开发的时候不需要搞那些命令,直接开网页,就像PMA那样就可以控制里面的内容了

这样的事情和老板说,他肯定不会批时间给你做,但实际上做出来以后确实是对开发效率有一定提升的。和NightJob一样,因为是你主动自发做的,所以你可以尽情发挥,用擦上边的各种你想熟悉的技术。比起NightJob来说虽然可能选题范围稍微窄一些,事情本身的有趣程度也略逊,但好在做出来以后可以shock到你的老板,可以让你的同事对你刮目相看。

成为水泥

最后,这条建议就是完全关于正经工作的。既然你现在感觉有余力,可以比较好的完成你的份内工作,可以把你的眼光投向四周:你的同事有什么工作是摆不平的,或者做的不够好的?如果这件事你能做的很好,那么找机会花时间去教他,提高他的水平。如果这件事你也不那么擅长,那就去学,变得擅长,可以考虑和他聊聊然后和你的老板聊聊,告诉他们:这事儿我比较能干,把这份事情搞过来自己做,把自己做惯的“简单”一些的任务丢掉一部分(以夯实你学习的成果)

水泥的意思就是首先能填充到缝隙之中,还能慢慢变硬,让大楼让整个团队坚硬无比,也让自己能适应任何需求。

后者对自己的提升比较明显:你丢掉了一些做惯的不有趣的事儿,拿到了新的有挑战的事儿,学到了新的技能,但其实我更喜欢前者,也就是提高同事的水平的机会。这不仅能收获他的好感度,老板的好感度,还能让你自己的基础更扎实(别人学习过程中提出的问题很多时候能正中自己的软肋),一石二鸟,一般人我不告诉他的。


这是我在 SegmentFault 上的问题回答选编,遵循CC BY-SA 3.0 CN 分享

题图:万智【丰足成长】

©mcfog All rights reserved.