要做程序员需要学会什么

要做程序员需要学会什么,第1张

其实简单来说,程序员的工作就是使用编程语言,根据需求写出一个程序。

但是,在这个过程中,涉及如下几个方面:

使用的编程语言 程序员需要选择一门或者多门语言来编程,不同的语言适合编写不同的程序,目前主流编程语言包括,Java、JavaScript、Python、C++、php以及其他小语种等等,每种编程语言适合开发的程序有所不同。目前从程序应用分来,主要可以分为三类a 企业应用,主要用于解决企业业务。各种企业管理后台系统,银行系统,公安系统,图书管理系统等等。

b 互联网应用,面向互联网用户,为互联网用户提供各类服务。比如现在的京东淘宝各类电商系统等。

c 移动应用,各类在移动端使用的APP,有面向互联网用户的APP,也有面向企业内部的APP。

目前相对而言,在移动应用和互联网应用方面,资本投入比较热的风口,程序员的薪资较高。企业应用,发展了很多年,相对平稳。

2 明白需求,实现需求

需求就是编写程序的要求。一个程序要编写成什么样子,具备哪些功能,都是由需求来具体说明。程序员要需要能看懂需求文档,并且能准确地使用编程语言,根据需求中的要求来编写成程序。企业开发的项目,往往会由该程序的架构师提供一个程序框架,程序员在该框架的规范下进行编程,实现需求的功能,以确保程序的规范、可读,以及可维护性。

3 日常工作写程序

一个软件开发一般流程是产品经理根据用户需求做一个项目出来,然后UI设计师做一些设计,前端开发编写页面,后台开发编写核心编程,然后介入一些大数据和人工智能,通过测试之类上线实施,后期还有运维进行相关维护。

程序员一般大多指的是前端和后台写代码程序的开发人员,除了编写代码,可能还需要通过接口和其它系统对接,实现系统间的数据交换。像单体测试,是程序员对自己写好的程序单元进行测试,检测这个程序单元数据输入和数据输出是否符合预期等等。测试出来的问题,需要修改正确,然后再测试,直至没有问题。和同事共同开发的时候也需要联合测试,以及用户测试过后如果存在BUG继续进行修改。

众所周知,java中如果要计算一个字符串的长度,可以直接利用String的length方法。如下:

显然,这里的length方法计算的字符数,一个英文字母按一个字符计算,一个中文汉字也是按照一个字符进行计算的。

不过,如果想要获取字符串的字节数呢?String依然提供了现成的方法供我们使用,如下所示:

这里,可以看到几个注意点:

先来看第一点,也是本文主要想讨论的问题:UTF-8、GBK的区别是什么,为什么会导致最终获取的字节数不一样?

要解答上面的问题,需要先知道GBK和UTF-8分别是什么。

简单的说,GBK和UTF-8是两种字符的编码方式。那么,问题又来了,什么是字符的编码方式呢?除了GBK和UTF-8,有没有其他的编码方式呢?其中的区别又在哪里?

关于字符的编码方式,姑且可以简单的理解为,将一个字符表示成一串bit流的规则(这个说法是不太准确的,下文会有详细解释)。比如说,UTF-8就是一种非常常用的字符编码方式,“汉”字以UTF-8的规则计算后表示出来的bit流就是“11100110 10110001 10001001”。

有些时候,编码方式,还会被称为编码规则、编码方案。

实际上,从计算机不再单纯地拿来进行数字计算开始,字符的编码方式就一直在不断的演进,现在就借着这一段历史,来对包括GBK、UTF-8在内的几种常见字符编码方式进行下介绍。

计算机刚出世的时候,美国人为了交流通信方便,约定了一套字符编码方式,就是ASCII码。

ASCII全称为American Standard Code for Information Interchange,即美国信息互换标准码。

