程序员的基本修养

程序员的基本修养

骆驼拼写法&匈牙利拼写法

骆驼拼写法

在英语中,依靠单词的大小写拼写复合词的做法,叫做"骆驼拼写法"(CamelCase)。比如,backColor这个复合词,color的第一个字母采用大写。

这种拼写法在正规的英语中是不允许的,但是在编程语言和商业活动中却大量使用。比如,sony公司的畅销游戏机PlayStation,play和station两个词的词首字母都是大写的。

它之所以被叫做"骆驼拼写法",是因为大小写的区分使得复合词呈现"块状"(bump),看上去就像骆驼的驼峰(hump)。

"骆驼拼写法"又分为两种。第一个词的首字母小写,后面每个词的首字母大写,叫做"小骆驼拼写法"(lowerCamelCase);第一个词的首字母,以及后面每个词的首字母都大写,叫做"大骆驼拼写法"(UpperCamelCase),又称"帕斯卡拼写法"(PascalCase)。

在历史上,"骆驼拼写法"早就存在。苏格兰人的姓名中的Mac前缀就是一例,比如著名歌手Paul MacCartney的名字中,M和C都是大写的,如果将C小写就是错误的。另一个例子是,著名化学品公司杜邦公司的名字DuPont。

但是,这种拼写法真正流行,还是在80年代以后,那时正是计算机语言开始兴起的时候。许多著名的计算机语言依靠单词不同的大小写来区分变量。

匈牙利拼写法

在计算机语言中,还有一种"匈牙利拼写法"(Hungarian Type Notation),变量中每个单词的首字母都大写,然后变量名的最前面再加一个小写字母,表示这个单词的数据类型。比如,iMyTestValue这个变量名,就表示它是一个整数变量(integer)。据说,微软公司最喜欢使用"匈牙利拼写法"。

 骆驼拼写法(CamelCase)

作者: 阮一峰 日期: 2007年6月12日

Google评分卡

Google的SRE的自我评分卡:

0 – 对于相关的技术领域还不熟悉

1 – 可以读懂这个领域的基础知识

2 – 可以实现一些小的改动,清楚基本的原理,并能够在简单的指导下自己找到更多的细节。

3 – 基本精通这个技术领域,完全不需要别人的帮助

4 – 对这个技术领域非常的熟悉和舒适,可以应对和完成所有的日常工作。

  • 对于软件领域 – 有能力开发中等规模的程序,能够熟练和掌握并使用所有的语言特性,而不是需要翻书,并且能够找到所有的冷知识。

  • 对于系统领域 – 掌握网络和系统管理的很多基础知识,并能够掌握一些内核知识以运维一个小型的网络系统,包括恢复、调试和能解决一些不常见的故障。

5 – 对于该技术领域有非常底层的了解和深入的技能。

6 – 能够从零开发大规模的程序和系统,掌握底层和内在原理,能够设计和部署大规模的分布式系统架构

7 – 理解并能利用高级技术,以及相关的内在原理,并可以从根本上自动化大量的系统管理和运维工作。

8 – 对于一些边角和晦涩的技术、协议和系统工作原理有很深入的理解和经验。能够设计,部署并负责非常关键以及规模很大的基础设施,并能够构建相应的自动化设施

9 – 能够在该技术领域出一本经典的书。并和标准委员会的人一起工作制定相关的技术标准和方法。

10 – 在该领域写过一本书,被业内尊为专家,并是该技术的发明人。

SRE需要自评如下这些技术或技能。

– TCP/IP Networking (OSI stack, DNS etc)

– Unix/Linux internals

– Unix/Linux Systems administration

– Algorithms and Data Structures

– C/C++

– Python

– Java

– Perl

– Go

– Shell Scripting (sh, Bash, ksh, csh)

– SQL and/or Database Admin

– Scripting language of your choice (not already mentioned)

– People Management

– Project Management

这个评分卡是面试Google前需要候选人对自己的各种技术进行自评,也算是一种技术人员的等级的度量尺,其把技术的能分成11个等级,我用颜色把其它成四大层级,希望这个评份卡能够给你一个能力提升的参考标准。

程序员如何把控自己的职业 | 酷 壳 - CoolShell

学习效率

img

