想学编程并不难 这样做就可以了
不论你是想自己设计游戏,还是开发iPhone或安卓手机上的应用,还是仅仅为了娱乐,学习编程语言都是一条必经之路。编程语言种类繁多,用途各 异,然而一旦掌握其中之一,其他的也就迎刃而解。作为初学者,你可能要先从Java或HTML开始学,一旦掌握了一门编程语言,你就发挥无穷的想象,开发 各种神奇的软件啦。
步骤
1、确定目标
Learn a Programming Language Step 1 Version 2.jpg
学习编程语言既充满乐趣,又充满挑战。有些花费多年时间学习一门编程语言的大学生到最后也无法确定自己的方向到底是什么,所以,在你开始前,最好先想清楚,你是想成为一名程序员,还是游戏开发者,还是机器人专家?
2、选择一种编程语言
Learn a Programming Language Step 2 Version 2.jpg
初学者一定要从主流语言开始学习,比如中级语言C和C++。这两种语言是任何一名合格、专业的程序员都必须掌握的,因为它们称得上是软件开发界的主 流。但是最好不要从高级语言开始学,如Java,因为这些语言对于初学者来说难度未免太高(高级语言可以以后再学,但是C语言和C++应该作为你的基 础)。然而对于完完全全的门外汉的来说,可能C和C++都有点困难,那么你也可以从Python开始学,这种语言被大家广泛认为是适合初学者的。
此外,每一种语言都要学习至少一年。要熟悉编程范式,尤其是面向过程及面向对象这两种;要广泛阅读,多用编译器及IDE(网上有许多免费的)练习编程。
掌握一种语言后,先不要急着运用,而要去多买些数据结构方面的书来看,学习搜索、分类、二叉树及链表创建等概念。因为无论你是要制作游戏还是开发软件,数据结构都是必须要考虑的。
随后,你就可以开始学习更加高难度的语言,如Java。对于进阶学习者来说,可能还需要学习分而治之(Devide-and-conquer)、贪婪算法(Greedy Method)及回溯(Backtracking)等计算机算法,这又要花上至少一年的时间。
3、热爱数学
Learn a Programming Language Step 3 Version 2.jpg
许多人都由于这样那样的原因而对数学颇不感冒,而作为一名优秀的程序员,却要整天与一箩筐的数学问题打交道。正如你所见,学编程真的是说起来容易做 起来难,而它的难并不在于你对一种语言的了解程度,而在于这种语言牵扯到的数学问题。编程中的大多数问题都能在数学模型(如斐波那契数列、弗洛伊德算法、 傅立叶级数等等)中找到端倪,更不用说数学公式在解决编程问题中的广泛应用了。所以,现在开始,去学习各种公式及其特性吧,还要仔细钻研算术及微积分,因 为不懂数学,就好比巧妇难为无米之炊。
4、要保持内在的动力
Learn a Programming Language Step 4 Version 3.jpg
记住,罗马建成非一日之功,所以不要在短时间里给自己填压太多知识。学习编程语言并不容易,因为这是一门需要时常调用逻辑思维的知识。你要做的,就 是理解程序背后的逻辑,然后不断练习,直到熟能生巧为止。如果你只是死记硬背一些程序,那么你就错过了学习过程中的乐趣,而且一些概念你也未必真的理解。 所以,学习编程需要不断地挑战自己,但也不要操之过急。
5、要有耐心
Learn a Programming Language Step 5 Version 3.jpg
有时,即使是卓有成就的程序员也会被简单的小问题难住,所以,遇到问题时,一定要让自己放松下来。找张草稿纸,想想有什么现成的公式可用,或者自己 想一个公式出来。你看,这就是你为什么要学习数据结构和数学。在成为熟练的程序员以前,一个人往往需要花费大把的时间来构思用于解决特定问题的程序。这一 过程中,你可以去Project Euler或者Codecademy这样的网站上看看,上面有简单的编程作业及教程,可以用以练习并提高技能。
6、绝不轻言放弃
Learn a Programming Language Step 6 Version 2.jpg
如果你在编程过程中经常粗心犯错,那么整个过程就会变成一场旷日持久的折磨,然而一旦问题解决,所有的沮丧都会烟消云散。在学习各种算法(傅立叶级 数、向量、边界问题、线性代数、矩阵)的同时,也要注意休息。在解决特别复杂的问题时,要按时放松大脑,让困扰在心头的难题暂时转移到潜意识中。另外要有 合理的工作计划,当你编程编到倦怠的时候,就可以小憩一会儿,或者出去散一会儿步,但是永远不要说放弃。
7、成为高手
Learn a Programming Language Step 7 Version 2.jpg
学到这个阶段,你就可以试着去教教别人,并且向别人展示你制作的应用。如果你认识比你更厉害的人,就要与他分享你的想法和问题,这样会使你积累更多的经验;你也可以模仿诸如文本编辑器、windows软件等专业软件来进行自主开发;积极参加相关竞赛来挑战自我。
懂得一种编程语言是很赞的,但更赞的就是懂得多门语言,这不仅仅意味着你的“工具箱”里有了更多的“工具”,更是意味着你掌握了更多解决问题的方 法。因为不论你惯用哪种语言,懂得其他语言总是能使你更好地了解常见的抽象概念及问题。所以,有条件的情况下,尽量多学几种语言,最好是学习两三种具有不 同设计原理的语言,如Lisp、Java及Perl。但是每一种都要用心学。
8、广泛阅读
Learn a Programming Language Step 8 Version 2.jpg
许多高水平的程序员阅读量也十分惊人,他们也往往会在输入第一行代码前深思熟虑一番。所以,你一定要多阅读、多思考。每周都要检查一次自己的作品 (平时要养成保存代码的习惯,这样日后才能复查、反思);还要多买编程方面的好书。购买的书必须是最值得一看的,而并非是最畅销的。永远不要盲目地追随某 一种资源,因为那样只会让你的眼界变得狭隘。一旦你掌握一种知识,就要仔细钻研其用途及改进的可能。
9、去培训中心参加培训
Learn a Programming Language Step 9 Version 2.jpg
如果你觉得自学效果不理想,就去报名参加一些初级的编程班吧。但是报名前,一定要先向之前在里面学习过的人了解一番。
10、勤加练习
Learn a Programming Language Step 10 Version 2.jpg
要养成用编程解决问题的习惯,如果你能自己发现生活中需要解决的问题的话最好,如果不能,就可以去看看以下这些网站:
对于大多数人来说,编写自己感兴趣或者能够真正投入使用的程序要比照着教科书上的案列来做有趣得多。那么,你不妨利用搜索引擎来搜寻自己感兴趣的项目。
学会利用参考材料。即使无法记住所有的知识也不用觉得难为情,真正重要的是你知道去哪里找参考资料。
教学相长。因为在教别人编程的同时,你不仅会对既有的知识更加熟悉,也会帮助你从其他的角度来看待问题。
光看教程是不足以把任何一门编程语言学到家的。所以,你要尽量去找些志同道合的人,然后互相学习。多多浏览并参与讨论这个小团体内其他人发表的意见,这样你才能学习更多的技能。
如果你对游戏编程感兴趣,就要尤其用心学Python、C++以及Java。在这三者中,C++是最强大的一个,Python最简单,而Java制作的游戏则最适合在不用改动的情况下在Windows、Mac OS及Linux系统上运行。
学习新知识的时候,亲手实践、做出改动、预测结果这一过程是非常重要的,因为这样你才能把一个概念吃透。
致力于计算机语言标准化。你可以关注C++标准委员会(ANSI C++ committee),也可以在自己的小团体中把2格缩进还是4格缩进统一一下。不管怎样,通过这些实践,你都能对其他人在编程方面的偏好及其原因有更深的理解。
向免费软件学习。多研究免费软件的源代码,因为如果你能利用现成的代码,又何必费尽心思去重写呢?只不过抄下来的时候要确保自己真正理解。
如果仅仅是用于在Windows上执行简单任务的程序,就可以用C#(类似Java)或Visual Basic来做;如果是其他平台,那么比较常用的就是Perl、Python、bash(或其他shell语言)。
学过 C++ 的你,不得不知的这 10 条细节! 我在阅读 《Effective C++ (第三版本)》 书时做了不少笔记,从中收获了非常多,也明白为什么会书中前言的第一句话会说: 对于书中的「条款」这一词,我更喜欢以「细节」替换,毕竟年轻的我们在打 LOL 或 王者的时,总会说注意细节!细节!细节~ —— 细节也算伴随我们的青春的字眼 针对书中的前两个章节,我筛选了 10 个 细节(条款)作为了本文的内容,这些细节也相对基础且重要。 针对这 10 细节我都用较简洁的例子来加以阐述.
练了那么多,为啥还不会编程 Python 技术已经一岁多了,持续不断地推出新知识、新技术、新技巧,不过很多童鞋存在一个疑问:学这么多编程知识、技术、技巧到底有什么用?对呀,技术日新月异,层出不穷,解决方案如雨后春笋,对于我们普通人来说,编程到底有什么用,今天我来谈谈这个问题,期望对你有所启发。
编程法则和现状:我们明白自认为明白的东西吗? 软件工程领域的知名专家Capers Jones,已经建立了涵盖20,000个项目的范围广泛的项目记录数据库,大部分都是大型的。有了这些数据支持,他经常写文章讨论,哪些活动和方法在实践中发挥着作用,以及如果可能,它们实际上提供多少提升幅度,它们的成本有多少。在这篇客座编辑里,他非正式地评价了一些编程和业务上的流行“法则”在面对软件开发现状时,是如何发挥作用的。
相关文章
- 学习编程的过程中可能会走哪些弯路,有哪些经验可以参考?
- Python模块化编程
- 多线程编程学习笔记——线程同步(三)
- 【火灾疏散建模】基于MATLAB的火灾人员疏散建模编程和仿真分析
- 跟老男孩学Linux运维:Shell编程实战1.4 学完本书后可以达到何种Shell编程高度
- CSDN日报20170817——《如果不从事编程,我可以做什么?》
- 五四青年节,今天要学习。汇总5道难度不高但可能遇到的JS手写编程题
- C语言与汇编语言混合编程实验
- 《学C编程也可以卡通一点》一1.2创建变量
- 《学C编程也可以卡通一点》一1.7变量的类型
- 《指针的编程艺术(第二版)》一3.2 指针与二维数组
- 《HTML5游戏编程核心技术与实战》一2.4 坐标变换
- 《C++ 黑客编程揭秘与防范(第2版)》——第6章 加密与解密
- 《JavaScript高效图形编程(修订版)》——2.3 定时器、速度和帧速率
- 《jQuery与JavaScript入门经典》——第 1 章 动态Web编程简介 1.1理解Web服务器浏览器范式
- 编程可以教给你的6个生活习惯
- 剑指offer编程题解法汇总38-二叉树的深度
- 周末没事干就看CSS JS Python ThinkPHP的书,照着例子运行就行,可以增强信心(还有QML,虚拟机运行Web。Windows核心编程,照着例子运行。没事看看socket和rest的例子和文档,还有POCO和BOOST。做自己感兴趣的虚拟机,研究5.0,SG2,BOX,CloudDisk)
- Android编程 高德地图 中如何重写 定位按键 的触发事件 (com.amap.api.maps2d.LocationSource)点击定位后不仅定位在地图中心点上而且可以设置地图的缩放大小和提示
- 解析Java的JNI编程中的对象引用与内存泄漏问题
- 网络编程之URL(可以下载资源)
- 分享MSSQL、MySql、Oracle的大数据批量导入方法及编程手法细节
- shell编程四剑客之 sed
- iOS开发之网络编程--使用NSURLConnection实现大文件断点续传下载+使用输出流代替文件句柄
- 从零学Java(4)之编程规范
- C#基础之并行编程
- 编程参考 - 如何计算字符串的哈希值