1.要成为一名专业的码解程序员,从零开始需要怎么一步步来比较好,码解要把最底层的码解先学精通吗?(个人认为)求学长
2.请问使用最普遍的C++开发工具是什么?
3.CUnit简介
要成为一名专业的程序员,从零开始需要怎么一步步来比较好,码解要把最底层的码解先学精通吗?(个人认为)求学长
前言
你是否觉得自己从学校毕业的时候只做过小玩具一样的程序?走入职场后哪怕没有什么经验也可以把以下这些课外练习走一遍(朋友的抱怨:学校课程总是从理论出发,作业项目都看不出有什么实际作用,码解项目源码免费不如从工作中的码解需求出发)
建议:
不要乱买书,不要乱追新技术新名词,码解基础的码解东西经过很长时间积累而且还会在未来至少年通用。
回顾一下历史,码解看看历史上时间线上技术的码解发展,你才能明白明天会是码解什么样。
一定要动手,码解例子不管多么简单,码解建议至少自己手敲一遍看看是码解否理解了里头的细枝末节。
一定要学会思考,思考为什么要这样,而不是那样。还要举一反三地思考。
注:你也许会很奇怪为什么下面的东西很偏Unix/Linux,这是因为我觉得Windows下的编程可能会在未来很没有前途,原因如下:
现在的用户界面几乎被两个东西主宰了,1)Web,留言系列源码2)移动设备iOS或Android。Windows的图形界面不吃香了。
越来越多的企业在用成本低性能高的Linux和各种开源技术来构架其系统,Windows的成本太高了。
微软的东西变得太快了,很不持久,他们完全是在玩弄程序员。详情参见《Windows编程革命史》
所以,我个人认为以后的趋势是前端是Web+移动,后端是Linux+开源。开发这边基本上没Windows什么事。
启蒙入门
1、 学习一门脚本语言,例如Python/Ruby
可以让你摆脱对底层语言的恐惧感,脚本语言可以让你很快开发出能用得上的小程序。实践项目:
处理文本文件,或者csv (关键词 python csv, python open, python sys) 读一个本地文件,逐行处理(例如 word count,或者处理log)
遍历本地文件系统 (sys, os, path),例如写一个程序统计一个目录下所有文件大小并按各种条件排序并保存结果
跟数据库打交道 (python sqlite),写一个小脚本统计数据库里条目数量
学会用各种print之类简单粗暴的方式进行调试
学会用Google (phrase, domain, use reader to follow tech blogs)
为什么要学脚本语言,因为他们实在是拔网页源码太方便了,很多时候我们需要写点小工具或是脚本来帮我们解决问题,你就会发现正规的编程语言太难用了。
2、 用熟一种程序员的编辑器(不是IDE) 和一些基本工具
Vim / Emacs / Notepad++,学会如何配置代码补全,外观,外部命令等。
Source Insight (或 ctag)
使用这些东西不是为了Cool,而是这些编辑器在查看、修改代码/配置文章/日志会更快更有效率。
3、 熟悉Unix/Linux Shell和常见的命令行
如果你用windows,至少学会用虚拟机里的linux, vmware player是免费的,装个Ubuntu吧
一定要少用少用图形界面。
学会使用man来查看帮助
文件系统结构和基本操作 ls/chmod/chown/rm/find/ln/cat/mount/mkdir/tar/gzip …
学会使用一些文本操作命令 sed/awk/grep/tail/less/more …
学会使用一些管理命令 ps/top/lsof/netstat/kill/tcpdump/iptables/dd…
了解/etc目录下的各种配置文章,学会查看/var/log下的系统日志,以及/proc下的系统运行信息
了解正则表达式,使用正则表达式来查找文件。
对于程序员来说Unix/Linux比Windows简单多了。(参看我四年前CSDN的博文《其实Unix很简单》)学会使用Unix/Linux你会发现图形界面在某些时候实在是太难用了,相当地相当地降低工作效率。如何检查源码
4、 学习Web基础(HTML/CSS/JS) + 服务器端技术 (LAMP)
未来必然是Web的世界,学习WEB基础的最佳网站是W3School。
学习HTML基本语法
学习CSS如何选中HTML元素并应用一些基本样式(关键词:box model)
学会用 Firefox + Firebug 或 chrome 查看你觉得很炫的网页结构,并动态修改。
学习使用Javascript操纵HTML元件。理解DOM和动态网页(Dynamic HTML: The Definitive Reference, 3rd Edition - O'Reilly Media) 网上有免费的章节,足够用了。或参看 DOM 。
学会用 Firefox + Firebug 或 chrome 调试Javascript代码(设置断点,查看变量,性能,控制台等)
在一台机器上配置Apache 或 Nginx
学习PHP,让后台PHP和前台HTML进行数据交互,对服务器相应浏览器请求形成初步认识。实现一个表单提交和反显的功能。
把PHP连接本地或者远程数据库 MySQL(MySQL 和 SQL现学现用够了)
跟完一个名校的网络编程课程(例如:(升级版为Kyoto Cabinet)、Flare、MongoDB、CouchDB、Cassandra、Voldemort等。虚拟源码系统
请问使用最普遍的C++开发工具是什么?
在探讨C++开发工具的广泛选择时,我们需注意到它们各具特色,适合不同需求的开发者。以下是全面的C++开发工具集,涵盖开发环境、辅助工具、程序编辑器、UML/建模、版本控制、XML处理、测试、日志记录与注释生成。
开发环境方面,Turbo C是DOS时代的经典,适合初学者与怀旧的专业人士。Visual C++ 6.0/7.0提供稳定且强大的IDE环境,具备丰富的调试功能与定制宏,是Microsoft的力作。BCB则是功能强大的IDE,速度与稳定性稍逊于Visual C++,但对C++标准的支持较好。Cygwin作为Windows平台下的C++编译器,基于gcc,支持Windows特有的功能,如对winsock的支持。Dev-c++是Windows平台下类似VC、BCB的C++ IDE,界面友好,基于gcc,完全支持STL,但可能难以胜任大规模软件项目。
辅助工具中,Visual Assist在Visual C++ IDE环境下提供编程辅助,识别关键字、函数、成员变量,并自动给出提示,修正大小写错误。Understand for C++则是一款C/C++IDE编程辅助工具,支持反向工程、代码导向与统计功能。
程序编辑器方面,EditPlus是一款功能强大且轻巧的文本编辑软件,支持不同语言的语法加亮,拥有Project组织功能与丰富的自定义功能。Ultra Edit功能与EditPlus相当,通过脚本文件提供配置,但自6.0版后变化不大,自定义设置不如EditPlus方便。EMACS是功能多而复杂的文本编辑器,也可作为程序员编辑器。Visual Slick Edit则是一个功能强大的程序员用编辑器,具备很好的定制功能,自带一套PCODE解释器,与mingw结合使用很方便。IQEdit是一款全功能的程序员用编辑器,界面美观。
UML/建模工具有Rational Rose、Visual Modeler、Visio、Together与Visual UML。其中Rational Rose是强大的建模工具,Visual Modeler是Microsoft Visual Studio 6.0的附带工具,Visio则更人性化,Together与Visual UML则分别以java与多种语言支持见长。
版本控制管理软件包括ClearCase、CVS、VSS与SourceOffSite。ClearCase功能强大,适用于多种文档控制,但使用复杂。CVS是基于Web的分布式协同开发工具,免费且支持脚本定制,但在权限控制方面功能相对较弱。VSS是微软的版本控制工具,适合小型团队,与微软其他工具整合方便。SourceOffSite则是用于远程访问VSS数据库的工具。
对于XML处理,expat是轻巧且速度快的C函数库,支持少量编码方式,但不支持中文。xml4c是IBM的XML解析器,支持多种字符编码,包括中文,适合大规模XML应用。Xerces c++则来自Apache的XML项目,支持少数编码,如ASCII、UTF-8、UTF-等,不支持包含中文的XML文档。
测试工具包括CppUnit、Rational ROBOT与Rational Purify。CppUnit是一个C++的单元测试框架,提供定制测试方案。Rational ROBOT是自动化测试工具,通过脚本提供自动化特性,支持GUI与数据通讯测试。Rational Purify则不需要被测程序源代码,可用于检查内存访问错误与Windows API调用错误,进行可靠性测试。
日志记录工具log4cpp可以将日志内容记录到不同的目的地,如文件、控制台、syslog等,并通过控制记录级别来屏蔽无关记录。
注释生成工具Doc++与Doxygen均支持C++文档生成,但Doxygen功能更全面,能生成多种格式的文档,并提供GUI界面,支持多种编程语言。
CUnit简介
CUnit, 作为一款C语言的单元测试框架,它的出现是对Junit和CppUnit在C++环境成功应用的延续。它以静态库的形式为C语言开发者提供服务,使用起来非常方便,只需要在编写程序时直接链接这个库即可。CUnit的核心是它设计的简单但功能强大的单元测试框架,它特别注重对常用数据类型的支持,通过丰富的断言语句,帮助开发者有效地进行代码的测试和验证。扩展资料
继Junit CppUnit的成功后, c语言环境下也出现了开发源码的白盒测试用例CUnit。CUnit以静态库的形式提供给用户使用,用户编写程序的时候直接链接此静态库就可以了。它提供了一个简单的单元测试框架,并且为常用的数据类型提供了丰富的断言语句支持。