unix编程艺术 程序员新手入门攻略(程序员进阶升级全攻略)
从学校走入职场后,我们总是听到这样的抱怨:学校课程总是偏向理论知识unix编程艺术,看不出有什么实际的作用,还不如从工作中的实际出发。
面对有志于程序员这个职业的人群,我们给出
前言 从学校走入职场后,我们总是听到这样的抱怨:学校课程总是偏向理论知识unix编程艺术,看不出有什么实际的作用,还不如从工作中的实际出发。 面对有志于程序员这个职业的人群,我们给出以下建议: 不乱追新:新书、新技术、新知识,因为基础的东西是经过长时间的积累,在未来十年至少是通用的。 反观历史:分析,并归纳、总结出过去线上技术的发展,做到知古通今 消除惰性:不管例子多简单,都要动手手敲一遍,以免忽略其中的细节。 未来大势所趋:根据经验所知:未来趋势,前端是 Web 移动,后端是 Linux 开源;开发这边基本上可以忽略Windows 。 原因如下: 现在的用户界面几乎只有两个:Web,移动设备 iOS 或 Android,Windows 的图形界面不被看好;越来越多的企业在用成本低性能高的 Linux 和各种开源技术来构架其系统,Windows 的成本太高;微软的东西变得太快,因此不持久。 一、入门阶段 1、 学习一门脚本语言,例如 Python、Ruby,可以摆脱你对底层语言的恐惧感,并且开发出有用的小程序。 2、 用熟一种程序员的编辑器 (不是 IDE) 和一些基本工具,这样可以让你在查看、修改代码、配置文章、日志会更加高效。 3、 熟悉 Unix、Linux Shell 和常见的命令行,你会发现Unix/Linux 比 Windows 简单并且高效。 4、 学习 Web 基础 (HTML/CSS/JS) 服务器端技术 (LAMP) 未来必然是 Web 的世界,学习 WEB 基础的最佳网站是 W3School。 二、进阶阶段 1、 C 语言和操作系统调用 1、用这些系统知识操作一下文件系统,用户(实现一个可以拷贝目录树的小程序); 2、用 fork/wait/waitpid 写一个多进程的程序,用 pthread 写一个多线程带同步或互斥的程序。多进程多进程购票的程序; 3、用 signal/kill/raise/alarm/pause/sigprocmask 实现一个多进程间的信号量通信的程序; 4、学会使用 gcc 和 gdb 来编程和调试程序; 5、学会使用 makefile 来编译程序; 6、IPC 和 Socket 的东西可以放到高级中来实践。 1、写一个窗口,了解 WinMain/WinProcedure,以及 Windows 的消息机制; 2、写一些程序来操作 Windows SDK 中的资源文件或是各种图形控件,以及作图的编程; 3、学习如何使用 MSDN 查看相关的 SDK 函数,各种 WM_消息以及一些例程; 4、这本书中有很多例程,在实践中请不要照抄,试着自己写一个自己的例程; 5、不用太多于精通这些东西,因为 GUI 正在被 Web 取代,主要是了解一下 Windows 图形界面的编程。@virushuo 说:“ 我觉得 GUI 确实不那么热门了,但充分理解 GUI 工作原理是很重要的。包括移动设备开发,如果没有基础知识仍然很吃力。或者说移动设备开发必须理解 GUI 工作,或者在 win 那边学,或者在 mac/iOS 上学”。 2、学习 Java 3、Web 的安全与架构 1、使用 HTML5 的 canvas 制作一些 Web 动画; 2、尝试在前面开发过的那个 Web 应用中进行 SQL 注入,JS 注入,以及 XSS 攻击; 3、把前面开发过的那个 Web 应用改成构造在 Nginx PHP-FPM 静态页面缓存的网站。 4、学习关系型数据库 5、一些开发工具 三、高级阶段 1、C / Java 和面向对象 我个人以为学好 C 、Java也就是举手之劳。但是 C 的学习曲线相当的陡。不过,我觉得 C 是最需要学好的语言了。参看两篇趣文“C 学习信心图” 和“21 天学好 C ” 1、用 C 实现一个 BigInt,支持 128 位的整形的加减乘除的操作; 2、用 C 封装一个数据结构的容量,比如 hash table; 3、用 C 封装并实现一个智能指针(一定要使用模板)。 1、使用工厂模式实现一个内存池; 2、使用策略模式制做一个类其可以把文本文件进行左对齐,右对齐和中对齐; 3、使用命令模式实现一个命令行计算器,并支持 undo 和 redo; 4、使用修饰模式实现一个酒店的房间价格订价策略——旺季,服务,VIP、旅行团、等影响价格的因素; 1、做一个贪吃蛇或是俄罗斯方块的游戏。支持不同的级别和难度; 2、做一个文件浏览器,可以浏览目录下的文件,并可以对不同的文件有不同的操作,文本文件可以打开编辑,执行文件则执行之,mp3 或 avi 文件可以播放,图片文件可以展示图片。 C 和 Java 都不是能在短时间内能学好的,C 玩是的深,Java 玩的是广,我建议两者选一个。我个人的学习经历是: 2、加强系统了解 重要阅读下面的几本书: 1、理解什么是阻塞(同步 IO),非阻塞(异步 IO),多路复用(select、 poll、epoll)的 IO 技术; 2、写一个网络聊天程序,有聊天服务器和多个聊天客户端(服务端用 UDP 对部分或所有的的聊天客户端进 Multicast 或 Broadcast); (编辑:92站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |