优秀游戏程序员学习资料推荐

这两天给单位的技术做的一次学习材料推荐培训,直接ppt上拷过来的。

优秀游戏程序员学习资料推荐

主讲人:臧旭

前言

今天提到的纯粹是我个人心得和理解,可能片面,可能以偏概全。

目的是给大家做一定的指引作用,想让大家知道自己还有哪些可以去学习,还有哪些不足,我们距离优秀还有多远。

对我今天提到的东西,如果大家有时间,一定要去深入了解,在技术的道路上才有可能看得远、走得稳、飞得高。

另外有一句对所有技术人员想说的话:

学无止境。切忌坐井观天、有一点小小的成就就沾沾自喜、止足不前。

扎实的基础

万丈高楼平地起,勿在浮沙建高楼。

有扎实的计算机理论基础:

1.对计算机知识体系有全局的理解。【广度】

2. 对任何一门技术都将有更深刻和透彻的理解。【深度】

数学基础

数学是基础中的基础。

不会数学推导,你就看不懂各种文献,也不会明白各种算法的个中所以。

不会数学推导,在3D道路上你更将寸步难行。

当然,你也可以选择让度娘给你一个别人写好的现成的。

但是,对内部原理和推导一窍不通我们就不能变通?网上找不到现成的怎么办?

1.高等数学

积分和微分在任何数学场合都是基本功。

2.线性代数与空间解析几何

向量分析、矩阵分析。3D图形学中最重要的组成部分。

3.基础物理

刚体力学、柔体力学、流体力学,游戏开发中非常常见。

4.离散数学

数据结构的理论基础。

5.概率统计、模糊数学

人工智能的理论工具。

计算机学科专业基础

1.计算机组成原理与体系结构

2.汇编语言程序设计

3.操作系统

4.数据结构

5.程序设计算法

6.计算机网络

7.数据库原理

8.编译原理

9.C/C++语言设计

计算机组成原理与体系结构

组成原理和体系结构可以合并在一起,也可以单独的拆分为两个科目。

两个科目相辅相成,各有重叠的部分。但是总体都讲述了计算机的各个硬件组成部分,各个部分的运作原理以及各个部分之间是如何互通协作的。

总体来说,两个科目都偏硬,但是组成原理偏硬更多,体系结构相比略偏软。

这个是基础中的基础,不学习这个,我们就不明白计算机到底是什么,也不会深入地理解计算机是怎么运作的。当然,我们肯定更不明白自己写的程序本质上到底是什么了。

推荐材料:

找一本高校教材就可以了,推荐清华大学出版社的

汇编语言程序设计

最低级的语言。

学习的目的:

1.深入地理解高级语言的语言特性。高级语言只是给低级语言穿上了华丽的外衣,我们要想知道它到底是什么,必须查看汇编代码。

2.深入理解编译器。编译器会给我们优化,但是很多时候可能好心没做成好事,这个时候必须查看汇编代码才能看出猫腻。

3.性能优化。编译器的汇编指令优化已经很好,但是想要追求更好,自己写汇编代码是最好的选择。

4.深入理解系统内核。比如不开源的windows,那么多漏洞别人都是怎么发现的?当然是通过阅读反汇编代码了。

5.打发大家的一些无聊时间,有强大的汇编基础和操作系统基础,破解和逆向分析都不会难。

6.有时间最好能独立开发一款反汇编工具,对汇编和逆向的帮助会很大。

推荐材料:

王爽 《汇编语言》

《C++反汇编与逆向分析技术揭秘》

《天书夜谈-从汇编语言到Windows内核编程》

《加密与解密》

操作系统

操作系统是大家很熟悉的名词。不言而喻,基础中的基础。

学习目的:

1.进程、线程、cpu调度、死锁、内存管理、文件管理、I/O系统,这几块都是我们写程序的时候和操作系统打交道最多的地方。必须要有深厚的操作系统系统理论基础来知道我们实践。百度什么的只能给你吃一顿快餐,很难让你有深入地理解。

2.主流的操作系统无非linux和windows,但是他们的设计初衷是大同小异的,有通用的理论我们才能更好地去实践。

推荐材料:

恐龙书《操作系统概念》(《Operating System Concepts 》)

于渊 《自己动手写操作系统》

数据结构

不懂数据结构的程序员就不是一个程序员。

数据结构内容非常多,建议大家把每种基础类型的数据结构都仔细地学习一下,一定全部要自己动手写程序实现一遍,还要自己动手计算最好、最坏以及一般时间复杂度和空间复杂度。

对于数据结构的学习千万不能马虎,绝对不能眼高手低,能完整地没有bug地实现任何一个基础的数据结构都不是一件容易的事情。

除了基础的那些之外,一些常用的变种也很重要。值得花时间学习和实践。

推荐材料:

严蔚敏 《数据结构》

程序设计算法

这里的程序设计算法,指的是六大基础算法。大家如果对ACM比赛有所了解,应该清楚通用计算机算法还有很多。但是对于我们平时遇到的问题,相信有这六大基础算法已经足够。

主要是:递归与分治、动态规划、贪心、回溯、分支界限、线性规划。

和学习数据结构一样,重要的是理解和动手实践。

推荐材料:

王晓东 《算法设计与分析》+《算法设计与实验题解》(推荐这个,后面两个太厚,讲的太多、太杂,而且《计算机程序设计艺术》三卷难度非常大)

《算法导论》

《计算机程序设计艺术》三卷

北大和浙大的ACM在线judge (无聊的时候做一两条稍有难度的题目也是非常有意思的)

计算机网络

和操作系统一样,所谓计算机网络基础,更加偏重的是理论,一层层地剖析七层网络协议,同时对各种类型的网络、物理媒介、网络拓扑、各种网络算法都有详细的描述。我们平时所关心的SOCKET、TCP、UDP之类的在整个计算机网络的知识体系中只是一滴水而已。

为什么要学习?

不学习这个,我们除了会用socket建立连接、发送消息、知道TCP有三次握手之类的之外,其他还知道什么呢?

所以再一次强调,学无止境,切忌坐井观天。

推荐材料:

潘爱民译《计算机网络》

《自顶向下网络设计》

数据库原理

数据库应该是一个很重要的学科。它的应用非常广泛。不要一想到数据库,就想到服务器开发人员用的。任何地方都可以使用数据库。

数据库原理主要描述的是关系模型、范式以及SQL规范。数据库原理是数据仓库、数据挖掘之类相关学科的理论基础。

建议大家学习使用任何的数据库之前,最好预先学习一下理论。不然建表和写SQL的时候会出现很多不合理的地方。

另外,对于数据库来说,自己动手写一个小型DBMS(数据库管理系统)的收获是最大的。因为实现一个DBMS涉及到的知识点太多了,需要丰富的编译原理、数据结构、操作系统知识。是一个把知识融会贯通的好机会。

推荐材料:

没什么特别优秀的理论书

一定要自己动手实现一个DBMS

编译原理

编译原理,当然讲的最多的是和编译器相关的原理知识。

为什么要学习:

1.帮助我们理解平时写的高级程序语言最终是如何变成指令码的。

2.编译原理里面有限状态机的概念非常有用,编译器也是它的一个应用而已。

推荐材料:

龙书 《编译原理》

《加载器和链接器》

《程序员的自我修养:加载、链接和库》

LLVM源代码

C/C++

C++有非常强的语言特性,熟悉C++,对于任何一门其他的语言都能触类旁通。

而且,阅读高级C++代码绝非易事,绕过这道坎,我们阅读任何语言,任何代码都是小菜一碟。

C++的范畴太太广泛,水太深,需要学习的东西也太多。

推荐材料:

我们现在对C++的使用只是入门级别而已。

C/C++推荐书籍

语言基础:

《21天学通C++》

C++圣经《The C++ Programming Language》

《Effective C++》

《More Effective C++》

《深入理解C++11:C++11新特性解析与应用》

《深度探索C++对象模型 》(《 Inside the C++ Object Model 》)

模板,模板元,泛型,库:

《STL源码剖析》

《C++ Templates中文版 》(《 C++Templates:The Complete Guide 》)

《C++模板元编程》(《C++ Template Metaprograming:Concepts, Tools, and Techniques from Boost and Beyond》)

《深入解析ATL 》(《 ATL Internals 》)

《COM原理与应用》

《 Boost程序库完全开发指南——深入C++“准”标准库》

《深入浅出MFC》

夯实基础之后我们做什么?

看了前面一大串的知识和书籍,大家可能头已经晕了。

但是,

计算机是一门学科,不是大妈做手抓饼。你要想做一个真正优秀的程序员,前面的全部都是必须!

而且熟悉其中任何一个点都绝不是一天两天的事情。

我们至少要做好前面的80%的积淀,不然我觉得基本上就不要深入后面的内容了。

推开门

计算机是一门科学,它有无数的分支和小学科。

从技术选型和实现的角度来看,更是不计其数。

我们今天就关注我们现在做的:游戏编程。

语言类

语言只是工具,是我们为了实现完成一款游戏这一目的的工具。

高级语言一般分为静态(类型)语言和动态(类型)语言。

简单的区分手段(不一定):需要预编译的就是静态语言,不需要预编译的就是动态语言。所有的脚本语言都是动态语言。

深入了解语言是如何编译或者解释的,有助于我们更加深入地理解语言是如何实现、内部是如何运作的。基于此,我们才能更加灵活、高效、高性能地使用语言。

推荐材料:

基础的就是编译原理,但是现在已经有了很多其他的编译技术(如相对于AOT的JIT)。

要想对语言有更多的了解,可以直接看开源语言的源代码,或者查阅官方的文档。

建议大家要了解的语言,打星的是要熟练掌握的语言:

宿主语言:

C++(*)

Java(*)

Objective-C(*)

C#(*)

粘合剂语言:

Lua(*)

ActionScript

JavaScript

工具语言:

Linux Shell脚本(*)

Windows批处理脚本(*)

Python(*)

脚本-Lua

学习一门脚本,不仅仅要学习它的语法,更重要的是要学习它的脚本引擎。Lua作为开源语言,以高性能和易使用而闻名。每一个游戏程序员(不管是服务器开发还是客户端开发),都值得投入大量的时间把它学习透彻。

什么时候算学习Lua毕业了?能独立开发一个Lua的单步调试IDE就行了。

友情提示:容易上手的东西精通都很难。我们现在对Lua的使用只是皮毛而已。

推荐资料:

《Lua程序设计》(lua基本语法,lua和C函数的互通)

Lua源代码 (Lua源代码的量非常小巧,但是密度很高,要一行一行的精读,调试)

LuaJIT源代码(Lua的JIT编译版本,可以和Lua源码比较阅读,精读)

tolua++源代码(开源Lua和C++绑定实现,精读)

云风的博客 blog.codingnow.com

云风 《Lua源码欣赏》

Java

为什么有Java,因为我们要在安卓平台开发,所以我们必须要熟悉Java。但是这里提到的Java是和安卓无关的,安卓是另一个我们需要熟悉的庞大主题。

学习的要点:

Java的语言特性及基础库(匿名类、容器、并发、异常、反射、文件处理、网络)。

Java的AOT和JIT两种编译方式。

Java的JVM虚拟机实现。

Java的GC实现机制。

推荐材料:

《Java编程思想》(《Thinking in Java》)

《深入理解Java虚拟机:JVM高级特性与最佳实践》

《深入Java虚拟机》(《 Inside the Java Virtual Machine》)

《Java SE 7虚拟机规范》

JVM源代码(代码量大,对学习操作系统和各种编译手段很有帮助,泛读)

Objective-C

IOS上开发需要使用Objective-C,是一门优雅的语言。同样,这里提到的Objective-C只是语言级别的东西,不涉及IOS。

学习的要点:

oc的语法和基础库(oc对象模型、函数调用、Interface、Category、Extension、selector、arc、容器、并发、异常、反射、文件处理、网络、NEXTSTEP贡献的设计模式)

推荐材料:

苹果官方开发文档

《Objective-C基础教程》(《Learn Objective-C on the Mac ForOS X and iOS》)

游戏的运行平台

目前我们涉及到的游戏运行平台有三个:

Windows

Android

Ios

所以要想更好的对我们的游戏做本地优化,我们必须熟悉各个平台操作系统。

Windows

学习要点:

Win32窗口程序开发。

MFC程序开发。

COM组件开发

ATL组件开发。

进程、线程、同步IO、异步IO、内存分配技术、API拦截和DLL注入、结构化异常。

内核、驱动编程。

推荐材料:

《深入浅出MFC》

《深入解析ATL 》(《 ATL Internals 》)

《 COM原理与应用》

《Windows核心编程》(《Windows via C/C++》)

《Windows驱动开发技术详解》

《Windows内核原理与实现 》

《天书夜谈-从汇编语言到Windows内核编程》

《寒江独钓——Windows内核安全编程》

WRK( Windows Research Kernel )源代码

Linux

不论Android或者IOS,它们使用的操作系统都是Linux的变体,所以熟悉Linux对学好Android和IOS是不可或缺的。

学习目标:就是操作系统必备的那一套,和Windows差不多,都摸熟了就可以了。(进程、调度、内存、中断异常、系统调用、信号、文件系统、同步和异步IO、驱动)

推荐材料:

《鸟叔的Linux私房菜》(入门教材,教你怎么操作,怎么使用命令的)

《UNIX 环境高级编程》(《Advanced Programming in the UNIXEnvironment》)

《Linux内核设计与实现》(《Linux Kernel Development》)

《深入理解Linux内核》 ( 《Understanding the Linux Kernel》)

《深入Linux内核架构》 ( 《Professional Linux KernelArchitecture》)

《Linux内核源代码情景分析》

《Linux设备驱动程序》 ( 《Linux Device Drivers》)

《精通Linux设备驱动程序开发》 ( 《Essential Linux Device Drivers》)

Linux源代码

Android

学习要点:

Android原生应用开发(组件、工具包使用、api等级、manifest配置)

NDK(这个实际上是Java提供的,只是我们只在安卓上面用,才放在这里)(JNI实现原理,NDK编译工具链和mk文件写法)

adb(adb工具使用,adb通信协议)

Android压包和解包工具

Android内核和驱动开发

Dalvik虚拟机

推荐材料:

《精通Android》(《Pro Android 4》)

《 Android应用性能优化》(《Pro Android Apps PerformanceOptimization》)

《 Android底层开发技术实战详解:内核、移植和驱动 》

《 Android系统源代码情景分析》

老罗的博客 blog.csdn.net/luoshengyang

Dalvik虚拟机源代码

NDK工具链源代码

IOS

和Android相比,并不推荐大家花很多的时间在IOS上面。个人觉得ios对技术人员来说是个挺没有意思的平台。

学习要点:

熟悉xcode。

熟悉UI组件和工具库。

熟悉ios私有api。

了解objective-c和c++互通的原理。

推荐材料:

官方文档(精读)

《精通iOS开发》(《Beginning iOS6 Development》)

没事可以找个刷机的源代码研究研究

模式

我们在写任何程序之前,一定要有一定的设计模式基础。不然写出来的代码会有各种毛病。

学习要点:

熟悉各种常用的设计模式,做到提到设计模式的名字就要想到对应的设计模式的意图、优缺点,以及对应的UML类图。

推荐材料:

GoF《设计模式-可复用面向对象软件的基础》

POSA 《面向模式的软件架构》 共5卷

游戏

游戏是最大也是最关键的主题。

笼统的讲,做出一款游戏,涉及到的东西应该有:

游戏资源管理、IO

游戏对象的管理和显示(渲染引擎)

物理

AI

网络

数据库

多线程

内存池

游戏资源管理、IO

IO主要和操作系统相关,有了前面的积淀,对我们来说应该不成问题。

游戏资源管理主要是指文件资源打包机制和补丁机制。

打包对提高游戏性能至关重要,重点要解决的问题就是怎样更合理地设计文件资源包格式、合理地设计高效索引提高查找和读取的效率。可以理解为我们自己定制的一个简单的小型数据库。

推荐材料:

暴雪MPQ文件打包源代码

https://github.com/ladislav-zezula/StormLib

渲染引擎

技术要点:

计算机图形学

3D引擎基本结构和设计

OpenGL

各种3D对象是如何组织和渲染的

GPU编程

计算机图形学

2D/3D渲染引擎的数学基础。

学习要点:

光栅算法、不同类型图元的填充算法、反走样算法、三维几何变换、三维观察变换、样条逼近算法、场景树、子场景组织算法、可见面判别算法、光照模型以及面绘制算法(材质、光线、阴影、凹凸、雾、透明混合、镜面映射)、后处理算法。

学习计算机图形学,最忌讳的也一样是眼高手低、不求甚解。什么才叫学会计算机图形学?每一个公式推导你都能自己做,那才叫学会了。

推荐材料:

赫恩《计算机图形学》

《Mathematics for 3D GameProgramming & Computer Graphics》

Mesa 3D源代码(Mesa是OpenGL的开源实现)

Kazmath(cocos2d-x所用的开源数学库)

3D引擎基本结构和设计

也许很多人会问这个不是框架架构层面的东西么?为什么不是从OpenGL写小Demo入手?

这个道理和我们需要扎实的理论基础是一样的。了解什么是3D引擎,我们就有了一个全局的概念。然后才能一一击破。

学习要点:

第一次看:了解3D引擎层次结构,了解一个典型的3D所必须要有的功能模块和它们的作用,了解模块之间的关联关系,了解渲染引擎在3D引擎中的位置地位。

第二次看:结合开源引擎,深入理解各个模块的实现和当前最新的研究成果。

第三次看:灵活应用,自己动手模仿写基础的3D引擎。

第四次看:结合自己的实践和大量参阅开源3D引擎,明白当前流行的3D引擎各自的有点和缺点。然后弃其糟粕,取其精华。

推荐材料:

《游戏引擎架构》(《Game Engine Architecture》)

《3D Game Engine Design》

《 3D游戏编程大师技巧》

《REALTIME RENDERING》

OpenGL

其实DirectX和OpenGL在一个对等的位置,对于学习而言,两者都一样。DirectX函数设计封装更为彻底、方便,OpenGL的函数则更加简洁、干净、适合学习。但是冲着跨平台的特性,以后大部分人估计都会直接学习OpenGL了。

OpenGL是搭建3D世界的工具,所以一定要非常非常熟悉。OpenGL里面涉及的一些学习要点以前培训过,大家可以自己回顾一下。

推荐材料:

红宝书 《OpenGL编程指南》(《OpenGL Programming Guide》)

蓝宝书《OpenGL超级宝典》(《OpenGL SuperBible》)

Nehe 的OpenGL教程 nehe.gamedev.net

Mesa 3D源代码

各种3D对象是如何组织和渲染的

这个有了图形学和OpenGL基础,自然就会明白了。所有的3D对象只是复杂度不同,组织方式不同,渲染的原理都是一样的。

学习要点:

常用3D模型格式、地形、树、植被、水、光晕、粒子、布告板、骨骼动画

推荐材料:

《Focus On 3D Terrain Programming》(3D地形)

《Advanced Animation with DirectX》(模型和动画)

GPU编程

GPU编程是3D开发很重要的一个环节。说到底就是Shader语言的应用。Shader可以上3D世界变得更加丰富多彩。很多绚丽的后处理效果都需要依靠Shader来实现。当然,最大限度的利用GPU的能力,已经是3D游戏突破性能瓶颈的最大利器。

相关的技术还有GPGPU(General Purpose GPU),即利用GPU的高速并行处理能力来去掉CPU多线程编程。

推荐材料:

《GPU 精粹》(《GPU Gems》)3卷

《Shadersfor Game Programmers and Artists》

《 Advanced Lighting And MaterialsWith Shaders》

AMD和NVIDIA官网

ACM Siggraph文献

物理

和游戏相关的物理主要有刚体力学、柔体力学以及流体力学。

推荐材料:

<<Game Physics>>

<<Game Physics EngineDevelopment>>

<<Real-time CollisionDetection>>

Box2D引擎源码

LiquidFun引擎源码

Bullet引擎源码

AI

人工智能是一个非常广泛的话题。对数学的要求较高,横跨好多学科。

学习要点:

基础的算法都应该有所了解,至少要知道个每个算法的实现原理和使用情景。

基于图和树的搜索(A*等)(*)

不确定性推理(贝叶斯网络、模糊逻辑等)

机器学习、模式识别(决策树、神经网络等)(*)

计算智能(蚁群算法、模拟退火算法等)(*)

