Ⅰ 初级程序员需要看哪些书籍
初级程序员要求用c语言编程,所以不会太难啦,用c于洋方面的书籍就可以了。、推荐阁下阅读《c语言程序员之路》。另外要想过初级程序员,还要有软件基础知识,数据库基础知识,计算机专业英语等等,自己多努力吧。像一本里都又是不太可能的。不要想有什么好办法呀
Ⅱ 程序员入门:如何自学编程
首要之首:不要急于选择一种语言 新手们有一个常见的错误就是犹豫于判断哪种编程语言是做好的、最该先学的。 我们有很多的选择,但你不能说那种语言“最好”。 我们应该理解:说到底,什么语言并不重要。 重要的是理解数据结构、控制逻辑和设计模式。 任何一种语言—甚至一种简单的脚本语言—都会具有所有编程语言都共有的各种特征,也就是说各种语言是贯通的。 我正在攻读我的计算机学学位,我编程使用Pascal,汇编,和C语言,事实上我从来没有把它当成职业以求获得回报。 我一直在自学编程,工作上用不到它,我使用现有的知识,参考各种文档和书本,学习它们的用法。 因此,不要急于选择何种编程语言。 找出你想要开发的东西,使用一种能够完成这项任务的语言,这就可以了。 根据各种开发平台的不同,有很多不同的软件开发形式可供你选择:从网站应用到桌面软件到智能手机软件到命令行脚本工具。 这篇文章里,我将重点介绍一些很受欢迎的入门教程和资源,它们能帮助你学会如何在各种主流的平台上编程开发。 我先假设你是一个悟性很强的读者,但对于新手,当我谈论程序代码时还是要按照入门级的水平。 因为即使是你自己看一篇编程入门手册,如果发现都能理解时,心情自然会很高兴,这样利于你进一步学习。 桌面脚本 想要动手在Windows里或苹果系统里编程,最简单的方法是从一种脚本语言或宏语言开始,例如AutoHotkey(Windows) 或Automator(苹果系统)。 如今一些硬件程序员冲着他们的屏幕大喊大叫,说AHK和AppleScript并不是“真正”的编程语言。 也许他们说的是对的—技术上,这些种类的语言只能做一些上层的编程。 但是对于那些只是想来脱盲、想在他们的电脑里实现一些能自动运行的程序的新手来说,这些语言会是一个绝妙的入门入口—而且你会吃惊于它们丰富的功能。 例如,大家都喜爱的Texter就是Adam使用AutoHotkey开发的能独立运行的Windows应用程序,所以说这种脚本语言远不是只能开发小规模脚本软件。 如果你想从AutoHotkey入手,可以参考Adam的指导:how to turn any action into a keyboard shortcut using AutoHotkey(然后,你可以下载Texter源代码看看这个功能齐全的使用AHK开发的Windows应用程序的内部结构)。 Web开发 HTML 和 CSS:开发网站,你第一件要知道的事情就是HTML(网页就是由它组成的)和CSS(一种让外观更好看的样式标记)。 HTML 和 CSS 并不是编程语言—它们只是页面的结构和样式信息。 然而,在开始开发web应用程序之前你必须要学会如何手工的编写简单的HTML和CSS,web页面是任何webapp的前端显示部分。 这个HTML 指导是你入手的好地方。 javaScript:当你可以通过HTML和CSS构建一个静态页面后,事情就开始变得有趣了—因为到了该学JavaScript的时候了。 JavaScript是一种web浏览器上的编程语言,它的魔力就是能在页面里制造一些动态效果。 JavaScript可以做bookmarklets,Greasemonkey脚本, 和Ajax, 所以它是web上各种好东西的关于因素。学习JavaScript从这里开。 服务器端脚本:一旦你学会了网页里的知识,你就要开始对它添加一些动态服务器操作—为了实现这些,你需要把目光转移到服务器端脚本语言,例如php, Python, Perl, 或 Ruby。 举个例子,如果想要制作一个网页形式的联系方式表单,根据用户的输入发送邮件,你就需要使用服务器端脚本来实现。 像PHP这样的脚本语言可以让你跟web服务器上的数据库进行沟通,所以如果你想搭建一个用户可以登录注册的网站,这样的语言正是你需要的。Webmonkey是一个优秀的web开发资源网站,里面有大量的各种web编程语言的指导手册。 阅读一下他们的PHP 初学者指南。 当你感觉差不多了的时候,看看WebMonkey’s PHP and MySQL tutorial学习如何使用PHP跟数据库交互。 网上最好的要数PHP语言官方的在线文档和函数参考了。 每个知识点上 (例如strlen function这个)都在后面列出来用户的评论注释,这些对于文档的本身是非常有价值的。 (我很喜欢PHP,但还有很多其他种服务器端的脚本语言你们都可以选择。) Web框架:过去数年里,web开发人员在开发动态网站的过程中不得不一遍又一遍的针对重复遇到的问题写出重复的代码。 为了避免这种每次开发一些新网站都会重复劳动一次的问题,一些程序员动手搭建了一些框架,让框架替我们完成重复性的工作。 非常流行的Ruby on Rails框架,作为一个例子,它利用Ruby编程语言,为我们提供了一个专门面向web的架构,普通的web应用程序都能使用它来完成。 事实上,Adam使用Rails开发了他的第一个正式的(而且是叹为观止的!)web应用程序,MixTape.me。这就是他的如何在没有任何经验的情况下搭建一个网站。还有一些其他的web开发框架包括CakePHP(针对 PHP 编程者),Django(针对 Python 编程中), 以及jQuery(针对 JavaScript). Web APIs:API (应用层序编程接口)是指不同的软件之间相互交换的程序途径。 例如,如果你想在你的网站上放一个动态的地图,你可以使用Google Map,而不需要开发自己的地图。The Google Maps API可以轻松的让你通过JavaScript在程序中引入一个地图到你的页面上。 几乎所有的现代的你所知道的和喜爱的web服务都提供了API,通过这些API你可以获取到他们的数据和小工具,在你的应用程序里就可以使用这些交互过来的东西了,例如Twitter, Facebook, Google Docs, Google Maps, 这个列表远不止这些。 通过API把其他web应用集成到你的web应用里是现在富web开发的前沿地带。 每个优秀的主流的web服务API都附带有完整的文档和一些快速入手的指导(例如,这个就是Twitter的)。 疯狂吧。 命令行脚本 如果你想开发一个程序,让它读取文字或文件、输入输出一些有用的东西,那么,命令行脚本语言将是个不错的选择。 然而它并不像web应用程序和桌面应用程序那样有吸引力和好看的外观,但是作为快速开发的脚本语言,你却不能忽视它们。 很多的在linux平台上运行的web脚本同样能以命令行模式运行,例如Perl,Python和PHP,所以如果你学会了使用它们,你将能在两种环境中使用它们。 我的学习道路一直没离开Perl太远,我自学Python使用的是这本优秀的在线免费书Dive into Python。 如果成为一个Unix高手也是你学习的目标,那么你绝对要精通bash这个脚本语言。 Bash是Unix和Linux环境下的一种命令行脚本语言,它能够为你做所以的事情:从自动备份数据库脚本到功能齐全的用户交互程序。 起初我没有任何使用bash脚本的经验,但最终我用bash开发了一个全功能的个人代办任务管理器:Todo.txt CLI。 插件(Add-ons) 如今的web应用程序和浏览器都可以通过一些扩展软件来丰富自己的功能。 由于一些现有的软件,例如Firefox、WordPress越来越受到开发人员的关注,插件的开发也日益流行,人们都在说“But if only it could do THIS…” 只要你掌握了HTML,JavaScript和CSS,你就可以在任何的浏览器里开发你想要的很多东西。 Bookmarklets,Greasemonkeyuser scripts, 和Stylishuser styles这些软件都是用的更普通页面一样的语言写成的, 这几个东西都值得你去研究一些。 更高级的浏览器扩展程序,例如Firefox的扩展,它们可以帮助你很多。 开发Firefox的扩展,举个例子,需要你精通JavaScript和XML(一种标记语言,类似HTML,但具有更严格的格式)。 早在2007年我就写下来how to build a Firefox extension, 这是我在笨手笨脚的研究网上的一些学习资料后获得的成果。 很多免费的、受欢迎的web应用程序都提供了扩展框架,例如WordPress 和 MediaWiki。 这些应用程序都是用PHP写成的,所以只有对PHP熟悉你才能做这些事情。 这个就是如何编写WordPress插件。 而想驾驭Google Wave前沿技术的开发人员可以从使用HTML, JavaScript, Java, 和 Python 写小组件和小工具开始。 我写的第一个Wave bot是跟着这个一个下午时间的快速入门指导开始的。 开发桌面上的Web应用程序 学习编程最好的结果是你在一个环境下学的东西可以应用到另外的环境中。 先学习开发web应用程序的好处就是我们有一些方法可以让web应用程序直接在桌面上运行。 例如,Adobe AIR是一个跨平台的即时运行平台,它能让你编写的程序运行在任何装有AIR的操作系统的桌面上。 AIR应用程序都是由HTML, Flash, 或 Flex 写成的,所以它能让你的web程序在桌面环境中运行。 AIR是开发部署桌面应用程序的一个优秀的选择,就像我们提到过的10个让你值得去安装AIR的应用程序。 移动应用开发 能在iPhone或者Android智能手机上运行的手机应用程序的开发如今正呈现井喷之势,所以你也可以梦想一下如何在iTunes应用商店里通过你的天才程序大赚一笔。 但是,作为一个编码新手,直接奔向移动开发所经历的学习曲线可能会很陡,因为它需要你熟悉高级的编程语言,例如Java和Objective C。 然而,你当然应该看看iPhone 和 Android 编程究竟是什么样子的。 阅读这个简单的iPhone应用开发例子可以初步认识一下iPhone程序的开发过程。 Android 程序都是由Java写成的,这有一个简单的视频教程教你如何开发第一个”Hello Android“程序(注:可能需要代理才能看这个视频)。 耐心,刻苦,尝试,失败 好的程序员都有一个不达目的誓不罢休的品质,他们会惊喜于通过长期推敲和失败换来的一点成绩。 学会编程会有很好的回报的,但是学习的过程可能会是饱受挫折和孤独的。 如果有可能,最好找个伴一起陪你做这件事。 想精通编程,这和其他事情一样,需要坚持,反复尝试,获得更多的经验。
Ⅲ 程序员2008精华本的目录
人物&报道名人堂Perl的舞步迷乱了世界——Perl发明人Larry Wall Ray Ozzie——宇宙中最顶尖的程序员 预测未来不如创造未来——Smalltalk发明人Alan Kay MySpace的灵魂——汤姆?安德森和克里斯?德沃夫 Bit Torrent互联网下载方式的革命——BT之父Bram Cohen 老人与海——IBM首席科学家Frank Soltis博士 程序员中的“钢铁侠” 二十世纪最伟大的企业家与架构师——比尔?盖茨功成身退 Jeff Dean——为Google踩下加速踏板 游戏神话的缔造者——迈克?莫怀米 有梦想精神的企业家与推销天才——Larry Ellison 自由软件之父——Richard Stallman 高端视点软件企业:共同发展的“系统工程” 春天来了,SOA在哪里? 不求国人买国货,但求国货迷国人 SOA与宋词 从伦敦到北京我眼里的软件30年 如何保持低流动率? “软硬兼施”下的IT超移动化进程,准备好了吗? 怎么甄选优秀的程序员? 中国企业信息化之观感 谈PaaS对互联网产业的影响 移动电话——生活的必需品 中国外包的五种模式 TD-SCDMA,繁荣还是消亡 用开放的态度迎接互联网发展新阶段 基于互联网建立组织的基础管理平台 培养管理意识,增强执行力 防病毒没有百分百 开源需要创新 业务软件安全保证——对抗网络犯罪的新技术 建立游戏产业核心竞争力 说清你的需求 共生与兼容 软件外包,中国的机会与挑战 企业信息化的80/20法则 如何成为技术领袖? 以技术大跨越实现经济腾飞 误事的外包 互联网创业成功的要素 做好外包不容易 CPU不要钱,带宽不要钱,软件也不要钱 话说程序员的职业生涯 再论SNS的发展 扩展Scrum? 坚持开放不动摇 中国企业的自信与责任 网络社区新潮流:社交化、细分化、娱乐化 人物专访 玩转依赖注入——专访依赖注入库Guice之父Bob Lee 面向动态语言的IDE策略——CodeGear公司CEO Jim Douglas专访 .NET垃圾收集器的过去现在和未来 打造最强大的Ruby on Rails开发团队——ELC Technologies公司CEO Lex Sisney专访 让互联网的魔法之光照亮中国——专访W3C全球商务经理Mauro Nunez 从拍脑门到数据决策——缔元信CTO杨海访谈 豆瓣的架构 掌握“精益”思维,提升软件工艺——专访ThoughtWorks中国区总经理 郭晓 数据库技术就像陈年的酒,越老越香——记Fancy的数据库写意人生 我认为这是“白日梦”——Donald Knuth访谈录 对话Martin Fowler与Roy Singham——第三届“敏捷中国”技术大会专访 Scott Guthrie谈Silverlight 中国的图灵之路 把握我们的优势——漫谈中国企业管理软件 PHP之父访谈录 打造360度的安全保护伞 “盛大在线”关键词:开放——专访盛大在线CTO梁建武 CTO是怎样炼成的——专访盛大游戏CTO朱继盛 具有实践精神的理论家:我们时代的达芬奇——高德纳访谈录 开源业务模型已经成熟——Sun软件执行副总裁Rich Green谈开源战略 重建微软成功模式——专访微软展现层平台与工具总经理Ian Ellison-Taylor 行业软件开发纵横谈——专访汉星天(中国)公司中华区CTO刘开阳 推开云端计算的视窗——微软互联系统部门全球副总裁Robert Wahbe揭秘Azure服务平台 张亚勤:成功人要有五个素养——《微软360度,成功与成长》图书节选 特别报道用户为本:浏览器的生存之道 浏览器:向Web标准看齐 山雨欲来——细述移动互联网之手机浏览器 Monetization——MIX 08随感 火花、火种、火炬——中国软件外包企业创新观察 谁是最受程序员欢迎的雇主?——CSDN 2007年度最受程序员欢迎雇主评选揭晓 良禽择木而栖——《程序员》& CSDN“程序员发展指数大调查”分析报告 ThoughtWorks University取经记 拒绝盲人摸象——从指数看技术发展大势 创业之路 从Google收购DoubleClick谈起——我的追梦之旅 回首十年——从程序员到CTO 译言:传播和分享集体的智慧 我们喜欢做减法——亦歌播放器创作团队专访 像看在线影音一样使用软件——专访云端软件平台创始团队 做用户真正需要的软件——专访IE伴侣创作团队 做电子表单领域的YouTube——专访KELEX电子表单创作团队 成功创业占目标优先级第3位——访Screen Anytime创作人 访软件创新作品狂雷视频平台主创团队 让电脑如积木般灵活——专访积木在线电脑创作团队 观点写SOP就是写程序 程序员心中的许三多 视而不见需求 迎接外包产业新纪元 石光荣,黑客帝国,社会化网络——社会化网络能否平衡抽象主导的现代生活? 软件考古学 老成员和骨干成员应当怎么管理? 实践出真知 宫本茂的童心和乔布斯的叛逆——设计哲学背后的文化基因 移动+社会化:软件的美丽新世界 大团队的敏捷开发 招聘的艺术 软件的病态性肥胖 从平台锁定到服务黏性——软件的交付模式变迁 世世代代当长工 “言程序”软件的在线市集 Erlang:世界是平行的! 回顾:OpenSolaris 2008.05 做职业化的软件工程师 基类与愚公移山 朋友们,让我们把心放下 让校园技术社团长久发展 GUI的开发瓶颈 北极星与系统架构 血性与狼性,产品经理与团队的塑造 拉平的世界与站在十字路口的商务智能技术 GUI的开发方式 开发者社区:规模产生价值 Web不是平的 SaaS风暴来袭 Linux圣战:序幕 不登长城,不知序为何物 更适合中小企业的Linux 定时不定量 “无穷大”与“老鼠会” 封面报道移动开发,第三次浪潮 迎接IT第三波:移动时代 创新源于兴趣——Andy Rubin独家专访 Android组件模型评析 永远在线,分享一切——迎接Mobile 2.0时代的来临 用Android开发手机应用 Android中的XMPP应用 OpenMoko,解放你的手机 Windows Mobile加速企业工作流应用 技术盘点2007 2007中国软件业的分水岭 自由之剑再次升级——2007年自由软件运动评述 Web技术2007盘点 回顾企业软件2007,面向服务、面向交互 2007 Java技术回顾与展望 微软2007技术回顾 乱花渐欲迷人眼——回顾动态语言的2007 软件工程发展趋势分析2007主流数据库产品回顾与展望 机遇与竞争并存——2007年的嵌入式市场 2007信息安全技术与产业大盘点 2008年开发者的新挑战 2007的10个焦点 寻找程序员职业上升的通道 苹果是怎么吃到的?——职业规划,从了解自己开始 迈向系统架构师 程序员之路 创业规划的六个关键词 每个人都是自己的CEO 以业务为核心的行业专家 从“程序员”到“行业专家” 专注 职业规划一家谈 微软2008攻略——写在微软三大产品发布时 迈向更大规模的服务器 打造企业级数据库 新开发工具的高峰 Windows Server 2008新特性及企业亮点 更大规模IT应用的运行平台Windows Server 2008 SQL Server 2008更上一层楼 快速缔结数据与业务纽带的SQL Server 2008 Visual Stuodio 2008一览 体验微软新一代Web开发平台 微软三大产品采购意向调查 下一代互联网竞争格局 跨越鸿沟——Adobe的RIA战略 改造微软DNA——布局未来互联网的下一个奇迹 谷从何来,歌向何去——Google产品策略分析调查:下一代互联网鹿死谁手? 2008开源在中国说不尽的开源——记“开源在中国2008”研讨会摸着石头过河——记开源社区huihu.org 莫等闲,抬望云和月 从一封信说起——记姜太文博士和他的XOOPS项目比开源更自由的存在——哲思自由软件社区专访解密淘宝网的开源架构 自由软件和新浪网 项庄舞剑,意在沛公?——评国际软件巨头的开源策略 大企业如何助力开源让漫天繁星在指尖随心闪耀——专访开源专家马越开源商业模式介绍 与开源共成长ZK创始人叶明宪的开源进行时开源者说——一个开源项目贡献者的自白开源离我们有多远——中国开源现状调查开源授权协议(License)初探 一个程序员谈开源 OpenAPI解读互联网新趋势OpenAPI出现、起源与现状把握互联网的下一次趋势——“中国互联网的OpenAPI”研讨会选录 当SNS遇见OpenAPI 全世界的信息,联合起来!OpenSocial简介AWS和GAE简介中国“开放平台”和“OpenAPI”调查分析 互联网暗潮汹涌,开放平台机遇空前——浅析开放平台发展趋势的若干问题 OpenAPI的系统架构与运营 OpenAPI会带来中国SNS网络的开放文化吗? 令地图无处不在——51ditu API 三十年河东 三十年河西——汶川地震信息汇总的OpenAPI实践SAAS 2008中国进行时 建设SaaS的高速公路——“中国SaaS运营”研讨会纪要 重新认识SaaS本质 SaaS的核心——服务 打造一条SaaS开发的生态链 浅析中国的SaaS用户 SaaS:中小企业信息化的捷径SaaS成熟度模型浅析 SaaS可信平台的搭建 从XToolsCRM谈构建安全SaaS构架与互联网共舞的SaaS PaaS展望未来的软件交付模型阿里软件借SaaS开创蓝海——10亿风险投资培育市场软件工程四十年四十年软件工程故事 软件的未来 以实践为本,集百家之长关注软件工程的国际标准和人才标准 软件工程与管理思想 软件工程未来发展趋势从软件开发看中美文化的差异软件工程的进化论 枪与玫瑰——三五个人十来条枪的软件工程实践软件质量是生产出来的 软件工程中的敏捷实践 肩负历史使命的IE 8 IE历史技术分析IE 8安全特性 IE8应对互联网新挑战——访微软资深商业产品经理:Ryan A. Servatius Chrome产品经理Brian Rakowski访谈 Chrome光芒背后的秘密——Google Chrome浏览器源代码初探 Mozilla——在雷火中永生的怪兽为何微软对IE 8“又爱又恨”——专访傲游公司首席执行官陈明杰 “柔道”战略解析Google战胜微软三部曲——专访奇虎董事长周鸿祎山雨欲来风满楼——云计算趋势一览 自由软件的云计算观——专访自由软件之父Richard Stallman 泛谈云计算的发展之路 何来云计算?——IBM Tivoli软件总经理Alfred Zollar专访云计算推广的是互联网新理念——专访Google中国研究院副院长张智威云计算还处于初级阶段——专访群硕软件技术总监邵荣漫谈云计算 静观云卷云舒——Force.com云计算解析Google构建我们身边的云计算 IBM云计算和政府云平台 云深不知处——大规模分布式云计算方案详解云计算中的存储 向金融海啸宣战 经济变局下的中国软件产业七大趋势 金融危机下本土软件厂商更具竞争优势 金融海啸对中国IT培训业的影响 用“坚持”抵御风险用“变革”应对危机互联网公司如何应战全球“金融海啸” 严冬中捕获暖流——汇众益智的危机观 阿里软件用SaaS为中小企业“破冰” 经济危机与互联网双阴影下的IT出版实践&架构实践 网站类产品版本升级计划和控制 我看CMMI 为什么应该保留TOP 10 风险列表?白话CMMI 加班赶工,得不偿失——历史给你上六课例说精益思想 略谈项目风险界定 CRTL:游走于技术与业务之间——记趋势科技中国区网络安全监测实验室HTTP协议之前世今生——兼谈网络应用结构设计高性能网页开发新20条规则详解频繁更换结对之惑 风雨创业路——关于Web2.0站点的误区和建议 在矩阵里遨游的鱼 从美式Scrum说起一家美国公司的Scrum敏捷项目记要与思考搭上MySpace聚友这班车RAF指标在量化项目管理中的应用 网站运维之道 如何抢夺欧美外包订单?——以TEC主导欧美外包项目竞标 爱敏捷,爱自由初探行为驱动开发 对日软件外包开发中的双PM模式团队作业在大型软件测试中的应用 乘时间机器,看敏捷旅程2009年10大战略性技术 初探Rhino Mocks框架 实践云计算——基于Amazon Web Services的在线交易应用 精益软件开发中的“库存” 软件工程战地手记 敏捷是另一颗银弹吗? 只需要一份需求 有关敏捷的若干思考 需求分析 如何做好需求收集 用例有粒度吗 搭建企业的需求收集平台CMMI帮你做需求 故事卡以外的故事:敏捷需求协作老图新说话需求业界需求管理工具应用情况调研 需求捕获中的“心理战”需求沟通中的“干坤大挪移” 开发故事 开源项目成功三要素兴趣、坚持、社区 两万工作人日软件的诞生——记用友A8产品的开发过程 奉献,分享,开放——记北京Linux User Group 揭秘Windows医生Mister Wong团队如何应对Logo风波因为信任,所以简单——专访支付宝架构师团队ThoughtWorks University取经记——技术真经篇 架构 从奥运订票系统瘫痪说起——谈FastCGI与IT架构.NET平台网站架构调优实践点滴 SecondLife架构剖析 做人、做事,做架构师——架构师能力模型解析又拍网(Yupoo!)技术架构初探大规模服务设计部署经验谈 浅谈Web图片服务器 Web架构师的能力 炫目的敏捷架构师 写给Web2.0站长,不仅仅是泼冷水谈谈体育比赛的图文直播 谈SOA架构中使用Cache的过程 SaaS进销存系统实战架构分析 大型网站架构演变和知识体系 平衡的艺术——从菜鸟到架构师服务器负载均衡架构之传输层负载均衡——服务器集群的高扩展性和高可用性技术专区Boost.Function内核剖析面向对象与泛型编程矛盾论——类型擦除技术在C++中的应用C++平淡是真——写在Stroustrup博士荣获DDJ Excellence in Programming 2008之际 闲侃分析和设计透过概念看到本质手持设备的实时3D图像 游戏程序中的骨骼插件游戏开发中的Scrum和长期项目规划 游戏中的状态机利用GPU进行高性能数据并行计算 iPhone和iPod Touch上的OpenGL ES技术从程序员的角度看CacheAdobe AIR平台的新世界:桌面与Web的大一统 从JFace Viewer框架看Eclipse的Pluggable Adapter模式 小议JavaScript库——Dojo、jQuery和PrototypeJS的比较让你的RCP应用程序运行在B/S架构上 安全编码实践:数据页面保护 Web安全开发:SQL注入攻击和网页挂马 跨站脚本XSS安全漏洞 初识Xquery Java前沿——Bill Shannon和Roberto Chinnici访谈录初探OSGi 在大型遗留系统基础上运作重构项目 从关系数据到树形数据 从GC的角度看性能优化 设计即代码——MDA开发实践 敏捷与性能的博弈——Ruby on Rails Web development回答关于REST的十点疑问 谈谈网站静态化Facebook应用开发之旅 函数编程之风云再起Python性能优化经验谈面向语言编程——面向对象之后的革命多核时代,Erlang的时代 自由软件运动:从创世纪到GNU GPL version 2 开源数据库Sharding技术 思考函数式编程 关于“思考函数式编程”几点注记Python中泛型函数应用案例 算法擂台 《时间表达》解答 Cantor表解答 Cantor表与Kolmogorov复杂度 浅谈算法学习 采访侧记 微积分习题解答《网友聚会》解答 计算机围棋新构想——专访“深蓝”之父许峰雄 《反转棋盘》解答 《溢水鱼缸》解答 《支援救灾》解答 蒙特卡罗方法在计算机围棋中的应用计算机围棋夜话调试之剑调试:通向高手之路——调试之剑主持人访谈录举步维艰——如何调试显示器点亮前的故障 权利移交——如何调试引导过程中的故障程序员百宝箱工具 Rails 2.0 新特性之View&Route浅析ActiveResource Rails 2.0中的调试 NIO网络开发设计实践 基于MINA构建简单高性能的NIO应用高性能的HTTP引擎——Grizzly主流源码版本管理工具的特色浅析ClearCase应用实践 交叉应用——软件配置管理与知识产权审计 CVSTrac缺陷跟踪系统 从SVN Trac开始中小团队项目管理之路 通过ODP.NET 11g用Oracle Advanced Queue进行消息编程 白话工作流发展史开源工作流平台jBPM:过程组件模型与PVM关于WF的一些思考 基于业务模型的工作流 EOS中的工作流 做减法的二次开发平台 冬眠中的Erlang Erlang项目概览Web服务器Facebook的聊天系统 Jazz开发实践Jazz产品评测感受 无废话Erlang Erlang与Web开发 ErlyBird作者访谈录——Erlang开发环境和应用前景自己动手写IDE——NetBeans上Scala支持的实现 移动开发新势力 Android Market模式的3G视角 程序之眼看iPhone 众人拾柴火焰高——Moblin的发展之路 Scrum管理工具赏析 敏捷团队协作的加速器——MingleScrumWorks,让Scrum更敏捷 企业级虚拟化“硝烟四起” VMWare VI3——企业级虚拟化的标杆 来自微软的反击——Microsoft Hyper-V开源社区带来新天地——Xen与XenSource应用 话说IT治理 国土资源调查项目案例SOA的企业实践从何而起 开源项目推荐 Xinc: 2.0 alpha version AJAX轻量级应用框架BuffaloHyperic HQ企业产品监控程序AJAX富客户端web应用框架ZK FunFX 网上商店系统ECSHOPehcachexRuby jNetStream Protocol Decoder XAMPP WinSCP MediaCoder Concrete5 Notepad++ Shareaza EasyJWeb 创新项目推荐 书评 2007年度图书:技术趋势晴雨表 Head First设计模式——Head First Design Patterns SOA权威指南The Definitive Guide to SOA从细微之处见大师精神——评《C陷阱与缺陷(第二版)》 说说《HTML之路》这本书 优秀程序员的警示牌 ActionScript 3书评 Flex三味书屋——我喜欢的三本Flex图书 新产品&工具
Ⅳ 程序员之路是怎样的
说说我个人和朋友的经历与感受。
一般一个行业最终大致有三种结果:
1、成功:
本身兴趣就是编程(或则有过人的毅力一直坚持,并有一定的天赋,否则太累了),那么多半会做的很开心,然后拿着一份相对丰厚的薪水,大概的职位就是高级工程师,技术经理,技术总监,CTO,甚至做老板。
2、普通:
这个是多数人的路,兴趣一般,或者有兴趣但很懒。做的不算开心,也没有不开心。薪水还可以吧,普通人嘛,过着简单的日子,温饱没问题。运气好一点,还能稍微滋润点。大概的职位,高级工程师,工程师,程序员,项目经理。
3、失败:
如果没有天赋,或者又不努力,成天做梦一样活着,或者说没有毅力,或者自以为是的认为,程序就那么点东西,一窝蜂的走进这个领域,那么结果就是,什么都不是,什么都没有。很难进步,数十年如一日。将就着不会饿着。薪水少到,不如去筛沙,搬砖头。最终忍下来了,就憔悴的生活。大致的职位,程序员,码农,码畜。要是运气好点,也许能做某个小公司的小头目。熬不过去,就转行。
周围很多人都这样,什么路的都有。
你有兴趣,做的开心,就潇洒轻松很多, 再勤奋一点,会出头的。
没兴趣但有毅力,也可以。
如果既没什么兴趣,也没什么毅力,转行吧。会深陷泥泞疲惫不堪。
这条路,不好走。要会的技术多 ,总要追新,IT行业更新很快。
其实,如果没有明确的目标,过人的毅力,最好是找一群志同道合的伙伴一起走这条路。
如果什么都拿不准,就尝试一下吧,人生有很多种可能,哪一种都未必错,试过了才会知道,自己是否适合。
Ⅳ 我该怎么走我的程序员之路
东西学到了才是自己的。首先很佩服你能自学编程,因为我是个计算机专业大四的学生,但编程学的不咋的,学好编程还是有一定难度的。想从事编程就去呗。现在这个社会,50% 的大学生出来从事的不是自己的本职专业,首先是因为高考填志愿好多都是不了解这个专业,进入大学才发现自己根本不喜欢,其次也是在大学没学好自己的专业。但学好了其他的本领也是一样的赚钱找工作的呀!公司招聘也一般不会严格要求说是要相关专业,岗位——有能者居之。而且像编程这行业要求的是实际能力,也就是你的动手能力!你想从事这行业的话,建议你有机会先去实习,或是在学校参加编程之类的比赛,找找项目做,这个可以让自己有比较快的提高~!记住:做自己想做的,可以更快更容易的成功!
以上是我的一点认识,希望对你有所帮助!
Ⅵ 程序员之路 对于一个程序员应该怎样发展
先当程序员,好好工作个5年,再打算怎么办。计划跟不上变化,一定要先打好基础。
Ⅶ 程序员之路怎样走(自学成才的进来)
给C++初学者的50个忠告
1.把C++当成一门新的语言学习(和C没啥关系!真的。);
2.看《Thinking In C++》,不要看《C++变成死相》;
3.看《The C++ Programming Language》和《Inside The C++ Object Model》,不要因
为他们很难而我们自己是初学者所以就不看;
4.不要被VC、BCB、BC、MC、TC等词汇所迷惑——他们都是集成开发环境,而我们要学
的是一门语言;
5.不要放过任何一个看上去很简单的小编程问题——他们往往并不那么简单,或者可
以引伸出很多知识点;
6.会用Visual C++,并不说明你会C++;
7.学class并不难,template、STL、generic programming也不过如此——难的是长期
坚持实践和不遗余力的博览群书;
8.如果不是天才的话,想学编程就不要想玩游戏——你以为你做到了,其实你的C++水
平并没有和你通关的能力一起变高——其实可以时刻记住:学C++是为了编游戏的;
9.看Visual C++的书,是学不了C++语言的;
10.浮躁的人容易说:XX语言不行了,应该学YY;——是你自己不行了吧!?
11.浮躁的人容易问:我到底该学什么;——别问,学就对了;
12.浮躁的人容易问:XX有钱途吗;——建议你去抢银行;
13.浮躁的人容易说:我要中文版!我英文不行!——不行?学呀!
14.浮躁的人容易问:XX和YY哪个好;——告诉你吧,都好——只要你学就行;
15.浮躁的人分两种:a)只观望而不学的人;b)只学而不坚持的人;
16.把时髦的技术挂在嘴边,还不如把过时的技术记在心里;
17.C++不仅仅是支持面向对象的程序设计语言;
18.学习编程最好的方法之一就是阅读源代码;
19.在任何时刻都不要认为自己手中的书已经足够了;
20.请阅读《The Standard C++ Bible》(中文版:标准C++宝典),掌握C++标准;
21.看得懂的书,请仔细看;看不懂的书,请硬着头皮看;
22.别指望看第一遍书就能记住和掌握什么——请看第二遍、第三遍;
23.请看《Effective C++》和《More Effective C++》以及《Exceptional C++》;
24.不要停留在集成开发环境的摇篮上,要学会控制集成开发环境,还要学会用命令
行方式处理程序;
25.和别人一起讨论有意义的C++知识点,而不是争吵XX行不行或者YY与ZZ哪个好;
26.请看《程序设计实践》,并严格的按照其要求去做;
27.不要因为C和C++中有一些语法和关键字看上去相同,就认为它们的意义和作用完
全一样;
28.C++绝不是所谓的C的“扩充”——如果C++一开始就起名叫Z语言,你一定不会把C和Z
语言联系得那么紧密;
29.请不要认为学过XX语言再改学C++会有什么问题——你只不过又在学一门全新的语
言而已;
30.读完了《Inside The C++ Object Model》以后再来认定自己是不是已经学会了C++;
31.学习编程的秘诀是:编程,编程,再编程;
32.请留意下列书籍:《C++面向对象高效编程(C++ Effective Object-Oriented
Software Construction)》《面向对象软件构造(Object-Oriented Software
Construction)》《设计模式(Design Patterns)》《The Art of Computer Programming》;
33.记住:面向对象技术不只是C++专有的;
34.请把书上的程序例子亲手输入到电脑上实践,即使配套光盘中有源代码;
35.把在书中看到的有意义的例子扩充;
36.请重视C++中的异常处理技术,并将其切实的运用到自己的程序中;
37.经常回顾自己以前写过的程序,并尝试重写,把自己学到的新知识运用进去;
38.不要漏掉书中任何一个练习题——请全部做完并记录下解题思路;
39.C++语言和C++的集成开发环境要同时学习和掌握;
40.既然决定了学C++,就请坚持学下去,因为学习程序设计语言的目的是掌握程序设
计技术,而程序设计技术是跨语言的;
41.就让C++语言的各种平台和开发环境去激烈的竞争吧,我们要以学习C++语言本身
为主;
42.当你写C++程序写到一半却发现自己用的方法很拙劣时,请不要马上停手;请尽
快将余下的部分粗略的完成以保证这个设计的完整性,然后分析自己的错误并重新设计
和编写(参见43);
43.别心急,设计C++的class确实不容易;自己程序中的class和自己的class设计水
平是在不断的编程实践中完善和发展的;
44.决不要因为程序“很小”就不遵循某些你不熟练的规则——好习惯是培养出来的,而
不是一次记住的;
45.每学到一个C++难点的时候,尝试着对别人讲解这个知识点并让他理解——你能讲
清楚才说明你真的理解了;
46.记录下在和别人交流时发现的自己忽视或不理解的知识点;
47.请不断的对自己写的程序提出更高的要求,哪怕你的程序版本号会变成Version
100.XX;
48.保存好你写过的所有的程序——那是你最好的积累之一;
49.请不要做浮躁的人;
50.请热爱C++!
C++的书
1. 《Thinking In C++》
2. 《The C++ Programming Language》
《Inside The C++ Object Model》
3. 《The Standard C++ Bible》(中文版:标准C++宝典)
4. 《Effective C++》
《More Effective C++》
《Exceptional C++》
5. 《程序设计实践》
6. 《Inside The C++ Object Model》
7. 《C++面向对象高效编程(C++ Effective Object-Oriented Software Construction)》
《面向对象软件构造 (Object-Oriented Software Construction)》
《设计模式(Design Patterns)》
《The Art of Computer Programming》
Ⅷ 成为程序员之路,改从学习什么开始起步
你想做什么样的程序员?
程序员没有什么神秘的,在一软件完整的开发过程中程序员只是软件工人,做大熟练的工作.从开发的角度看,最高级应该是系统分析员之后是软件设计师之后是程序员.首先得分析,分析出模块开发的进度等等,之后是分别设计,设计出相应的代码模块,数据结构,基类等等,最后是程序员按要求做一些已做好的重复性的工作,就像吃人家嚼过的东西一样.
但是程序员的工作也很重要.但是一般一个好的软件设计师可以取代程序员的工作.
不管是系统分析员也好,软件设计师也好,都是从程序员开发的.
程序员可以分为很多种,像Unix程序员、Windows程序员,或是C++程序员、Delphi程序员,等等。
我是一名Web程序员:
我知道Asp、Jsp,会做网站、会做bbs,这应该叫Web程序员了吧。确实,我承认,这些技术是一名Web程序员应该具备的;但是,你如果仅懂得这些,却只能叫做Asp程序员、Jsp程序员,而不是真正意义上的Web程序员。现在的世界是属于Internet的,大部分的应用基于Internet,大家可以想想,像Yahoo、Microsoft、Amazon那样的网站,其访问量之大、应用之复杂,需要什么样的技术才可以支撑,难道仅仅是硬件的功劳么。
我想在Windows平台下来谈谈Web程序员应该掌握的技术
1. 首先,就是上面提到的各种脚本,asp、jsp、php等等,这些东西大同小异,基本可以举一反三。
2. 数据库,
相信做Web的人肯定用过,像Access、Sql Server、Oracle。很多人会用各种数据库,但是仅限于写一些sql,select、update、insert,用ADO来操作,如果这样,就算会用100种数据库又有什么用呢?
至少熟练掌握两到三种开发工具的使用,这是程序员的立身之本,其中C/C++和JAVA是我重点推荐的开发工具,C/C++以其高效率和高度的灵活性成为开发工具中的利器,很多系统级的软件还是用C/C++编写。而JAVA的跨平台和与WEB很好的结合是JAVA的优势所在,而本人对SUN公司的“网络即计算机”的概念相当欣赏,并相信JAVA即其相关的技术集JAVA One会成为未来的主流开发工具之一。其次,如果能掌握一种简便的可视化开发工具,如VB,PowerBuilder,Delphi,C++ Builder,则更好,这些开发工具减小了开发难度,并能够强化程序员对象模型的概念。另外,需要掌握基本的脚本语言,如shell,perl等,至少能读懂这些脚本代码。
Ⅸ 程序员之路如何实现,请列的清单。就是实现程序员的规划列表。
少壮不努力,长大做IT。 另外兄弟如果真的想要做IT的话,劝你做C++或嵌入式,别做java或.net,不解释,过来人的经验之谈。
Ⅹ 怎么样才能学好C语言
如果是初学C语言请看完 一些成功人士的心得
第一个要装进行囊和你一起前进是“规范的格式”,有很多教科书,参考书,不太注重程序的格式的问题,写出的程序就象一堆堆的垃圾一样,这也导致了现在很多人写的程序中有很多的废码,垃圾代码,这和那些入门的书有非常大的关系,要把那些作者都拿来打打PP。真正的商业程序绝对是规范的,张三写的程序和李四的程序格式大致相同,各种标识符的命名规则一样,否则谁也看不懂你写的程序。如果写出来的代码谁也看不懂,那绝对是垃圾。如果要把那些垃圾翻半天,勉强才把金子找出来,那这样的程序不如不要,还不如重新写过,这样,思路会更清楚一点。所以说,规范的格式是入门的基础。那这个规范的格式包括什么呢?不少啊,要坚持才能做到!长标志符命名,代码缩进,一对大括号范围不超过一屏幕,等等。
第二个要装进行囊的是耐心,所谓工欲善其事,必先利其器。要想成功,没有一个相对平淡的过程是不可能的。这不仅仅指你在学习过程中要有耐心,要循序渐进,而起也说的是另一个重要的方面:调式程序。调试是写程序过程中一个重要的方面,如果有人能一次写成程序,牛啊,而且是大牛,不光是大牛,还是老子骑的那头青牛,凡人是做不道的!调试是每个程序必定经历的历程。经常有同学问我:老师,我的程序完全没错误啊,都是照书抄的啊!怎么就运行不出来呢?对于这个问题我也看不出来!你们有问题可以找我,找其他的老师,老师找谁啊?李师父?那是很荒谬的!我就只好坐下来调试,这个说实话,调试是很枯燥的,所以有同学抱怨说我操作太快,不理解为什么要这样,为什么要那样,我的脾气不太好,一烦躁就会骂人地,所以,这个就需要你们自己修炼内功了!
有了这两个就可以了,可以出发了,估计有人说了,英语和数学不要了?大家都说大学生了,这种问题就不要问了嘛!你已经用早晨和傍晚的时光学习了英语了,我这个没有要去,计算机专业英语超简单,小学水平而已,记住一些专业词汇就可以了!关于数学,说数学好,写程序就好是没有科学根据的!我就有个同学,数学回回100分,写程序也就是hello world的程度,不过人家现在是数学博士了!惭愧啊!做为的大学生,而且是我们这个专业的大学生,已经完全具备了写程序所需要的数学素养了!所以这个不是我们要担心的,Ready? Go!
第一招,学什么呢?打狗棍法!呵呵
有一个伟人说过:“重复权威是成熟的必经之路”,这是站在巨人的肩膀上的做法,习武之人首先要学的都是各种套路,比方说辟邪剑法,然后才能融会贯通,开宗流派;我们学习写程序也要这样来,这是一个捷径,帮你走得更远得捷径。
看书,看好书!书中所写,是前人数十年经验所写,看十本书,就相当于汲取了前人数十年的功力,那么你的内功也会迅速上升1甲子。:)书当然要看好书,只有好书才营养丰富。要做到读书破万卷,编程如有神;枯燥的看书是很郁闷的,很容易变成化石!现在很多是书都是用源码说明问题的,源码就像是动画、就像是幻灯片,把书中的招式一一演练给你看。可以说高手的经验大都是源自代码,最后也都化成源码展现在大家面前,把书上的程序一个一个的输入(用键盘,用你的手指)到电脑中,编译运行。自己手工输入这一步不能省略,现在很多书有配套源码,很多同学或者成年人学习的时候都耍小聪明,直接把源码复制过去编译运行,hoho, 这是没有效果的。
自然,我让你输入程序不是让你练习盲打,你在输入的过程就可以品出程序的好坏来了,如果发现自己输入了很多重复代码,那至少这个程序的结构就不好了,穷则变,变则通嘛,你就想改进它啊,这不是很好吗?
当然,程序输得多了,盲打功力也上了一个台阶,键盘敲得快了,薪水也跟着涨上去了!^_^
不过,键盘敲得快不代表你的程序就写得好,否则学校只要每个学生发一份盲打联系软件,四年毕业后,个个都是程序高手了!
好了,你输了一个程序进电脑了,锻炼了手部肌肉,也运行出了结果,愉悦了身心,就此满足了?那离高手还远呢,要变成高手,你还要锻炼一下你得脑部肌肉!拿起你得笔,拿起你得纸,用你得大脑,这号称世界上最精密的机器来运行你输入的程序,记录下不同运行时刻变量的值,记录下程序的运行分支,最后发现,这个程序被你解剖到了纸上,我相信也解剖到了你的心里!这是捷径的核心,一定要记住,输入的程序不是说正确运行就完事了,要去阅读一下代码,利用笔和纸做辅助工具,做一下笔记,这就是重复权威 ,当然,如果你是天才,那请你塞上耳朵,你不在我们讨论的范围之内!
为什么这一步很重要呢?
大家刚开始学习的时候,是不是有种感觉,如果让你写一个程序,你从哪里下手呢?前面?后面?上面?下面?为了解决这个问题,我的程序该如何写呢?抓耳挠腮,好烦啊,于是乎干脆睡觉去,不写了,你看,这种行为是要打PP的!
练武功,总是先重复师父的动作,才能有自己的动作,所以也让我们重重复别人写的程序开始,然后再写自己的程序吧!
遵循这个方法,你们就跟着组织走上了通往罗马的大路了!
接下来,你得走啊,不走怎么到罗马呢? 把你学会的程序设计方法应用到你写的程序中去啊!
某天,你看到这里有个问题,你有了想法,怎么办?上机去,和键盘奋战去!stop, stop! 暂停一下,上机之前,不要忘记了你的笔和纸,勇敢地把你的想法写下来,如果写不出来,就不要去机房浪费爸爸妈妈的血汗钱了!
当然,你不能乱写啊,写出来的东西怎么样才叫不是乱写的呢?实践是检验真理的唯一标准!用你的大脑去运行一边啊,不是叫“人程序合一”嘛?,这就是了!学武功就要学绝世武功!虽然号称最精密,实际效果上,人脑还是没有电脑的准确度的,如果你的大脑能马马虎虎地运行出来之后,那么OK,带上规范的格式和耐心,去上机吧!
自然,我们说一天到晚面对字符界面的TC是有些郁闷,大家都习惯了windows,微软的客户体念设计中心可不是吹出来的!windows多好,色彩斑斓的。当你修炼到我这个程度的时候,非要听这京剧才文思泉涌的写程序的时候,当然要用windows下的集成开发环境了。但是对大家来说,不是现在,windows是很危险地,程序员还是回到TC中去吧!
TC至少有一个好处,可以锻炼我们使用组合键的习惯,可以锻炼我们使用键盘编程的习惯,回想我们刚刚说的梁某说的话“用鼠标怎么编程呢?”有同学不免要提出疑问了,我是80年代甚至是90年代生人,你还让我面对那么枯燥的输入输出界面?我跟你有代沟!我期待有更丰富更吸引人的交互手段
哦,这个问题问得好,C语言中也有图形啊,完全可以满足大家寓教于乐得心理!让我们来看这个程序,很简单,就是在屏幕上话一个周期得正弦波!
(参见ppt......)
运行效果是不是很好?你学数据结构的时候,树啊,图啊,你都可以这样输出啊,很多地方你都可以做的更好呢!
好了,到这里,我们基本解决了在学习C语言程序设计时的一些方法论的东西,关于具体的学习过程,如果你要我在这里给你们讲指针要如何学习?函数要如何学习?那我讲的内容也不会多于任课老师的内容,或者开个专题叫“如何学好指针”,当然,如果你愿意和我探讨一下指针的本质和高级应用的话,课后,课后啊!
学习C语言不是一朝一夕的事情,但也不需要花费十年时间才能精通。如何以最小的代价学习并精通C语言是本文的主题。请注意,即使是“最小的代价”,也绝不是什么捷径,而是以最短的时间取得最多的收获,同时也意味着你需要经历艰苦的过程。
一、要读就读好书,否则不如不读
所有初学者面临的第一个问题便是:如何选择教材。好的开始是成功的一半,选择一本优秀的教材是事半功倍的关键因素。不幸的是,学校通常会帮你指定一本很差劲的C语言课本;而幸运的是,你还可以再次选择。
Kernighan和Ritchie的《The C Programming Language》(中译名《C程序设计语言》)堪称经典中的经典,不过旧版的很多内容都已过时,和现在的标准C语言相去甚远,大家一定要看最新的版本,否则不如不看。另外,即使是最经典最权威的书,也没有办法面面俱到,所以手边常备一本《C语言参考手册》是十分必要的。《C语言参考手册》就是《C Reference Manual》,是C语言标准的详细描述,包括绝大多数C标准库函数的细节,算得上是最好的标准C语言的工具书。顺便提一句,最新的《C程序设计语言》是根据C89标准修订的,而《C语言参考手册》描述的是C99标准,二者可能会有些出入,建议按照C99标准学习。还有一本《C和指针》,写得也是相当地不错,英文名是《Pointers on C》,特别地强调指针的重要性,算是本书的一个特点吧。不过这本书并不十分适合初学者,如果你曾经学过C语言,有那么一些C语言的基础但又不是很扎实,那么你可以尝试一下这本书。我相信,只要你理解了指针,C语言便不再神秘。
如果你已经啃完了一本C语言教材,想要更进一步,那么有两本书你一定要看。首先是《C Traps and Pitfalls》(中译名《C陷井与缺陷》),很薄的一本小册子,内容非常非常地有趣。要注意一点,这本书是二十多年前写成的,里面提到的很多C语言的缺陷都已被改进,不过能够了解一些历史也不是什么坏事。然后你可以挑战一下《Expert C Programming》(中译名《C专家编程》),书如其名,这本书颇具难度,一旦你仔细读完并能透彻理解,你便可以放心大胆地在简历上写“精通C语言”了。
切记一个原则,不要读自己目前还看不懂的书,那是浪费生命。如果你看不懂,那你一定是缺失了某些必需基础知识。此时,你要仔细分析自己需要补充哪些内容,然后再去书店寻找讲述的这些内容的书籍。把基础知识补充完毕再回头来学习,才会真正的事半功倍。
二、Unix/Linux还是Windows,这是个很大的问题
不同的编程环境会造就出不同思维的程序员。Windows的程序员大多依赖集成开发环境,比如Visual Studio,而Unix程序员更加钟爱Makefile与控制台。显而易见,集成开发环境更容易上手,在Windows上学习C语言,只需要会按几个基本的Visutal C++工具栏按钮就可以开始写Hello, World!了,而在Unix下,你需要一些控制台操作的基本知识。有人也许认为Unix的环境更简洁,但习惯的力量是很大的,大家都很熟悉Windows的基本操作,而为了学习C语言去专门装一个Unix系统,似乎有点不划算。
对于一个只懂得Windows基本操作、连DOS是什么都不知道的新手而言,尽快做一些有趣而有意义的事情才是最重要的。用C语言写一个小程序远比学习ls、cat等命令有趣,况且我们要专注于C语言本身,就不得不暂时忽略一些东西,比如编译链接的过程、Makefile的写法等等等等。
所以我建议初学者应该以Visual C++ 6.0(不是VisualC++ .NET)或者Dev C++作为主要的学习环境,而且千万不要在IDE的使用技巧上过多纠缠,因为今后你一定要转向Unix环境的。Visual C++ 6.0使用很方便,调试也很直观,但其默认的编译器对C标准的支持并不好,而Dev C++使用gcc编译器,对C99的标准都支持良好。使用顺带提一下,很多大学的C语言课程还在使用Turbo C 2.0作为实验环境,这是相当不可取的,原因其一是TC 2.0对C标准几乎没有支持,其二是TC 2.0编译得到的程序是16位的,这对今后理解32位的程序会造成极大的困扰(当然,用djgpp之类的东西可以使TC 2.0编译出32位程序,不过那过于复杂了)。
等你学完一本C语言的教材,你一定要转向Unix平台继续学习,几乎所有的C语言高级教程都是基于Unix平台的(比如《C专家编程》)。转变的过程是痛苦的,你需要面对的是各种纷繁复杂的命令,完全不同于Windows平台的思考方式,但是这种痛苦是值得的。Unix与C是共生的,Unix的思考方式和习惯更加符合C语言的思考方式和习惯。在Unix下,你可以找到无数优秀的源代码供你尽情阅读,你可以方便地查看某个库函数的联机手册,还可以看到最优秀的代码风格(说到代码风格,我会专门写一篇文章详细叙述)。
归结起来就是一句话:初学C语言,建议使用Windows系统和集成开发环境,在准备向“高手”方向努力时,请先转向Unix平台。
三、万事俱备,你就是东风
书已选定,环境配置完成,正所谓万事俱备,只欠你自己的努力了。请从书的前言开始,仔细地阅读手头的教材,很多人看书喜欢直接从第一章开始看,这是错误的做法。前言是作者对整本书的大体介绍,作者一般会告诉你需要什么基础才能够顺利阅读本书,这可以帮助你检验自己的基础知识是否已经具备。看完前言,还要浏览一下目录,了解一下书的整体结构,顺便给自己安排一下学习计划。
学习C语言,必需注意每一个细节,书上的例子代码一定要自己亲自敲一遍,编译执行输出都跟书上说的一致才能算是学完了一个例子,如果不一致,就要仔细找原因。出了书本上有的例子,自己还要“创造”一些例子,比如学习运算符优先级的时候,可以写几个相同的表达式,在不同的位置加上括号,看看有哪些不同的行为,比如*p++和(*p)++,又比如a = b == c、(a = b) == c和a = (b == c)等等。自己抄的书上的例子以及改造之后的例子,还有自己“创造”的例子,都应该仔细地归类保存,并且要在源代码中写上简短的注释,阐述这个例子的意图。
例子之后就是习题了,我建议初学者把所有的习题都独立做一遍,然后对照答案的代码,看看自己的代码有那些不足,再试着修改自己的代码。很多人不重视习题,这是极大的错误,因为作者通常会在习题中说明一些重要的道理,而不是单纯地检验前面的知识。
也许你认为这样学习太慢,其实不然。学得细致就不用走回头路,等你学到后面才发现自己前面没搞清楚,那才是真的得不偿失。一般说来,整本书读完,你应该完成数千行乃至上万行的代码,无论是原封不动照抄书上的,还是自己心血来潮写就的,都是今后继续学习的一笔财富。以我自己举例,阅读《Windows核心编程》时(我只阅读了3/4的内容),除了抄书上的代码,还自己写了很多例子,一共有5574行(用unix下的wc工具统计),时隔多日,我早已记不清Windows的系统编程了,但只要花几分钟翻出以前的代码看看,便会重新了然于胸。所谓好记性不如烂笔头,就是这个道理。
仔细读书、认真抄写源代码、独立完成习题外加更进一步的实验,最后将所有的代码留下,成为自己的经验和财富,绝对的辛苦,也绝对的事半功倍。当然,这种方式只适合学习需要精通的技术,如果不是学习C语言,你还要具体情况具体分析。
写到最后,还有非常非常重要的一点没有提及——代码风格,从最开始学习就必须强迫自己模仿最优秀的代码风格。因为代码风格太重要内容也太多,我会用专门的一篇文章来详细讨论,请大家关注《程序员之路——关于代码风格》。
题目是关于C语言,其实我主要想说说程序该怎么学,或者一点感悟罢了,在这里,我只想引用身边的几个人的例子,来谈一下对程序学习的理解
第一个人要说到我了,我对程序产生兴趣,是听说程序可以作游戏,那时候是在初一,然而借来一本G-BASIC简明教材后,我便傻了眼。
陌生的词汇,古怪的逻辑,都是些天文的中文译本,头疼了好一阵子。
然而当时又没有别的闲书可看,我就整天捧着那一本书,什么方法都试过了,甚至倒着看过了,都没看出什么眉目,自己又没有电脑,只能不停地大胆地想象,然后满脑子的疑惑……
在这里停一下,上面说的便是我学习的风格:总要经历一番波折,瞎折腾几下,然后才会有偶然间的明悟-开窍了!我甚至没见过几个人有我这么笨,现在明白过来了,我总是一开始把事情想得过于复杂,造成狗咬刺猬的难堪的局面,然而竟然有意想不到的收获!但是不建议大家模仿这种风格,起码追女朋友的时候不能这样,生活中很多机会在于接手的那一瞬间,失去就永远找不回来了。
现在回来,后来偶然间,我看懂了一行代码,是print 语句,当时兴奋得要命,又仔细看了这个看了那个,一下子看懂了很多东西,像是在霎那间被什么给击中似的,立刻间醍醐灌顶。。。。
程序应该怎样学,对C来讲,我觉得应该从画图学起。
原因有二。
一,画图程序很能振奋人心的,它能带给你浓厚的兴趣,这是学程序的关键。
二,画图程序容易上手,很简单的道理,就能做出很漂亮的东西来。有很多东西甚至不用看课本,就能自己推出来(我认为推理的方法很重要,它是你自学的必要条件)。
比如画一个圆,从数学角度来分析,要确定一个圆,只需知道它的圆心(x,y)与半径r,那好一个圆就画出来了,circle(x,y,r);
其它的类推,再画一个立体的,选择立方体,再分析,只要知道两个对角的坐标就行了吧,翻一下课本,不是这样,为什么?你或许会想到,电脑屏幕本来就是平面的,用立体坐标的理论在这里,恐怕就不是最简单的方法。所以它采用的应该是两个平面图形平移。此处留下疑问,立体图形在平面坐标中怎么表示?自己慢慢研究,很浅的东西。
想作动画吧,想象一下动画的原理只是从一个图形变幻到另一个图形,不同地变幻就出现动画效果,那就可以画一个,擦了,再画一个新的,再变化。。。
数学功底好的话,从二维到三维,从静态到动态我认为是很快的过渡。
具体该怎么学呢,你可以多找几个画图的例子,敲到电脑里,多敲几个,慢慢地你就会知道哪些东西是干什么的,慢慢地就会自己做出东西来。
但这里不要沉溺太久了,先学画图只是帮助你轻松地入门(很多人C学完了还没有入门)。
从画图里暂时走出来,你应该打打基础了,这里不再赘述。可以边学边实践,物理,数学课本中很多问题都可以用程序来演示,来解决,尝试着多做些东西,这比你老学课本中的模型强多了,只有你自己去体会才能知道。
一.C语言的背景
C语言属于高级程序语言的一种,它的前身是“ALGOL”。其创始人是布朗•W•卡尼汉和丹尼斯•M•利奇。C语言问世时是带有很大的局限性,因为它只能用于UNIX系统上。然而随着科学技术的进步,计算机工业的发展,C语言逐渐脱离UNIX。1987年美国标准化协会制定了C语言的国际标准,简称“ANSI C”,从此以后它便成为一种广泛使用的程序语言。C语言的优点很多,主要的有如下四点:
1.兼备高级语言与低级语言的优点,属于一种中间语言。
2.它是一种结构化程序设计语言,非常适合结构化程序设计。
3.有较丰富的数据类型、运算符以及函数供以选用。
4.直接与内存打交道,使修改、编辑其他程序与文档变得轻松,简单。
怎样才能学好c语言
有人问我c语言是不是很难学,我说不是,后来问的人多了,我就萌生了写一篇关于c语言如何入门的文章的念头来。
其实c语言很简单,它只是一种交流的规则,一种表达的工具,一种承载思想的容器而已,之所以感觉难,我觉得是还不习惯使用计算机特点来考虑问题。这就好比中国人从到英国定居一样,虽然你学过英语,但是那只是想象中的英国,和现实的英国的情况还相差很远,所以要有一个适应的过程,也就是常说的过渡期或磨合期。
想尽快上手就得掌握计算机的特点,计算机的特点包括:
1、 计算机在问题的处理方式上要求全,将所有的可能都要告诉它。人可以根据习惯忽略一些东西,但计算机不行。比如说求解一元二次方程,我们考虑问题就已经默认了a不等于0,更有甚者把b方减4ac也默认大于等于零了。这是我们的习惯,既然有解,我们一般习惯上就把它定为实数解,所以你做出来的程序一般是不考虑这两个条件的,但是计算机不行,计算机是有名的弱智。计算机没有象人一样的智能处理能力,它是人忠实的信徒,不管你怎么想,它都会执行你的命令。由于你的习惯,导致一些别有用心的人或者无意犯错的人来犯错误,致使计算机有时无所适从。很疲惫,甚至崩溃,报错,造成你的程序是不成功的,所以你感觉很难。
2、 计算机要求程序的描述精确,无二义性。人的语言有很强的随机性和二义性。我们平时说话时,有时是一些招呼,有时说话的逻辑性可以不太清楚,话既可以表达这样的意思,也可以表达那样的意思,人可以根据环境和对方想表达的含义进行分析,最终得到正确的结果,但是计算机很弱智,虽然它很听话,但是他不能理解你表达的思想,只会按你交给的指令执行,这样导致执行时报警和出错。
3、 计算机编程是要求有很强的全局性和逻辑性,不存在起伏的问题。人的思维有很强的活跃期和蛰伏期,计算机不会,它随时待命。人在考虑问题时,有很多尽兴的东西,但这不是处理问题的整体,而是一部分,所以就出现做完一段代码后,就不愿意再写,或感觉很吃力,所以感觉很难。
计算机要求它的主人,考虑问题要全面,所有可能的情况及处理都要告诉它,要求学会沉稳,心态要稳定,要求交流的语句一定要明了含义单一。
怎样才能很快的学会c语言,更快的度过磨合期呢?C语言的语法规则记忆理解当然是不可少的,除此之外还应注意以下几个方面:
1、 好好理解一下变量和函数的概念,至少要重新回头看看初等数学。这是基础,否则就会先天不足,你学的再好,也成不了大气候。
2、 平衡心态,虽然不能做到“不以物喜,不以己悲”的水平,但至少不要浮躁,不要急于求成,欲速则不达。
3、 培养自身的全局意识,既能小无内,也能大无外,才行。
4、 严格按照程序设计过程设计程序,不要跳脱,天马行空,没有规矩是不成方圆的。
5、 努力提高自身的综合素质。程序是人思维的表达形式,是人处理问题思路和语言的结合体。你对客观看成到什么程度和你掌握的知识成正比。如果你对处理的问题不理解,不会处理,你怎么也写不出程序。
6、 学会交流,多交流,相互补益,同时团队合作也是很重要的。
总之,实践出真知,多学、多练、多思、多交流,勤奋好学才能学成。
有什么不合适的地方还请多多指教!