ASCII码的字符集中包含了26个英文字母、10个数字(0-9)、一些常见的符号(@、#、!),基本能够满足在英语环境下的需求。ASCII字符集里面只有128个字符,每个字符都有一个编号,也就是0-127。而当时大家已经习惯于用8个bit来表示一个字节,所以干脆取一个字节来表示一个字符。其中,最高位置为0,其他位全部用上,总共128个位置,刚好能够与ASCII字符集一一对应。

举个例子,在ASCII码中,‘A’对应的编号是65,用一个字节表示就是“01000001”。

这里对引入的两个新概念做下解释:

字符集 :字面上理解就是字符的集合。

编号字符集 :指带有数字编号的字符集合,有时候也简称为字符集。例如:[1:a, 2:b, 3:c],在此字符集中,包含三个字符:a、b、c,并且其编号分别为1,2,3。

不过,后来计算机传到了欧洲,不少欧洲国家的语言使用ASCII码无法完整地进行表示,比如德语、法语。上文可以看到,在ASCII编码中,一个ASCII字符,是用一个字节来表示的。一个字节实际上能够表示256个数字,也就至少能够表示256个字符,而ASCII字符集只有128个字符。所以这时候出现了多种基于ASCII的编码方式。大家的基本思路都是一样的:还是使用一个字节表示一个字符,0-127依然用来表示ASCII字符集(字符编号与ASCII码保持一致),128-255拿来表示自己语言中的特殊字符。

显然,这么搞出来的多个编码方式互不兼容,大家会很痛苦。所以最后出现了两套统一的编码方案,能够对欧洲各国的字符都进行支持。这两套编码方案分别是:EASCII(Extended ASCII)字符编码方案,ISO/IEC 8859字符编码方案。

这两套方案也是沿用上面的思路:0-127依然用来表示ASCII字符集(字符编号与ASCII码保持一致),128-255用来表示欧洲各国的特殊字符(这部分字符集又被称为扩展字符集)。

由于在这两种编码方案中,ASCII字符集中的字符,保留了与ASCII码相同的字符编号,所以 这两种编码方案都是对ASCII编码完美兼容的

不过,与ASCII、EASCII属于单个独立字符集不同,ISO/IEC 8859是一组字符集的统称。其下共有15个字符集,即ISO/IEC 8859-n,n=1,2,3 …… 15,16(其中12未定义,所以共15个)。

到现在为止,EASCII已经很少有人用了,ISO/IEC 8859却是被广泛使用,其中ISO/IEC 8859-1被使用的最为普遍。而ISO/IEC 8859-1又被简称为ISO 8859-1,而且它还有一个Latin-1(也写作Latin1)的简称。

终于,计算机来到了中国。如上文所述,仿照ASCII码的规则,1个字节最多也就只能表示256个字符。但是,中国汉字有几万个,常用字就有几千个,这样的话,1个字节是完全不够用的。所以,当时的全国信息技术标准化技术委员会搞了一套自己的编码方案:用两个字节表示一个字符。这就是GB系列编码。“GB”是“国标”的拼音首字母缩写,意为“国家标准”。

最早的GB编码就是GB2312,收录了6763个汉字和682个符号,基本能够满足日常需求。

GB2312规定,一个汉字的编号必须大于127,并且编号大于127的字符必须用两个字节来表示。而0-127,仍然用来表示之前的ASCII字符集,这部分字符的编号依旧与ASCII码保持一致,并且只有一个字节来表示。

所以,GB2312对ASCII码是完全兼容的。不过GB2312对ISO是不兼容的,因为它舍弃了ISO中128-255之间的字符映射。

同时,也可以认为,在GB2312中,英文字符只占一个字节,而中文字符会占两个字节。

而计算机在依照GB2312编码进行字符识别时,会先判断第一个字节的第一个bit位是否为0,如果是,则读取1个字节,进行编码解析;如果不是,则读取两个字节,进行编码解析。

此外,当时出于种种原因考虑,GB2312对ASCII码中的西文字母、数字、标点等特殊符号进行了重新编码,用两个字节来进行表示。所以,这类字符在GB2312中就有了两种编码表示,其中小于128的编码(用1个字节表示),就被称为半角字符,大于128的编码(用2个字节表示),就被称为全角字符。

到目前为止,由于当时导致全角字符出现的历史原因已经不再存在,所以只有很少的一些全角字符还在使用(比如中文的逗号,问号,感叹号,空格等),其他的许多全角字符已经很少用了。

虽然GB2312能够满足基本的日常需求,但是毕竟收录的汉字还是太少,繁体字、生僻字是不包含在GB2312字符集中的。由此,有关部门对GB2312进行了扩展,推出了GBK编码。

GBK与GB2312基本一致,都是使用两个字节来表示汉字。不过有一点不一样:在GB2312中,表示汉字的两个字节中,其首位必须都是1;而在GBK中,只要求第一个字节(高字节)的首位为1,对于第二个字节(低字节),没做要求。当然,如果首位为0,都是用来表示ASCII字符集里的内容。

GBK可以认为是对GB2312的扩展,其对GB2312是完美兼容的。所以,GBK对ASCII码也是完美兼容的。

GB18030是对GBK的进一步扩展,在扩展现有汉字的基础上,收录了数千个少数民族的字符。其由中国国家质量技术监督局于2000年3月17日推出,用以取代GBK。

GB18030同样保持向下兼容,其对GBK、GB2312、ASCII编码完美兼容。

诸如GB2312、GBK、GB18030之类的编码格式,被程序员们称为DBCS(Double Byte Charecter Set:双字节字符集)。在DBCS的标准里,英文字符用一个字节表示,并且这个字节的第一位必然为0(英文字符对应的字号小于128);中文字符用两个字节表示,第一个字节的第一位必然为1。

如上文所述,在计算机的传播途中,为了兼容各地的语言,出现了许许多多的编码方案。但是遗憾的是,这些编码方案互不兼容,直接影响到了信息的传播,这也催生了能够兼容全球各种字符的统一编码方案的出现。

历史上存在两个独立的尝试创立单一字符集的组织:

不过在1991年前后,两个项目组发现没必要存在两个不兼容的字符集,所以它们开始合并双方成果,约定使用统一的编码表。从Unicode 20开始,Unicode项目采用了与ISO 10646-1相同的字库与字码,ISO也承诺,ISO将不会替超出U+10FFFF的UCS-4编码赋值,以使得两者保持一致(UCS的概念下文会有详述,此处不必过于关注)。

目前,这两个项目组仍独立存在,并独立地发布各自的标准,不过二者约定保持双方的标准码表兼容,并共同调整任何未来的扩展。

ISO 10646标准,只是一个简单的字符集表。它定义了一些编码的别名,指定了一些与标准有关的术语,并包括了规范说明,指定了怎样使用UCS链接其他ISO标准的实现,比如ISO/IEC 6429和ISO/IEC 2022。还有一些与ISO紧密相关的,比如ISO/IEC 14651是关于UCS字符串排序的。

Unicode标准,额外定义了许多与字符有关的语义符号学内容,并详细说明了绘制某些语言(如阿拉伯语)表达形式的算法、处理双向文字(比如拉丁文和希伯来文的混合文字)的算法、排序与字符串比较所需的算法等。

在书写Unicode编码时,规定以十六进制数来进行表示,并需要加上“U+”前缀。比如“汉”字的Unicode编码为“U+6C49”。

为了能够更方便地介绍后续的内容,这里需要先解释清楚几个名词(个人认为这几个概念有助于理解后续的内容,如果不想看,可以直接跳过此节)。

编号字符集(CCS:Coded Character Set) :指带有数字编号的字符集合。上文已经介绍过了。

字符编码方式(CEF:Character Encoding Form) :将字符集的数字编号转换为字节流的规则。

还是上文中的例子,Unicode字符集中的“汉”字,在Unicode字符集中的编号是0x6C49,在UTF-8编码中,需要使用3个字节来表示,表示成二进制则是“11100110 10110001 10001001”(UTF-8的具体编码规则,下文会有详述)。

在这个例子中,Unicode就是所谓的编号字符集(CCS),UTF-8编码便是字符编码方式(CEF)。

实际上,在unicode字符集出世之前,字符集与编码方式往往是耦合在一起的,一套字符集往往也只有一套编码规则,这两个概念也没必要严格区分,人们也经常进行混用。比如ASCII码既可以认为是一套字符集,也可以认为是一种字符编码方式。

但是,Unicode字符集出现之后,字符集和编码方式被分离解耦了。此时,一套字符集可能有多套的编码规则,我们所熟知的UTF-8、UTF-16就是建立在Unicode字符集上的字符编码方式。

编码规则大致上可以分为两类:直接映射与间接映射。

直接映射 ,是指字符在字符集中的数字编号与编码后的编码串是一样的。比如ASCII字符集中,‘A’对应的字符编号是65,换算成二进制为“1000001”,按照ASCII码编码后,用一个字节来表示,就是“01000001”,也就是十进制中的65。编码前后,其实可以视为是一样的。

间接映射 ,就是字符在字符集中的数字编号与编码后的编码串不一定一样。还是上面的例子,unicode字符集中“汉”字的字符编号为0x6C49,如果换算成二进制就是“01101100 01001001”,但是UTF-8编码后要用三个字节来表示,表示成二进制就是“11100110 10110001 10001001”。编码前后,数值不一样。

其实,Unicode出现之前,大家一直用的都是直接映射,编码前后数值是一样的,这也是一直没有明确区分字符集和编码方式这两个概念的一个原因。

解释清楚了这几个概念,下面我们继续:

UCS全称为“Unicode Character Set”,是由ISO制定的ISO 10646标准所定义的标准字符集。

UCS又称“Universal Multiple-Octet Coded Character Set”,译为通用多八位编码字符集。

相对应的,Unicode项目所使用的标准字符集通常被称为Unicode字符集。

如上文所述,Unicode 20发布时,Unicode字符集与UCS字符集基本保持了一致,之后虽然二者独立存在,但是一直在保持互相的兼容。

在ISO与unicode合并之前,ISO就有一套字符编码模式,也就是UCS-2。

UCS-2的规则就是用两个字节来表示字符集中的字符,并且它使用的是直接映射的方式。所以可以简单理解为,UCS-2就是将字符的数字编号直接转化为二进制,然后用两个字节来进行存储。

与ASCII类似,此时的UCS-2其实可以视为一套字符集,也可以视为一套编码规则。

UCS-2用两个字节来表示一个字符,所能容纳的字符数量为2^16 = 65536个。

在ISO与Unicode合并字符集之后,双方约定字符集需要容纳的字符数量远远超过65535个(到目前为止,Unicode字符集可容纳的字符量为2^16 17 = 1114112个),此时UCS-2显然不够用了,所以ISO推出了新的规则,就是UCS-4

UCS-4与UCS-2基本一样,唯一的不同点是,UCS-4使用4个字节来表示一个字符。

同样,UCS-4可以认为是一套字符集,也可以认为是一套编码规则。

在有些文章里,UCS-4有广义和狭义两种含义,广义上UCS-4包含UCS-2,狭义上不包含。个人理解,在指代字符集的时候,UCS-4包含UCS-2,但是在指代编码规则时,UCS-4不包含UCS-2。

UCS-2全称2-byte Universal Character Set,直译为2字节通用字符集。

UCS-4全称4-byte Universal Character Set,直译为4字节通用字符集。

注意:UCS-2和UCS-4组成的UCS字符集,都可以采用UTF-8、UTF-16、UTF-32进行编码。所以UCS-2与UTF-16并不等同,UCS-4与UTF-32也不等同。

如上文所述,ISO与Unicode合并之后,ISO推出了UCS-4。但是Unicode推出的却是另外一套编码规则:UTF-16

UTF-16源于UCS-2,但是与UCS-2不太一样。UCS-2属于定长编码方式,永远使用两个字节来表示一个字符。而UTF-16属于变长编码方式,对于UCS-2字符集中的字符(0x0000~0xFFFF)使用2个字节来表示,对于UCS-4字符集中除开UCS-2里的字符(0x10000~0x10FFFFF),使用4个字节来表示。

UTF-16的编码规则属于间接映射。对于UCS-2字符集里面的内容,保持字符编号与生成的编码串相同,但是对于UCS-4中的其他字符(指除开UCS-2中的字符),字符编号与最终的编码串并不相同。这里采取了一套计算算法:代理机制。不过本文对此不做深究。

虽然UTF-16能够满足需求,但是一来对于ASCII字符集中的字符,UTF-16仍然需要使用两个字节来存储(这样会有一个字节的空间被浪费),并且ASCII中的字符,其UTF-16编码的第一个字节将永远是0x00,而C语言中又因为会将此字节视为字符串末尾导致字符串无法正常解析。所以UTF-16刚推出的时候,就受到了很多的抵制。

由此,UTF-8出现了。

UTF-8也是一种变长编码方式,它使用1到4个字节来表示一个字符。

字符编号为0~127(十进制)的字符,使用一个字节进行表示。

字符编号为128~2047(十进制)的字符,使用两个字节进行表示。

字符编号为2048~65535(十进制)的字符,使用三个字节进行表示。

字符编号为65536~2097151(十进制)的字符,使用四个字节进行表示。

UTF-8和UTF-16,都属于间接映射。也就是说,字符编号与最终的编码并不完全是一样的。

实际上,UTF-8的编码规则如下:

还是上文中的例子,Unicode字符集中的“汉”字,字符编号以16进制表示为“0x6C49”,换算成十进制就是27721,所以需要使用三个字节进行表示。而“0x6C49”换算成二进制就是“110110001001001”,代入上图中三字节的编码规则(“1110xxx 10xxxxxx 10xxxxxx”),最终得到的就是"1110110 10110001 10001001"。

当然,对于ASCII字符集里面的字符(字符编号小于128),UTF-8只需要一个字节即可表示。与UTF-16的两个字节相比,空间利用率更高(同样,在进行数据传输时,效率也更高)。

也因此,UTF-8对于ASCII码属于完美兼容,而UTF-16只能算是间接兼容(毕竟多了一个字节,解析的时候还需要进行转化)。考虑到计算机世界里ASCII字符的广泛性,这一点意义重大。

顺便说一句,虽然上面并没有介绍UTF-16的代理机制,但是可以说明的是,这个代理机制的算法要比UTF-8的算法更加复杂,一定程度上也导致了UTF-16进行编码和解码需要耗费更多的资源。

此外,可以看到,UTF-8编码产出的字节,都带有固定的前缀。这样做有几个好处:

第一,字符使用UTF-8编码之后,第一个字节的前面的几位,可以明确标识出来,此字符需要几个字节才能表示出来。这样的话,解码程序在读入每一个字节的时候,就能够知道当前字节是否为一个字符的首字节;如果是首字节的话,立刻就能知道还需要读入几个字节才能解析出来这个字符。

第二,字符经UTF-8编码之后,生成做到多个字节中,第一个字节的固定前缀与后续字节的固定前缀都不一样。这样就保证,在传输过程中,如果出现了局部的字节错误,比如增加、丢失、修改了某些字节。将只会影响到有限个字符,并不会导致后续的所有的字符都解析错误。这一点是UTF-16、UTF-32、GB系列都做不到的事情。

第三,同样因为编码后,首字节的前缀与后续字节的前缀都不同,所以从UTF-8字节流中的任一字节开始,往后或者往前都可以很轻易的找到当前字符或者临近字符的起始位置。

第四,依照目前的规则(检查首字节,在第一个0出现之前,有几个1,就代表当前字符需要用多少个字节进行表示),UTF-8可以很轻易地扩展到5个字节、6个字节,甚至是7个字节和8个字节。这就保证了UTF-8可以很轻易地支持Unicode字符集的不断扩充。

与UTF-8和UTF-16相比,UTF-32就比较简单了。

UTF-32的编码规则属于直接映射,并且每个字符都使用四个字节来表示。

因此,UTF-32比UTF-16更浪费空间。但是因为使用的是定长编码(每个字符都是四个字节),所以文本处理速度上要比UTF-8和UTF-16快一些。

在三大UTF编码中,UTF-32既不是最早出现的(UTF-16),也不是最优设计(目前公认UTF-8为最优设计),所以目前已经很少有地方在用了。

上文聊到一个内容,UTF-16编码,有可能使用两个或者四个字节来表示一个字符。那么问题来了,假设存在一个字符,其用UTF-16编码之后,对应的字节流,用16进制表示为0xFA 0xFB。这时候,在计算机存储与传输中,到底应该是0xFA放前面呢,还是应该0xFB放前面呢?

比较遗憾的是,在计算机发展历程中,出于各种各样的原因,大家并没有形成统一,而是出现了多种方案,比较常见的是如下两种:

一、大端序(Big-Endian):又称高尾端序,即数据的尾端存储在内存的高地址;数据的头端存储在内存的低地址。

二、小端序(Little-Endian):又称低尾端序,即数据的尾端存储在内存的低地址;数据的头端存储在内存的高地址。

为了方便理解记忆,这里用几个例子来对大端序和小端序进行下简单的说明。

首先,我们在阅读和书写二进制串时,总是高位在前,低位在后。比如,拿“汉字”为例,其中“汉”对应的unicode编码为“U+6C49”,“字”对应的unicode编码为“U+5B57”,如下所示:

而计算机内存的地址增长,我们设定为从左到右,如下图所示:

那么这种情况下,大端序,就是将写入内存时,字节顺序不变。如下所示:

而小端序,就需要将字节串前后颠倒一下顺序,再写入内存,如下所示:

注意:

不过,问题来了,上面举的例子中,“汉”和“字”在UTF-16编码下,都只需要两个字节就能表示。那对于需要四个字节才能表示的字符呢?这里选取两个字符,对应的unicode编码分别为"U+129024"( >

程序员推荐使用Leanote, 它专为程序员定制的

Leanote云笔记的功能特点:

有两款编辑器, 富文本(支持代码高亮!!!)和Markdown

云同步: web端, 桌面端, 手机端, 全覆盖与云同步

桌面端支持三大平台, 连Linux都支持

集成博客功能, 一键将笔记公开为博客, 博客主题可定制

还有很多特性

开源

微信公众号的编辑器之难用实在令人无法忍受,因此滋生了很多公众号排版工具。作为一个非 markdown 无法写作的程序员,第一时间就是想到如何将 markdown 一键生成公众号可支持的格式

一开始直接 Typora 渲染的格式粘贴到公众号,效果很不理想,需要再手工调整

继而寻找第三方工具, markeditor 在宣传视频上可实现一键排版,此外还附带了很多功能,而我只需要一个排版功能即可。编辑器习惯用 vscode, 毕竟 vim 党无法抛弃 vim 键位,vscode 对 vim 的支持极佳。图床我用腾讯云,使用 iPic 工具一键上传,十分方便,惟一缺的只是如何将 markdown 渲染成可一键粘贴到公众号的工具

几经寻找,终于找到了最合适的工具 Md2All ,只需要将 markdown 文本粘贴到页面,点击复制,就可以粘贴到公众号,样式一模一样

这才是程序员追求的效果,只专注于内容输出,排版之类的繁琐细节就应该自动生成。如同程序员只写源码,编译、打包、部署交由专业的工具自动化生成

如果要在排版上重复耗费时间,会将我写作的热情消磨殆尽

Md2All 默认的样式是可以自定义修改的,很符合程序员的思维,于是根据自己的需求自定义了样式表

排版的效果如下:

小标题的编号是使用 vscode 的 mardown-index pro 插件自动生成的,安装插件后,在控制台命令行输入 Markdown add index 即可自动生成目录

综上,总体的流程为:

完美的流程,无须为排版耗费心力,尽情输出

推荐DeerResume这款简历制作软件。

DeerResume是一款简单好用的在线MarkDown简历工具,这款软件对于程序员来说是一个绝佳的个人简历网站在线制作应用。这款程序为开源状态,被团队放在Github托管,你可以试用官方设计的版本制作简历,也可以利用源码在自己的服务器上架设一个简历制作应用,以供招聘者能快速查看你的履历。

主要功能:

可自行搭建,任意修改页面样式和风格。

免安装,可放置于任何支持静态页面的云和服务器(当然包括GitHub)。

在线MarkDown编辑器+实时预览。

在浏览器中实时保存草稿。

支持阅读密码,您可以直接将网址和密码发送,供招聘方在线浏览。

一键生成简单雅致的PDF,供邮件发送及打印。

使用技巧:

请在可访问云端的情况下完成MarkDown的编辑,然后复制好简历内容。

修改appjs 注释掉第3行,打开第4行,将数据源切到本地。

修改dataphp 填入标题和内容,并按自己的需要设置阅读密码。

1 Jon Skeet

个人名望:程序技术问答网站Stack Overflow总排名第一的大神,每月的问答量保持在425个左右。

个人简介/主要荣誉:谷歌软件工程师,代表作有《深入理解C#(C# In Depth)》。

网络上对Jon Skeet的评价:

“他根本不需要调试器,只要他盯一下代码,错误之处自会原形毕露。”

“如果他的代码没有通过编译的时候,编译器就会道歉。”

“他根本不需要什么编程规范,他的代码就是编程规范。”

2 Gennady Korotkevich

个人声望:编程大赛神童

个人简介/主要荣誉:年仅11岁时便参加国际信息学奥林比克竞赛,创造了最年轻选手的记录。在2007-2012年间,总共取得6枚奥赛金牌;2013年美国计算机协会编程比赛冠军队成员;2014年Facebook黑客杯冠军得主。截止目前,稳居俄编程网站Codeforces声望第一的宝座,在TopCoder算法竞赛中暂列榜眼位置。

网络上对Gennady Korotkevich的评价:

“一个编程神童。”

“他太令人惊讶了,他相当于我在白俄罗斯建立了一支强大的编程队伍”

“彻底的编程天才”

3 Linus Torvalds

个人名望:Linux之父

个人简介/主要荣誉:

Linux和Git之父,一个开源的 *** 作系统;

1998年EFF(电子前沿基金会)先锋奖得主;

2000年英国计算机学会Lovelace奖章得主;

2012年千禧技术奖得主;

2014年IEEE(电气和电子工程师协会)计算机学会先锋奖得主;

2008年入选计算机历史博物馆名人堂;

2012年入选互联网名人堂。

网络上对Linus Torvalds的评价:

“他简直优秀得无与伦比。”

4 Jeff Dean

个人名望:谷歌搜索索引技术的幕后大脑。

个人简介/主要荣誉:谷歌大规模分布式计算系统的设计师,例如:站点爬行,索引与搜索,在线广告,MapReduce,BigTable以及Spanner(分布式数据库)。2009年进入美国国家工程院;2012年美国计算机协会SIGOPS Mark Weiser Award以及Infosys Foundation Award奖项得主。

网络上对Jeff Dean的评价:

“使数据挖掘取得了突破性发展。”

“能够在各项工作都已安排得满满的情况下,仍能构思、创作、发布出MapReduce以及BigTable这些令人赞叹不已的工具。”

5 John Carmack

个人名望:第一人称射击游戏经典师祖《Doom》(毁灭战士)之父

个人简介/主要荣誉:id Software公司联合创始人,制作了很多脍炙人口的游戏,如:《德军司令部》(Wolfenstein 3D,又名《刺杀希特勒》)、《Doom》(毁灭战士)、《Quake》(雷神之锤)。引领了很多计算机显示领域的新技术,包括:adaptive tile refresh(切片适配更新)、binary space partitioning(二元空间分割)、surface caching(平面缓存);2001年进入互动艺术与科学学院名人堂;2010年收获游戏开发者精选奖终身成就奖殊荣。

网络上对John Carmack的评价:

“制作了很多革命性的第一人称射击游戏,影响了一代又一代的游戏设计者。”

“他能在一周内就完成任何的基础设计工作。”

“他是会编程的莫扎特。”

以上就是关于要做程序员需要学会什么全部的内容,包括:要做程序员需要学会什么、字符编码简述、程序员工作笔记用什么软件好等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/10124870.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-05
下一篇 2023-05-05

发表评论

登录后才能评论

评论列表(0条)

保存