自然语言处理(*)

有限状态机(*)

推荐材料:

《人工智能及其应用》

《高级人工智能》

《游戏开发中的人工智能 》

网络

网络最重要的是要掌握7层模型,掌握TCP模型,掌握Http协议。

学习要点:

搞清楚7层模型上各有哪些协议

TCP协议细节

Http协议细节

常见IO模型(阻塞IO、非阻塞IO、IO复用、信号驱动IO、异步IO)以及常见设计模式(最经典的是POSA中提出的reactor模式)

熟悉windows下的完成端口和linux下的epoll

熟悉游戏服务器中常见的几种网络架构

推荐材料:

《POSA -并发和联网对象》 第二卷

《C++网络编程》2卷 (关于ACE网络框架的好书)

ACE源代码

《TCP/IP》3卷(第一卷和第二卷较为经典)

《 UNIX网络编程》(《Unix Network Programming》)2卷

《Windows核心编程》

《Win32多线程程序设计》

MaNGOS源代码 github.com/mangos(魔兽世界服务器复刻项目源码)

数据库

学习要点:

表设计

SQL语法

SQL优化

存储过程使用

索引使用

数据库的几种锁的使用

熟悉数据库常见的几种存储引擎

推荐材料:

《Mysql必知必会》

《高性能MySQL 》

《深入理解Mysql核心技术》(剖析源码)

Mysql源代码

多线程、内存池

多线程主要是要熟悉windows的Thread和内核对象,Linux下的pthread。然后就是如何处理线程竞争,做好同步工作。

内存池没有专门的书籍介绍,大家可以到网上搜索基础算法。也可以看看Memcache的源代码。

游戏编程精粹1-7

这套书总共有7卷,以小专题形式讨论游戏的各个方面,推荐大家阅读,非常有帮助。

其他一个比较重要而艰深的主题是Debug,有时间也要研究透。

优秀游戏程序员学习资料推荐,布布扣,bubuko.com

时间: 05-17

优秀游戏程序员学习资料推荐的相关文章

如何成为一个优秀的程序员(大部分写的都非常不错)——要勤快,不停的学习;争论是无意义的,不如把两种都学了,会更有收获。

在看这份FAQ之前,你必须先读完ESR的<如何成为一名黑客>(本文末尾附有中译版),该文所讲过的道理我不再重复.该文用很大的篇幅讲什么是黑客文化,虽然态度和信仰的确是成功的最关键因素,但是你肯定会想,做不做黑客跟我没关系,我只是想学个一技之长,找个好工作而已,对吧?那么肯定更希望获得一些具体的可操作的指导.     1.各种软件技术之间是怎样的关系? 我把软件技术分为三个层次:    问题域:计算机图形学.音视频编码.信息安全.模式识别.信息检索.自然语言分析.人工智能.科学计算等:     

zz 游戏程序员的学习之路(中文版)

游戏程序员的学习之路(中文版) Milo Yip · 1 天前 感谢 @楚天阔(tkchu)编写脚本及整理中文译本数据,自动从英文版生成中文版,SVG / PDF 版本中的书籍图片现在链接至豆瓣页面. Github miloyip/game-programmer 检视/下载中文版 SVG / PDF 「真诚赞赏,手留余香」 赞赏 15 人赞赏 程序员游戏开发书籍推荐 分享 举报 977 文章被以下专栏收录 Milo的编程 进入专栏 97 条评论 写下你的评论 trycatch 这是劝退吧...

学习Axure的心得&amp;关于如何做一个优秀的程序员

这些天学习了Axure的一些基础知识,感觉自己就只是刚刚入门,还有好多东西不懂.本想在网上好好地学一些更高的操作,却找不找比较好的学习视频.网上的资料太多,而且质量参差不齐.(视频画面根本就看不清)到后来就找了一些文本资料来看,但还是未能坚持看下去.不过,我看了一些关于程序员的资料. 下面就来说说我的看法. 一 努力刻苦地编程.好的程序员是后天炼成的,是靠一行行代码和一个个算法给喂出来的.因此,只要努力就一定能成为一个优秀的程序员. 二 拥有过硬的技术和本事.要明白,在IT行业,靠的不是关系,地

【转】游戏程序员养成计划

