零基础,想要成为一名程序员要怎么做?
无论做什么事情之前呢,第一步选择很重要,编程也不例外!
如果有想学习编程的初学者,可来我们的前端直播授课群的哦:571671034里面免费送整套系统的前端教程!
第一步:选择一门语言
Javascript:web前端开发,在node中可以做后端,互联网以及无数浏览器仍然坚持使用JavaScript,而Node.js的出现甚至迫使我们在服务器端也要使用JavaScript。
HTML/CSS:标记语言,主要是给前端工程师构建页面使用
C++:图形图像、科研、通信、桌面软件、游戏、游戏服务器
C#:Windows桌面软件、.NET Web、服务器
Java: Java SE:跨平台的桌面应用,Android;Java EE:企业级应用,web开发、服务器后端;
GO:高性能服务器应用,比较年轻
Erlang:高并发服务器应用,多用于游戏
Python:Web、科学计算、运维
Ruby:web
Perl:运维、文本处理,用的较少
Lisp:科研,一种逻辑语言,用于人工智能
Node:一个JavaScript运行环境(runtime)
Haskell:Haskell是一种标准化的、通用纯函数编程语言,数学逻辑方面
Scala:一种类似Java的编程语言,集成面向对象编程和函数式编程的各种特性
等等。
第二步:找适合自己的学习方式
现在网络如此便利,找学习资源个人觉得不成问题,当然了,学会利用网络找资源是你必须会的,将来大有用处。总结了下,大概有这么几种方式:
网络搜索/查找(google、baidu)
购买书籍(根据自己的水平)
适合自己的视频或者博客
多码 demo,多认识同行,多交流
试着去写博客,做记录
以上几种方式个人建议最好能结合起来,要知道,编程本来就是一件很辛苦的事。
第三步:基础不留痕
我所说的基础是指基础知识,千万不要心急,所谓“欲速则不达”,急于求成反而会功亏一溃,其中,语法和编程习惯很重要,没有掌握好一门语言的语法,等于没有灵魂的画家,出不了惊人的作品;
而一个良好的编程习惯,则会给你带来很多益处,想想此时在你面前有两个项目,一个所有 code 都加了详细的注释,变量定义遵循一定的规则,而且代码都是经过格式化的风格,而另一个则看不到任何注释,而且代码格式乱七八糟,更不要说什么变量定义规则了,此时,你会觉得那个好呢?
“天下大事必作于细,天下难事必作于易”
第四步:三看两不厌
我是这么总结的:
多看效果
多看技术分享(博客、论坛、各种分享平台、已发布 APP)
多看代码
所谓的看效果包括两个方面,自己需要实现的效果,别人已经实现或者相似的效果,多做收藏,有空拿出来练练;多看技术分享,要知道技术在于分享,在编程这个路上,有很多同行都是乐意分享的,多看他们的分享,既是学习也是铺垫;作为编程人员,最终都是要落实在 code 上,所以要多看 code,多敲 code;
不厌 bug
不厌枯燥
可能对于开发人员来说,最不想听见的就是有人对你说:“出 bug 了”,这个时候不能厌烦,如果投简历的时候仔细看过招聘信息的朋友应该会注意到有时候会包括这么一条:“对 bug 不厌烦,能适应需求变更”,所以,正常应对策略应该这样想,出 bug 那就说明是正常的,因为没有那个程序是不存在任何 bug 的,有 bug 正是我们提升技术的一个途径啊,要坚持“不忘初心,方得始终”;编程前期感觉到枯燥无味那就对了,说明你正在入行,坚持一段时间,你就会发现其实也没有那么枯燥啊,因为你会慢慢认识很多有趣的人,知道很多有趣的事。
第五步:进阶
编程呢,一般都会认为有这么几个成长阶段:初级——>中级——>高级——>资深或者管理岗等,这条路是漫长而又艰辛的,且每个阶段需要掌握不同的知识点,对应每个人的领悟不同在时间长短上就不一样,需要做的,一步一个脚印,搞好该有的技能,别妄想有什么 XX 天精通等途径。
经典编程书籍大全
100+ 经典技术书籍,涵盖:计算机系统与网络、系统架构、算法与数据结构、前端开发、后端开发、移动开发、数据库、测试、项目与团队、程序员职业修炼、求职面试 和 编程相关的经典书籍。
计算机系统与网络
《图灵的秘密:他的生平、思想及论文解读》
《计算机系统概论》
《深入理解Linux内核》
《深入Linux内核架构》
《TCP/IP详解 卷1:协议》
《Linux系统编程(第2版)》
《Linux内核设计与实现(第3版)》
《深入理解计算机系统(原书第2版)》
《计算机程序的构造和解释(原书第2版)》
《编码:隐匿在计算机软硬件背后的语言》
《性能之颠:洞悉系统、企业与云计算》
《UNIX网络编程 卷1:套接字联网API(第3版)》
《UNIX网络编程 卷2:进程间通信》
《Windows核心编程(第5版)》
《WireShark网络分析就这么简单》
《WireShark网络分析的艺术》
编程通用
《编程原本》
《代码大全》
《UNIX编程艺术》
《代码整洁之道》
《编程珠玑(第2版)》
《编程珠玑(续)》
《软件调试的艺术》
《修改代码的艺术》
《编程语言实现模式》
《编写可读代码的艺术》
《解析极限编程:拥抱变化》
《精通正则表达式(第3版)》
《编译原理(第2版)》龙书
《重构:改善既有代码的设计》
《七周七语言:理解多种编程范型》
《调试九法:软硬件错误的排查之道》
《程序设计语言:实践之路(第3版)》
《计算的本质:深入剖析程序和计算机》
《设计模式 : 可复用面向对象软件的基础》
算法与数据结构
《算法(第4版)》
《算法导论(原书第2版)》
《Python算法教程》
《算法设计与分析基础(第3版)》
《学习 JavaScript 数据结构与算法》
《数据结构与算法分析 : C++描述(第4版)》
《数据结构与算法分析 : C语言描述(第2版)》
《数据结构与算法分析 : Java语言描述(第2版)》
职业修炼与规划
《大教堂与集市》
《卓有成效的程序员》
《程序员的职业素养》
《程序员修炼之道:从小工到专家》
《软件开发者路线图:从学徒到高手》
《我编程,我快乐: 程序员职业规划之道》
《程序员的思维修炼:开发认知潜能的九堂课》
《高效程序员的45个习惯:敏捷开发修炼之道(修订版)》
大师访谈
《编程大师智慧》
《编程大师访谈录》
《编程人生 : 15位软件先驱访谈录》
《奇思妙想 : 15位计算机天才及其重大发现》
《图灵和ACM图灵奖》
架构/性能
《微服务设计》
《大数据日知录》
《企业应用架构模式》
《Web性能权威指南》
《SRE:Google运维解密》
《发布!软件的设计与部署》
《高扩展性网站的 50 条原则》
《大型网站技术架构:核心原理与案例分析》
《恰如其分的软件架构:风险驱动的设计方法》
《软件系统架构:使用视点和视角与利益相关者合作(第2版)》
《高性能 JavaScript》
《锋利的 jQuery(第2版)》
《JavaScript 忍者秘籍》(感谢@joker-danta补充推荐)
《编写可维护的 JavaScript》
《你不知道的 JavaScript(上)》
《JavaScript 权威指南(第6版)》
《JavaScript 语言精粹(修订版)》
《JavaScript DOM编程艺术 (第2版)》
《JavaScript 高级程序设计(第3版)》
《JavaScript 异步编程:设计快速响应的网络应用》
《Effective JavaScript:编写高质量JavaScript代码的68个有效方法》
《HTML5 权威指南》
《HTML5 秘籍(第2版)》
《HTML5 与 CSS3 基础教程(第八版)》
《CSS 揭秘》
《CSS 设计指南(第3版)》
《CSS 权威指南(第3版)》
《深入浅出 HTML 与 CSS》
Java开发
《Java8 实战》
《Java并发编程实战》
《Java性能权威指南》
《Java程序员修炼之道》
《实战Java高并发程序设计》
《Java编程思想 (第4版)》
《深入理解Java虚拟机(第2版)》
《Effective java 中文版(第2版)》
《Java核心技术·卷1:基础知识(原书第9版)》
《Java核心技术·卷2:高级特性(原书第9版)》
.NET
《精通C#(第6版)》
《深入理解C#(第3版)》
《CLR via C#(第4版)》
Python
《集体智慧编程》
《笨办法学Python》
《Python基础教程》
《Python源码剖析》
《Head First Python》
《与孩子一起学编程》
《Python学习手册(第4版)》
《Python Cookbook(第3版)》
《Python参考手册(第4版)》
《Python核心编程(第3版)》
《Python科学计算(第2版)》
《利用 Python 进行数据分析》
《Think Python:像计算机科学家一样思考Python(第2版)》
《Python编程实战:运用设计模式、并发和程序库创建高质量程序》
《Python绝技:运用Python成为顶级黑客》
《Flask Web开发:基于Python的Web应用开发实战》
Android
《Android编程权威指南(第2版)》
《移动应用UI设计模式(第2版)》
iOS
《iOS编程实战》
《iOS编程(第4版)》
《Objective-C高级编程》
《Effective Objective-C 2.0:编写高质量iOS与OS X代码的52个有效方法》
PHP
《Head First PHP & MySQL(中文版)》
《深入PHP:面向对象、模式与实践(第3版)》
C语言
《C标准库》
《C和指针》
《C专家编程》
《C陷阱与缺陷》
《C语言接口与实现》
《C程序设计语言(第2版)》
《C语言参考手册(第5版)》
C++
《C++标准库》
《C++编程思想》
《C++语言的设计与演化》
《C++程序设计原理与实践》
《C++ Primer (中文第5版)》
《C++ Primer习题集(第5版)》
《C++程序设计语言(第1-3部分)(原书第4版)》
《Effective C++:改善程序与设计的55个具体做法(第3版)(中文版) 》
《More Effective C++:35个改善编程与设计的有效方法(中文版) 》
机器学习和数据挖掘
《数据之巅》
《矩阵分析》
《机器学习》
《统计学习方法》
《机器学习导论》
《推荐系统实践》
《机器学习实战》
《Web数据挖掘》
《深入浅出统计学》
《模式分类(第2版)》
《概率论与数理统计》
《统计学习基础(第2版)(英文)》
《数据挖掘:概念与技术(第3版)》
《数据挖掘:实用机器学习工具与技术(原书第3版)》
《大数据:互联网大规模数据挖掘与分布式处理(第2版)》
数据库
《SQL应用重构》
《SQL Cookbook》
《高性能MySQL (第3版)》
《深入浅出SQL(中文版)》
《MySQL技术内幕 : InnoDB存储引擎(第2版)》
《深入浅出MySQL : 数据库开发、优化与管理维护》
测试
《探索式软件测试》
《有效的单元测试》
《Google软件测试之道》
项目与团队
《人月神话》
《快速软件开发》
《人件(原书第3版)》
《门后的秘密:卓越管理的故事》
《极客与团队:软件工程师的团队生存秘笈》
求职面试
《程序员面试金典(第5版)》
《编程之美 : 微软技术面试心得》
《金领简历:敲开苹果、微软、谷歌的大门》
《剑指Offer:名企面试官精讲典型编程题(纪念版)》
按照题主要求的,列举出来的书籍,希望能对大家学习编程有所帮助。
如果大家想学习一门比较好入门的编程语言,建议可以去学习Web前端。
前端是一个相对比较新的行业,互联网发展早期(1995年~2005年)是没有专业的前端工程师的。随着互联网的发展,大约从2005年开始,正式 的前端工程师角色被行业认可,到了2010年,互联网开始全面进入移动时代,前端工程师的地位越来越重要,前端领域的技术发展也越来越快,各种新的思想、 设计模式、工具和平台都快速发展,对前端工程师的技能要求也越来越高。
有一些数据可以说明前端行业的发展迅速。
在2010年之后最流行的新编程语言中有相当部分和前端有关,比如 Dart、Clojure、CoffeeScript 和 TypeScript。
作为前端最重要的编程语言 JavaScript,在最近几年里不论是代码量还是关注数都稳居 Github 平台热门编程语言榜。
行业对前端需求量持续增加,前端程序员薪水在行业里面处于较领先的位置。
近年来最流行的编程语言很多都是JavaScript替代语言
Web前端属于用于前端开发的浏览器语言。它不需要太高的逻辑思维能力,也不需要像应用程序一样被审计。一般来说,只要你正确地输入代码,无论你输入什么内容,首页都会显示什么内容。基于0的合作伙伴可以理解,Web前端正在使用编程语言对语句进行排序。
0基础可以很好地学习web前端开发,与Java开发、PHP开发和其他后端开发语言相比,对于基础为0的学生来说,Web前端开发仍然很低。即使是那些在网络前端工作的人,在不那么受欢迎的行业也会发现移动互联网行业的新突破。另一方面,与Java相比,Web前端需要更少的逻辑思维,对计算机和物联网的知识也比嵌入式系统少。所以,只有你想进入网络前端行业,才有正确的学习态度,学习的耐心,即使你是0的基础,你也可以学习的网站前端。