谈到学习效率,就需要拿出这张学习金字塔的图来了。从图可以看到学习方法分布两层,一种是被动学习,也是浅度学习,听讲,阅读,视听,演示都是在被动学习,而与人讨论,自己动手实践,教授给别人是主动学习。主动学习我们称之为深度学习,如果你不能深度学习,你就不能真正学到东西。这也是你会经常有“学那么多干什么,不用就忘了”,这就是浅度学习的症状了。

下面,我给出一些我自己觉得不错的学习经验:

1、挑选一手知识和信息源。对于学习方法:第一我们一定要到知识源去挑选知识,知识信息源非常关键,二手信息丢失太大了,谭浩强写的书就丢失太多信息了。目前计算机一手知识基本都是国外的,所以英文非常重要。我鼓励大家一定读第一手的资料。如果你英语有问题,至少要看翻译过来,最好是原汁原味翻译的,不要我理解了给你讲那种,那种也是被别人嚼一遍再讲给你你没有体会,是别人带着你,别人的体会会影响你,也许你的体会会比他更好,因为是你自己总结出来的东西,所以知识源很重要。

2、注意原理和基础**第二要注重基础原理**。虽然可以忘记这个技术,但是原理记在心里,我可以徒手实现出来,而且通过原理可以更快学习其他类似的技术。所以原理很重要!当你学会C、C++要学Java和GO都很快。

3、使用知识图谱**一定要学会使用知识图,把知识结构化。从一个技术关键点开始不断地关联和细化下去,比如:关于TCP协议,首先第一个要记住状态图,怎么建立连接,怎么断连接,状态怎么变迁。TCP没有连接,是靠状态维护连接的。其次,要了解TCP怎么保证可靠性,就是丢包以后怎么重传,重传有哪些技术点。然后,重传会让你联想到拥塞控制,拥塞控制到滑动窗口……。这基本就是TCP的所有东西了,找到关键点,然后顺着这个脉络一点点往下想,通过知识图关联就可以进行顺藤摸瓜。我们不需要记所有知识,那些手册的知识不需要记,你知道在哪里能找到就可以了**。你脑子里面要有地图,学一个东西就跟在城市生活一样,闭上眼睛就知道地图,A点到B点怎么去大概方向要知道。我在北京我去广州,广州在南边,我大概坐飞机还是火车要心里有数。。

4、学会举一反三。就是用不同方法学一个东西,比如说学TCP协议,看书是一种方法,编程是另外一种方法,还有用做Debug去看的,用不同方法学一个东西会让你更加熟悉,你学一个知识的同时把周边也学了。比如说学前端能不能把HTTP学一下,比如说长连接、短连接,包括hp1、hp2有一些不一样的东西。

5、总结和归纳。只有学会总结和归纳,才能形成自己的思维框架、自己的套路、自己的方法论,以后学这个东西应该怎么学。就像学一门新的语言,不管GO语言,还是Rust语言,第一件事情就是了解内存是怎么管理的,数据类型什么样,第二是泛型怎么搞,第三是并发怎么弄。还有一些抽象怎么弄,比如说怎么解耦,怎么实现多态?套路这种东西只有学的多了以后才能形成套路,如果你只学会一门语言不会有套路,你要每年学门语言,不用学多精,你思考这个语言有什么不一样,为什么这个这种有玩法,那个有那种玩法,这些东西思考多了套路方法论就出来了。比如说Windows和Linux有什么不同,Linux和Unix又有什么不同?只有总结自己的框架、套路和方法,这些才永远不会被淘汰。

6、实践和坚持。剩下就是多做多练,多坚持,只有实践才会有经验,只有锻炼了才能够把自己的脂肪变没,所以,要把知识变成技能必须练,就像小学生学会加减乘除,还是要演练,必须多做题,题目做得多了,自然掌握得好。要挑选好的知识源,注重原理技术,有一些原理的基础的书太枯燥,但是我告诉你学习这些基础太值得投入时间,搬砖赚几十元不值得,因为赚的是辛苦钱,老了就赚不了,必须要赚更有能力的钱,这是学习投资。

 

费曼学习法

img

 

posted @ 2022-03-24 17:18  Leventseleveil  阅读(39)  评论(0编辑  收藏  举报