博客出处:www.cnblogs.com/clayman/archive/2009/05/17/1459001.html 作者:clayman 与玩游戏相比,写游戏要复杂上千万倍,除了需要掌握通用的编程技巧以外,还要有相当的图形学,物理,数学基础,特别是在国内,由于相关资料的缺乏,更是让初学者无从下手.下面总结了一些入门方法和比较容易入手的资料. 首先你要精通一门高级语言,pc上游戏的首选语言就是C++.其次,要有良好的英文阅读能力.对游戏开发者来说英文阅读能力是最重要也是最基本的工具之一,因为

10条建议分享:帮助你成为与硅谷工程师一样优秀的程序员

成为一名硅谷的工程师可能是很多中国程序员的梦想.硅谷被公认是目前世界上云集了最多优秀工程师和知名科技公司.创业公司的地方,吸引了全球无数投资者.创业者和工程师的目光.在那里工作的工程师,有着令人羡慕的职业发展前景,薪酬待遇.此外,他们出众的教育背景,扎实的专业能力,创新的思维,专注的敬业精神也成为了其他工程师们学习的标杆. 下面总结的10条建议,来自一些有关编程的网站.社交平台和博客,给出这些建议的人大多数也是工程师(当中包括在硅谷工作的),以及一些专门研究计算机科学的学者.如果你有志成为一名出

【知乎】怎么成为一个优秀的程序员,而不是一个优秀的码农?

怎么成为一个优秀的程序员,而不是一个优秀的码农? 9 条评论 分享 默认排序按时间排序 98 个回答 3844赞同反对,不会显示你的姓名 萧井陌 微信公众号:炼瓜研究所 技术社区 - 3844 人赞同 优秀的程序员会告诉你打根基的重要性,会劝你在厚积薄发前要隐忍. 优秀的码农会告诉你学啥底层.啥啥啥一拖就好了,学了python还要啥自行车啊,数据结构排序函数二分搜索这不都内置了吗?工作中永远用不到,学算法有啥用啊?成为高手有很多种方法汇编是个屁啊? +++基础的分割线+++ 列举几个我认为比较重

一个优秀的程序员所具备的14个品质【转载】

慎于说Yes 在没有搞清楚开发需求.任务工作量.团队期望值之前,有前途的程序员不会轻易答应.特别是对于新人来说,比较急于表现自己,对于同事或者老板的工作安排来者不拒,精神可嘉,方法不可取.承诺太多,会出现自己无法按时完成的情况,即使按时完成,也可能没有达到别人的期望值,长期以往别人对你的失望会越来越多. 敢于说No 看起来和第一条雷同,其实细究起来不一样.第二条执行起来比第一条难得多.当遇到明显不合理的要求时,可以考虑拒绝,前提是准备好了全面充分的理由.不要经常说No,但是一旦说了,就要切中要害

优秀的程序员和一般的程序员差别在哪?

在我平时所见到的程序员中,如果纯以编码能力来看,个人觉得可以分为五类,依次是: 1. 拷贝型 拷贝型选手就是传说中的“代码拷贝员”了,他们对实现功能几乎没有思路,所作的事情就是从网上或是之前其他团队成员写的代码中拷贝出片段,然后放到项目中,如果运行项目出现了期望结果,则表示任务完成. 这类人只会改代码,却不会写代码.他们大多对编程毫无兴趣,只是希望以此糊口而已. 2. 新手型 当产品有功能需求时,由于经验有限,程序员并不完全知道要如何实现这个功能,需要通过学习.寻找资料等方式来解决问题. 这种情

谈谈程序员学习英文

今天把<Ogre 3D 1.7 Beginner's Guide>看完了,这也是我第一次完整的阅读完一本英文书籍,当然也是第一本英文技术书籍.来和大家分享一下我对程序员学习英文的一些看法. 学生时代到工作的个人英语学习经历  我自己的英文怎么说呢,不好不坏吧,小学是在小镇里上的,中学时候家搬到了市里我也就上了市里的初中,一开始我的英文绝对是最烂的.老师让读课文就把英文书上的句子下面标满了近似音的汉字.比如Good Bye就标成"骨头白".现在想想真是好笑死了.还记得一次上英