请教下,如何系统的自学编程知识?
虽然不是码农,但是一直都有一颗码农的心。所以一直想学好怎么编程。先说下自己的背景吧:
已经毕业若干年工科男,所以基础知识也就是大学里谭浩强的那本绿壳的 C 语言。
但是除了基本的变量、数组、选择、循环,到了指针那就记不清了。
然后因为工作需要,自己学了下 Linux 的 Shell 编程(Linux 系统的基础知识很一般),以及 W3School 里面 HTML, CSS 及 PHP 的部分内容。
数据库的知识仅限于基础的 selecet, insert, update 操作。
最后抄抄改改做了个功能很基础的网站出来,工作上还算够用。
现在呢,想系统的学习下编程知识,所以在 codecademy 和 coursera 开始学习。完成或进行中的科目如下:
coursera:
Learn to Program: The Fundamentals
Computer Science 101
Human-Computer Interaction
codecademy:
HTML Fundamentals
Getting Started with Programming
JavaScript
Python
现在的问题呢,就在于我自己感觉学习上很不系统,遇见什么抓什么。
比如我在 Ubuntu 里装上了 Eclipse 写 Python,可我连 Eclipse 这个软件的性质和工作原理都不清楚,又得四处去找资料学习。
就觉得这种方式不科学也没效率,所以希望各位能指教下怎么自学编程。
至于说最后的目的呢,其实我自己是希望能达到一个能独立做开发的程序员的水平,甚至于有能力会转行去写代码。
这里呢,又出现了由于知识不系统而出现的问题:我其实不清楚程序员的分工是什么样的。
我不清楚做网站前端和后端的区别是什么,我也不清楚什么是设计什么是开发。
就我自己来说,我自己的兴趣是做网站,同时也对 UE、UI 设计特别感兴趣。
另外也希望学习到手机 App 的开发。
所以希望各位能指点下,希望达到上面目标的话,怎么样系统的进行自学?
(另外再咨询个相关的问题,大学里面设置的 Computer Science 和 Information Technology 专业之间有什么区别和联系?)
最后,附一个 code.org 的宣传片,感觉上算是码农届的征兵广告了吧。
http://www.tudou.com/v/axfoj2nmKlM/&forcePlayRate=99&resourceId=0_04_05_99/v.swf http://coolshell.cn/articles/4990.html
另外我个人觉得看见什么不懂就去找资料学是很好的事 鄙视不管什么问题抓起来就找人问 入门:SICP,The C Programming Language(顺序分先后)
理论知识:算法导论,计算机组成与设计:硬件/软件接口,计算机网络(Tanenbaum),编译原理(龙书),操作系统设计与实现(不分先后,不过先看算法好一点)
打好了基础,就可以开始学习和研究各种流行的技术,框架和工具了 1楼的想法跟我一样,我本来也想推荐这个网站的。
不过这个练级实在太辛苦了。 引用第4楼cmg1987于2013-03-10 18:58发表的:
嘛 只是做码农的话这一套其实用处嘛…… images/back.gif
LZ问的是“系统的”学习编程知识
如果单纯从码农的角度考虑,是没必要看这些。直接从实战入手,边做边学,学到的都是会用到的。 自己是计算机专业的,说一些自己的感想。
我觉得吧,不用太拘泥于“系统”地学习。学习,实践,发现问题并补足,如此往复。
如果只是为了开发程序,花大时间系统学习并不是最有效的。
不过话虽如此,
可以学一下计算机原理、操作系统、编译原理这三个课程。
特别是计算机原理,推荐 Computer Systems: A Programmer's Perspective,
是我们用的教材,我觉得对实际开发很有帮助。 网站前端 = 美术+CSS+JS 曾经我以程序员为志向,如今已经黯然转行 引用楼主LonelyTB于2013-03-10 18:14发表的 请教下,如何系统的自学编程知识? :
比如我在 Ubuntu 里装上了 Eclipse 写 Python,可我连 Eclipse 这个软件的性质和工作原理都不清楚,又得四处去找资料学习。images/back.gif
想Hacking的话,C是基本功
从Java开始走会被坑好久 也从自身来说吧.NET玩了2,3年,WINCE应用开发和BS架构的信息管理软件也做过...
但是,要不是以后想要考巨硬认证的话...这些其实碰的意义不大,不是说编程语言或者.NET如何如何,而是市场主要还是要JAVA的多很多
还有就是虽然算法数据结构这些很高玩,但大部分单位招人笔试数据结构是肯定要涉及的=.=
这里有个文章我觉得还是那么回事,LZ可以参考看看
http://coolshell.cn/articles/4990.html 真的要系统自学?
先学逻辑电路,再学编译原理
重新发明一边所有轮子……
譬如说……嗯,写个bbs系统,写个带高亮的语法编辑器之类的……
记得是完全独立,能少用一个库就少用一个 ……
(或者干脆去山寨别人的开发库好了) 引用第12楼Jet.Black于2013-03-10 21:56发表的:
真的要系统自学?
先学逻辑电路,再学编译原理
images/back.gif
那是正经干这行的路数吧
学数据结构前记得还要好好研究离散哦... 我觉得学习计算机并不是线性的,就算你按顺序读完上面那些书也不一定能学到什么。
我自己几个理解计算机的过程,
一是重新理解了类型这个概念,这需要读一些编译原理和函数式语言的书。
二是理解了计算机网络,明白Web Application的工作原理,这需要读计算机网络的的书。
三是读操作系统。
不要过分拘泥于编程语言,而且记住计算机里的东西大部分时间都在做抽象和cache。 一个懂字谈何容易,如果没有一点自己设计中型项目被艹得死去活来的经验,就算看架构和模式的书也就是赶个时髦不懂装懂 我觉得不用系统的深入学习,但基本理论和概念都要知道,不然实践的时候你根本想不出这是为什么 “系统的自学”本身就很难办到吧
一是你不可能知道学的流程合不合理,二是参考教材很可能不是深入浅出的类型或者覆盖面不够
有一定编程经验的人去看其他语言的文档或者教材倒是可以学到不少
初学肯定是要学C语言的,学完推荐从C#开始完整的学通这个平台,再之后转iOS/Android/WP都不是难事
或者直接报培训班学C + 某语言 + 某手机平台,但是能不能学通就看个人悟性了 引用第12楼Jet.Black于2013-03-10 21:56发表的:
真的要系统自学?
先学逻辑电路,再学编译原理
images/back.gif
你
太坏了吧
回 22楼(luckey2) 的帖子
按楼主的表述他是要朝着 Guru 这个级别努力。那么点这两样技能有什么问题吗? 引用第22楼luckey2于2013-03-11 16:06发表的:你
太坏了吧 images/back.gif
嘛?我觉得我回答很诚恳。
LZ说自己是工科生,所以默认他高数、统计、概率什么的都学过了,要不然先得从那些开始学。
不学解逻辑电路,不学什么是时钟,不学基础,就不应该称作“系统自学”。
个人观点。
OS+网络+数据库+算法+数据结构
这几门必修吧
编程语言嘛,很多都是相通的,重要的还是理解计算机工作的原理,推荐CSAPP,建议把Lab也做了。 引用第7楼leystage于2013-03-10 19:37发表的:
自己是计算机专业的,说一些自己的感想。
我觉得吧,不用太拘泥于“系统”地学习。学习,实践,发现问题并补足,如此往复。
如果只是为了开发程序,花大时间系统学习并不是最有效的。
....... images/back.gif
Computer Systems: A Programmer's Perspective
这本书相当不错,符合楼主“系统学习”,网上也有源码,推荐对照着看。 嘛,上面那些如果是做网站根本用不到,所有的在框架里给你搭好了,重新造轮子没必要。学好OOP,读懂GOF知道怎么用,学好LINUX和英文,你能碰到的问题大部分解决方案都是开源现成的,算法数据结构什么的那些了解点,代码不会写的太难看一般就够了。 都说要学操作系统,也没见几个人知道操作系统是怎么运作的,都说要看算法导论,也没见几个人把算法知识运用到实际的项目当中
建议楼主呢,对什么感兴趣就学什么,兴趣才是最好的学习动力,编程相关的技术那么多,没有人可以把所有内容都学一遍的 你们别打击LZ啊
我觉得吧 你找本C语言的书 从基础开始学 看书的同时 看个C语言的视频教程
这样就算是入门了 之后可以做OJ的题目 可以先从考研机试题做起 因为比较简单
水平高了可以再做ACM题目 再高了就做topcoder的 有世界排名哦 LZ我看好你
页:
[1]