杂项
最后更新于:2022-04-01 04:29:44
# 杂项
### 算法 & 面试
- [各类题解 - Acm之家,专业的ACM学习网站](http://www.acmerblog.com/)
- [有哪些学习算法的网站推荐? - 知乎](http://www.zhihu.com/question/20368410)
- [九章算法 | 帮助更多的中国人找到好工作,美国硅谷一线工程师实时在线授课](http://www.ninechapter.com/)
- [七月算法 - julyedu.com](http://julyedu.com/)
- [Woodstock Blog](http://okckd.github.io/) - IT,算法及面试。有知识点及类型题总结
- [leetcode题解 - C++实现](#)
- [LeetCode题解 - GitBook](https://www.gitbook.com/book/siddontang/leetcode-solution/details)
- [结构之法 算法之道](http://blog.csdn.net/v_JULY_v)
- [julycoding/The-Art-Of-Programming-By-July](https://github.com/julycoding/The-Art-Of-Programming-By-July)
- [程序员面试、算法研究、编程艺术、红黑树、数据挖掘5大系列集锦](http://blog.csdn.net/v_july_v/article/details/6543438)
- [POJ的部分题解 - Category: POJ | Beeder's Blog](http://beeder.me/categories/POJ/)
### 其它
待整合完善
本小节主要介绍相关学习资源及网站
- [Beginner's Guide to Programming - guidetoprogramming.com](http://www.guidetoprogramming.com/joomla153/)
- [如何学习一门新的编程语言](http://learnpythonthehardway.org/book/next.html#how-to-learn-any-programming-language)
- [lambda算子简介1.a - 负暄琐话 - 博客频道 - CSDN.NET](http://blog.csdn.net/g9yuayon/article/details/759778)
- [Learn by Doing - Code School](https://www.codeschool.com/) - 在线编程学习网站,Web开发和iOS方面的教程较多
- [Learn to code | Codecademy](http://www.codecademy.com/) - 交互式的编程学习,和codeschool类似,但大多为免费,内容简单*
- [免费的编程中文书籍索引](https://github.com/justjavac/free-programming-books-zh_CN)
- …待完善
### Blog
技术博客及原创文章分享。
- [IBM developerWorks 中国 : 文档库](http://www.ibm.com/developerworks/cn/views/global/libraryview.jsp) - 翔实易懂的技术文章,可以指定专区查看文档,还可以使用RSS订阅阅读新文章。
- [Brave New Geek | Introspections of a software engineer](http://www.bravenewgeek.com/)
- [酷壳](http://coolshell.cn) - 享受编程和技术带来的快乐
- [老齐的技术资料](https://github.com/qiwsir/ITArticles) - 涵盖了程序开发的方方面面
- [shell909090/slides-一些很不错的分享](https://github.com/shell909090/slides)
- [Deep learning:四十三(用Hessian Free方法训练Deep Network) - tornadomeet - 博客园](http://www.cnblogs.com/tornadomeet/p/3267454.html) - 博主写了很多机器学习方面的博文,几乎都有参考链接,可读性比较好。
### Notes
Spark
最后更新于:2022-04-01 04:29:42
# Spark
- [Hadoop Spark学习小结[2014版]](http://dongfeiwww.com/hadoop/2014/08/15/spark/)
- [Spark Overview - Spark Documentation](https://spark.apache.org/docs/latest/) - Spark官方文档
- [Spark Programming Guide - Spark Documentation](https://spark.apache.org/docs/latest/programming-guide.html) - 简短的手册
- [Spark Training Resources – Databricks](http://databricks.com/spark-training-resources) - Spark相关资料汇总
- [Learning Spark](https://www.safaribooksonline.com/library/view/learning-spark/9781449359034/) - 预览版
数据挖掘与分析
最后更新于:2022-04-01 04:29:40
# 数据挖掘/分析
- 果壳网上一个不错的讨论 - [如何通过自学,成为数据挖掘“高手”?](http://www.guokr.com/question/338135/)
- [Data Scientist 炼成记录-欢迎参与【一亩三分地论坛数据科学版】 - Powered by Discuz!](http://www.1point3acres.com/bbs/thread-76429-1-1.html)
Android开发
最后更新于:2022-04-01 04:29:37
# Android开发
- [How to Develop Android Apps Online Course - Udacity](https://www.udacity.com/course/ud853)
GUI
最后更新于:2022-04-01 04:29:35
Linux
最后更新于:2022-04-01 04:29:33
# Linux
### 入门书籍
[鸟哥的Linux 私房菜](http://linux.vbird.org/) - 一边在线阅读,一边实际动手操作。
机器学习
最后更新于:2022-04-01 04:29:31
# 机器学习
- [Github上网友总结的机器学习和深度学习资料](https://github.com/ty4z2008/Qix/blob/master/dl.md)
- [国外网友整理的机器学习资源大全 - josephmisiti/awesome-machine-learning](https://github.com/josephmisiti/awesome-machine-learning)
- [上述资源的翻译版](http://blog.jobbole.com/73806/)
Web-后端
最后更新于:2022-04-01 04:29:28
Web-前端
最后更新于:2022-04-01 04:29:26
# Web-前端
### 初阶读物
### Head First HTML and CSS
Head First系列里口碑还不错的一本HTML 和 CSS方面的入门书,内容浅显易懂。书中有非常多的例子,可以一边看书一边在浏览器内看看效果。
### 前端框架
- [yahoo/pure](https://github.com/yahoo/pure)
- [twbs/bootstrap](https://github.com/twbs/bootstrap)
- [Angular directives for Bootstrap](http://angular-ui.github.io/bootstrap/)
- [Styleguide & Boilerplate Patterns](https://docs.google.com/spreadsheet/ccc?key=0AiN0QfBTPpOCdDFjWlM0eU1ra21XanZkekxGbjA2WWc#gid=0) - 各框架的细节对比
- [8 Twitter Bootstrap Alternatives](http://modernweb.com/2014/02/17/8-bootstrap-alternatives/)
数据库
最后更新于:2022-04-01 04:29:24
# 数据库
### MySQL
- [21分钟 MySQL 入门教程 - wid - 博客园](http://www.cnblogs.com/mr-wid/archive/2013/05/09/3068229.html)
- [MySQL必知必会 (豆瓣)](http://book.douban.com/subject/3354490/)
### NoSQL
### MongoDB
- MongoDB官网 - [MongoDB](http://www.mongodb.org/)
- MongoDB的手册页 - [The MongoDB 2.6 Manual — MongoDB Manual 2.6.4](http://docs.mongodb.org/manual/)
- Mongodb小书 - [karlseguin/the-little-mongodb-book](https://github.com/karlseguin/the-little-mongodb-book),有中文翻译版
- Udacity上的一门视频交互课程 - [Data Wrangling with MongoDB Online Course - Udacity](https://www.udacity.com/course/ud032),注册课程时选择免费类型即可观看。
Network
最后更新于:2022-04-01 04:29:21
# Network(计算机网络)
本节主要参考陈硕的网络编程学习经验,特此鸣谢,后文附原文链接及文档。
### 初阶读物
- 中文书名:[计算机网络:自顶向下方法](http://book.douban.com/subject/1391207/),从应用层着手介绍计算机网络,例子也比较生动,适合入门科普(想深入学习的建议直接从底下Stevens的书籍入手)。中文译作质量不错,Andrew S. Tanenbaum的 *Computer Networks* 则是自下而上介绍计算机网络的,两本书行文风格差异较大,个人推荐 James F.Kurose 的 *Computer Networking: A Top-Down Approach*。
- [TCP/IP Illustrated Volumn 1](http://www.pcvr.nl/tcpip/) - Stevens 的经典技术书籍,是网络编程方面必读的入门经典。第三版有较大改动(此时Stevens已故),第三版中的TCP部分值得关注,其他章节阅读第二版即可,第二版部分章节的内容已经十分陈旧,不必阅读。
- [TCP/IP Illustrated, Vol. 1: The Protocols](http://freecomputerbooks.com/TCP-IP-Illustrated-Vol-1-The-Protocols.html) - 上述书籍的附加资源链接。
### 进阶
- [UNIX Network Programming, Volume 1](http://www.unixnetworkprogramming.com/) - 书籍网站。
- [UNIX网络编程](http://book.douban.com/subject/1500149/) - 译作质量很高。
- [Jon Snader's Home Page](http://home.netcom.com/~jsnader/) - 有 *Effective TCP/IP Programming* 一书的介绍及勘误。本书为专家经验总结类。
### 高阶
- [Pattern-Oriented Software Architecture: Patterns for Concurrent and Networked Objects](http://www.dre.vanderbilt.edu/~schmidt/POSA/POSA2/) - 总结了开发并发网络服务程序的模式,对UNP是很好的补充。书中强调模块化,业务逻辑和网络通信解耦。代码仅供参考,主要看思想。
- *TCP/IP Illustrated, Vol. 2: The Implementation* - 与现有的Linux相差较大,陈硕的网站上有对Linux下用户态的实现。主要看TCP部分的实现即可。
### 其它补充
- [TCPIP网络编程之四书五经](#) - 2003年《程序员》杂志上孟岩写的一篇书评。
- [谈一谈网络编程学习经验](#) - 陈硕写的,原文链接可见 [谈一谈网络编程学习经验(06-08更新)](http://blog.csdn.net/solstice/article/details/6527585)。作者在网络编程方面还是比较有经验的,已有书籍 [Linux多线程服务端编程](http://book.douban.com/subject/20471211/) 出版,里面有不少干货。
Golang
最后更新于:2022-04-01 04:29:19
Python
最后更新于:2022-04-01 04:29:17
# Python编程
### 初阶读物
- [Learn Python: the Hard Way](http://learnpythonthehardway.org/book/) - 国外的一个程序员公开的免费Python学习教程,作者倡导从实践中学习,和传统的编程书籍风格迥异,非常适合作为Python入门教程。
- [A Byte of Python](http://www.swaroopch.com/notes/python/) - 同上,也是一本非常适合入门的书,相比上一本书内容更有广度,作者是印度人,写作风格和传统的编书籍类似。
- [零基础学Python](https://github.com/qiwsir/ITArticles/blob/master/BasicPython/index.md) - 老齐写的Python入门教程,有网友整理放到了Gitbooks上,猛戳 [零基础学Python](http://looly.gitbooks.io/python-basic/)
- [Learning Python](http://book.douban.com/subject/22139956/) - 相对于前几本书来说,这本书还是有一定深度的。从书的厚度上来看,作者一点也不Pythonic,1000+ 对于Python入门书籍来说实在是太厚太厚了!!其实作者在书中不只是简单地介绍了如何使用Python,同时也谈到了其背后的设计思想以及一些最佳实践,对于编程初学者来说这类经验等是非常适用的。
### 相关网站
- [vinta/awesome-python](https://github.com/vinta/awesome-python) - 如果要从侧面说明Python的强大,看看这个就好了。
- [Python For Beginners | Python.org](https://www.python.org/about/gettingstarted/) - 官网给初学者整理的资料,权威性毋庸置疑。
- [Pythoner | 你像从前一样的Python学习笔记](http://www.pythoner.com/) - 一系列与Python有关的原创笔记。
- [啄木鸟社区Wiki](http://wiki.woodpecker.org.cn/moin/) - 国内一个关于Python介绍及相关学习非常全面的一个网站。
- [优秀Python学习资源收集汇总 - Alexia(minmin)](http://www.cnblogs.com/lanxuezaipiao/p/3543658.html)
- [revolunet/PythonBooks](https://github.com/revolunet/PythonBooks) - Directory of free Python ebooks, 部分书籍有点老。
- [Presentations by PyCon 2014 // Speaker Deck](https://speakerdeck.com/pycon2014) - Pycon 2014国外的一些分享。
- [IPython Notebook: 交互计算新时代 | Mind on Mind](http://mindonmind.github.io/2013/02/08/ipython-notebook-interactive-computing-new-era/)
Java
最后更新于:2022-04-01 04:29:15
# Java
### [疯狂Java讲义 (豆瓣)](http://book.douban.com/subject/10436048/)
作者:李刚
之所以把这本书放在NO.1当然不是因为作者是李刚... 囧,而是因为本书确实比较适合大部分Java初学者使用,讲解全面、细致。内容安排也和平时上课类似,读起来比较轻松,某些言语表达似乎有点疯狂,书中有不少案例学习的例子,到底适不适合你就要看个人接收知识的方式喽。
### Head First Java
Author: Bert Bates, Kathy Sierra
中文书名:[Head First Java(中文版) (豆瓣)](http://book.douban.com/subject/2000732/)
Head First系列中比较有影响力的一本书,各种插图比较多,所以读起来没有一般技术类书籍那么乏味。优点是适合入门,缺点就是——仅适合入门。
### Thinking in Java 4th edition
Author: Bruce Eckel
中文书名:[Java编程思想 (第4版) (豆瓣)](http://book.douban.com/subject/2130190/)
书如其名——已经上升到了Thinking的层次了,有些人说它适合入门,有些人说它适合进阶,就普遍而言,国外的教材内容即使有深度,一般也不会让读者读起来晦涩难懂,这本书(英文原版)给我的感觉是讲解清晰,又不失深度。听说中文翻译过来的不太好,我没敢去碰,不好在这里评价。
### Core Java™, Volume I–Fundamentals 8th edition
中文书名:[Java核心技术·卷1:基础知识(原书第9版) (豆瓣)](http://book.douban.com/subject/25762168/)
### Core Java™, Volume II–Advanced Features 8th edition
中文书名:[Java核心技术(卷2):高级特性(原书第9版) (豆瓣)](http://book.douban.com/subject/25841326/)
如果说Thinking in Java侧重于思维分析的话,那么这两本则侧重于Java技术应用的讲解。与Thinking in Java齐名的Java技术书。
### [Effective Java (豆瓣)](http://book.douban.com/subject/3998727/)
Effective系列的书籍,我就不多介绍了,**进阶用**。
C++
最后更新于:2022-04-01 04:29:12
C
最后更新于:2022-04-01 04:29:10
# C语言编程
### 初阶读物
### Linux C/C++编程一站式学习
作者:宋劲杉
个人很喜欢这本书,同时又是「一站式」学习,在Linux下结合此书学习C/C++高效,所以就放在第一本了。
此书内容涵盖极广:C的基本语法、简单的数据结构与算法、C与汇编的联系、计算机系统结构、操作系统、正则表达式、TCP/IP 以及 Linux 系统编程,无所不包。从该书网站最新的内容来看,作者正在添加C++及动态语的部分,赞!
如此一来似乎样样通而样样不精,其实不是这么回事。作者将内容穿插得非常好,用十分简明的方式把每个方面最重要的东西都阐明清楚了。所以,其实这是本入门书,当然也适合各个方面都有所了解之后用。
11年3月该作者又出版了《一站式学习C编程》(升级版),弱化了Linux和嵌入式的方向性,而且也变的更适合零基础读者阅读,在「它和前一版有什么不同」中作者有这么一段话:「虽然我在上一版中信誓旦旦地说这是一本面向完全零基础读者的书,但现实教育了我,要写出一本让任何零基础读者都看得懂的书是一门复杂的系统工程,我只能努力接近这个目标,而永远达不到这个目标。」很幸运的是这本编程导论小册子弥补了这一点O(∩_∩)O哈哈~
作者在出国后在原来的《Linux C编程一站式学习》基础上更新,并以中英双语写作——[Learning Linux C/C++ Programming from Scratch](http://songjinshan.com/akabook/),英文版目前在写第四部分——[from C to C++](http://songjinshan.com/akabook/en/index.html)。完整的旧版本见 [Linux C编程一站式学习](http://akaedu.github.io/book/)。国内能有如此对自己作品负责的技术作者实在是不多见,力荐!
### C Programming: A Modern Approach
Author: K. N. King
中文书名:[C语言程序设计:现代方法 (豆瓣)](http://book.douban.com/subject/4279678/)
书如其名——现代方法,讲解了一些适应现代大规模编程的方法。这本书的第一版有超过225所学校用过,比如MIT, Stanford, UC Berkeley, Caltech等等牛校。第二版新增了很多内容,当然,书也厚了很多,很多... 书中内容讲解清晰,译作质量也很好,适合自学用的教材。
### C Primer Plus
Author: Stephen Prata
中文书名:无
C语言的百科全书,既有深度又有广度,可以作为工具书使用。典型的国外教材,非常非常厚,厚到有点让你觉得罗嗦。
第6版已经在国外出版,包含了最新的C11标准的介绍。不过目前来看C99才是最普遍的呐。
本书第五版的中文翻译版**翻译质量超级烂**,如果你不慎买了这本书,送人会误人子弟,烧了会污染环境,就当废纸用好了。想办法去弄一本英文原版的吧,具体方法我才不会告诉你哩。
### 进阶读物
在没有读完初阶读物前最好不要来读此类书籍,否则身心将受到巨大的摧残。
### The C Programming Language 2nd edition
Author: Brian W. Kernighan, Dennis M. Ritchie
中文书名:[C程序设计语言:第2版•新版 (豆瓣)](http://book.douban.com/subject/1139336/)
此书简称K&R,由C语言的创建者撰写,其品质毋庸置疑。写的十分精简,不过并不适合入门,对于那些已经对C有一定了解之后的人来说是一种享受。
### C Programming FAQs: Frequently Asked Questions 2nd edition
Author: Steve Summit
中文书名:[你必须知道的495个C语言问题 (豆瓣)](http://book.douban.com/subject/3422332/)
本书是Summit以及C FAQ在线列表的许多参与者多年心血的结晶,是C语言界最为珍贵的财富之一。适合对C有一定了解和一定编程实践后再来看, 1995年出版了该书的英文第二版,中文版算是第一版吧,2009年出的,所以说与英文原版有较大改进。
### Expert C Programming
Author: Peter van der Linden
中文书名:[C专家编程 (豆瓣)](http://book.douban.com/subject/2377310/),中文译者:徐波
书的内容虽然很有深度,涵盖范围也很广,但是作者语言幽默,读起来还是不那么枯燥的。
### Pointers on C
Author: Kenneth Reek
中文书名:[C和指针 (豆瓣)](http://book.douban.com/subject/3012360/),中文译者:徐波
同上,中文译者仍为徐波,翻译过来的读起来偶尔会有点拗口,全书通过指针这根主线来组织,但内容其实大大超过了指针的范畴,涵盖了很多C语言的高级话题。
### C Traps and Pitfalls
Author: Andrew Koenig
中文书名:[C陷阱与缺陷 (豆瓣)](http://book.douban.com/subject/2778632/)
书很薄,英文原版是1989年1月11日出版的,那时候ANSI标准都还没出来。可想而知,书中所提到的缺陷已经在C89 & C99中得到了相当的改善,所以看之前得对C89 & C99有所了解才能吸收最大的价值。书虽然很老了,但是其中的思想大家还是可以借鉴的。
### C: A Reference Manual
Author: Samuel P. Harbison & Guy L. Steele
中文书名:[C语言参考手册 (豆瓣)](http://book.douban.com/subject/2132084/)
适合在写程序的时候作为参考,对每一条函数都有C89 & C99等详细使用区别。
### The Standard C Library
Author: P.J. Plauger
中文书名:[C标准库 (豆瓣)](http://book.douban.com/subject/3775842/)
英文原版是1991年1月11日出版的,中文翻译版是2009年7月出版的。本书精辟地讲述了每一个库函数的使用方法和实现细节,同时还给出了实现和测试这些函数的完整源代码。
### Writing Solid Code
Author: Steve Maguire
中文书名:[编程精粹 (豆瓣)](http://book.douban.com/subject/3406939/)
英文原版是1993年1月1日出版的,2009年人民邮电出了中文翻译版,1993年电子工业出版社出的基本没有了。
本书篇幅不长,主要讲的是微软团队在开发大型软件过程中所总结的经验。
### ISO/IEC 9899:1999, Programming languages — C 2nd edition
中文书名:ISO C99规范
一切关于C语言的疑问,只有一件东西最权威,那就是ISO的规范。但这不是正式出版物,是类似法律文本的技术说明,而且只有英文版。新手阅读,提防吐血而亡。而且即使有ISO 规范,也不见得各编译器都去实现。
P.S. 前几年发布了C11标准,估计还得过很多年才能普及开来吧。
Operating System
最后更新于:2022-04-01 04:29:08
# Operating System
1. [Operating System Concepts Essentials - Second Edition](http://codex.cs.yale.edu/avi/os-book/OSE2/) - OSC作为操作系统的入门书籍内容未免也太多了,作者最近主推Essential版本。电子书/Slides/Study Guide做的真心不错!
数据结构与算法类
最后更新于:2022-04-01 04:29:05
# 数据结构与算法类
### 教材及MOOCs
### The Art of Computer Programming
Author: Donald E. Knuth
中文书名:计算机程序设计艺术,简称 **TAOCP** ,号称是经典中的经典,每一个想要掌握算法精髓的人都必须看的书,算法书中的圣经。**镇楼专用,新手请勿当作入门书去读,会吐血的。**
说到这本书就忍不住想多介绍下高爷爷的生平。
1938年初,高德纳出生于美国威斯康辛州。毕业于加州理工学院的他,目前是美国著名的计算机科学家,并且是斯坦福大学计算机系荣誉退休教授。高德纳的英文全名为:Donald Ervin Knuth。他的中文名是1977年到中国来之前,姚储枫为他取的。Knuth从此用高德纳作为其在Unicode世界的名字。
TAOCP这套关于算法分析的多卷论著已经长期被公认为经典计算机科学的定义性描述。迄今已出版的完整的三卷(第四卷已有部分出版)已经组成了程序设计理论和实践的惟一的珍贵资源,无数读者都赞扬Knuth的著作对个人的深远影响,科学家们为他的分析的美丽和优雅所惊叹,而从事实践的程序员已经成功地将他的「菜谱式」的解应用到日常问题上,所有人都由于Knuth在书中表现出的博学、清晰、精确和高度幽默而对他无比敬仰。
他因这些成就以及大量富于创造力和具有深远影响的著作(19部书,160篇论文)而誉满全球。这么说吧,目前你所能听说过或者还活着的那些计算机软件大牛,没有哪个不直接或间接的受过Knuth的教导。他强悍的程度只用一件小事就可以说明,在撰写这套《计算机程序设计艺术》的过程中,由于感到原有排版系统的不足,他特地重新制作了一套新的计算机排版系统,这套称为TEX的东西目前已经是出版界的标准系统。
1968年,刚刚进入Stanford的高德纳开始准备出版经典巨著《计算机程序设计艺术》,据说当时他一口气写了3000页,自此他计划写七卷(目前已经完成四卷)。这七卷分别为:基础算法、半数值算法、排序与查找、组合算法、造句算法、与上下文无关语言理论、编译器技术。1999年底,该书被美国科学家期刊列为20世纪最佳12部学术专著之一。
建议到豆瓣和Amazon上仔细看看评论或者看看印刷版,这一套书虽然很多人都极力推崇,但并不见得他们都看过,个人觉得中文翻译的看起来有点别扭,建议还是看英文原版的好了。**纸上得来终觉浅,绝知此事要躬行。**
### [Introduction to Algorithms - 算法导论 (豆瓣)](http://book.douban.com/subject/20432061/)
麻省理工学院计算机系的算法教材,已经成为世界范围内广泛使用的大学教材和专业人员的标准参考书。书很厚,适合当作工具书来使,看的时候可以结合MIT的课程讲义和视频。具体的讲义视频链接后再补充。
以上两本都是重量级的算法书,下面推荐一些轻量级的书。
### [Algorithms - 算法(第4版) (豆瓣)](http://book.douban.com/subject/19952400/)</dt>
Robert Sedgewick在算法方面写了不少好书,这本是他最近在算法书方面的大作,也是他所有算法书中读者评价最好的一本了,使用Java实现,之前有写过用C/C++实现的算法书。Coursera上将该书的内容分为了两个部分,[Algorithms, Part I | Coursera](https://www.coursera.org/course/algs4partI) 和 [Algorithms, Part II | Coursera](https://www.coursera.org/course/algs4partII) ,书中内容极其详细,中文版的没看过,但是英文原版的排版超级赞!
### [Problem Solving with Algorithms and Data Structures using Python](http://interactivepython.org/courselib/static/pythonds/index.html)
Python党的福利,作者免费在网上发布了电子版供大家阅读。用Python来写算法书的目前还不多,有其他好书推荐的可以发PR。
下面介绍一些用C/C++来写算法书的教材。
### [Algorithms in C++, Parts 1-4: Fundamentals, Data Structure, Sorting, Searching](http://www.amazon.com/Algorithms-Parts-1-4-Fundamentals-Structure/dp/0201350882/ref=sr_1_2?ie=UTF8&qid=1412603287&sr=8-2&keywords=Algorithms+Robert+Sedgewick)
### [算法I~IV(C++实现)――基础、数据结构、排序和搜索 (豆瓣)](http://book.douban.com/subject/1143801/)
### [Algorithms in C, Parts 1-4: Fundamentals, Data Structures, Sorting, Searching](http://www.amazon.com/Algorithms-Parts-1-4-Fundamentals-Structures/dp/0201314525/ref=sr_1_2?ie=UTF8&qid=1412603571&sr=8-2&keywords=Algorithms+in+C)
### [算法:C语言实现 (豆瓣)](http://book.douban.com/subject/4065258/)
C和C++的算法实现是 Robert Sedgewick较为早期的大作,虽然名气不及Java实现的那本,但如果看C或C++实现的算法书的话这两本还是不错的。Robert Sedgewick 在Princeton教了蛮久的书了。
### OJ
- [一些主流的编程竞赛网站 - 灵魂机器](http://cn.soulmachine.me/blog/20130322/) - 对各OJ进行了对比。
- [USA Computing Olympiad](http://www.usaco.org/)
- [qiwsir/algorithm](https://github.com/qiwsir/algorithm) - 老齐收集的一些算法题,大量使用Python
**待完善**
Online Judge系统(简称OJ)是一个在线的判题系统。用户可以在线提交程序多种程序(如C、C++、Pascal)源代码,系统对源代码进行编译和执行,并通过预先设计的测试数据来检验程序源代码的正确性。[2]
OJ的题目大部分是关于算法的。题目的输入输出通常是命令行方式,而非图形界面。也就是说,要关注的不是平台的兼容性、文件的格式抑或窗口的布置这种无关紧要的细节,而是问题本身的逻辑实现。
一个用户提交的程序在Online Judge系统下执行时将受到比较严格的限制,包括运行时间限制,内存使用限制和安全限制等。用户程序执行的结果将被Online Judge系统捕捉并保存,然后再转交给一个裁判程序。该裁判程序或者比较用户程序的输出数据和标准输出样例的差别,或者检验用户程序的输出数据是否满足一定的逻辑条件。最后系统返回给用户一个状态:通过(Accepted, AC)、答案错误(Wrong Answer, WA)、超时(Time Limit Exceed, TLE)、超过输出限制(Output Limit Exceed, OLE)、超内存(Memory Limit Exceed, MLE)、运行时错误(Runtime Error, RE)、格式错误(Presentation Error, PE)、或是无法编译(Compile Error, CE),并返回程序使用的内存、运行时间等信息。
Online Judge系统最初使用于ACM-ICPC国际大学生程序设计竞赛和OI信息学奥林匹克竞赛中的自动判题和排名。现广泛应用于世界各地高校学生程序设计的训练、参赛队员的训练和选拔、各种程序设计竞赛以及数据结构和算法的学习和作业的自动提交判断中。
以下几个OJ都很不错,请随意进入,也可以自行搜索,国内很多学校的OJ正在热火朝天的建设中,有的甚至直接作为了考试用系统。
搜搜百科上有一篇文章介绍得不错,[OJ](http://baike.soso.com/v708668.htm)
一个人孤单做题的滋味是很郁闷的,尤其是当你确实绞尽脑汁也搞不定的时候。幸好线上还是有很多同样在做题的朋友,他们通常会在论坛BBS或邮件列表之类的地方集中讨论解题心得,甚至有可用的答案。建议用OI (Olympiad in Informatics 信息学奥林匹克)[3]为关键字搜索。
哪里有代码示例可看?这个可以自己Google, 如果你已经能够做一些OJ的题了,那么可以考虑看一些开源软件的代码。[http://sourceforge.net](http://sourceforge.net)[http://github.com](http://github.com)[http://code.google.com](http://code.google.com) 上有很多开源软件,确定一个应用主题上去找就会有收获。不过说实话,从OJ到项目是有一定的跨越,所以要找到适合自己的项目来看是不容易的。可以尝试和他人合作做一些小型的项目[4],边学边用,或者是找一些知名的但又比较小规模的项目,然后找他的早期版本的代码,会比较清晰,比如 vim1.0/2.0 lua1.0 apache1.0这种。
第七章-教材推荐及其它
最后更新于:2022-04-01 04:29:03
# 第七章-教材推荐及其它
推荐好书或者在线课程当然是本书的重要任务之一,这次集中推荐一下。主要是C/C++, Python, Java,数据结构算法等教材。其它的大家一起来推荐吧。
这些主题中任意一个的教材都是汗牛充栋,读一辈子都读不完。不过很显然,大家都公认的经典,也只是那么寥寥数本而已,下面推荐的都是这样的著作(其实只能说是适合大部分人)。当然,我们推荐的书并不一定适合你,如果有更好的可以提issue或者发pull request。本书所推荐的教材或在线课程不一定都要去读的,可以根据你自己的兴趣和精力去选择。看书其实不是目的,根本还得在于自己去理解、去思考、去应用。
### 计算机编程导论类
### [Computer Science: An Overview - 计算机科学概论(第11版) (豆瓣)](http://book.douban.com/subject/6862061/)
计算机科学概论课程的经典入门教材,涵盖的话题十分广,适合对计算机科学了解不是很多的读者。英文版已经到第11版了,作者的用心程度可见一斑。
### [Computer Systems: A Programmer's Perspective - 深入理解计算机系统(原书第2版) (豆瓣)](http://book.douban.com/subject/5333562/)
CMU的计算机学科类导论教材,作者讲解很细致。面向的对象是对计算机底层有一定了解的读者,以后想往专业程序员方向发展的可以看看。
### [Introduction to Computer Science and Programming Using Python | edX.org](https://www.edx.org/course/mitx/mitx-6-00-1x-introduction-computer-2841#.VDKKhXWSzH4)
An introductory level course in MIT, 6.00.1x is an introduction to computer science as a tool to solve real-world analytical problems. A first course for 6.00.2x below.
### [Introduction to Computational Thinking and Data Science | edX.org](https://www.edx.org/course/mitx/mitx-6-00-2x-introduction-computational-2836#.VDKI23WSzH4)
6.00.2x is an introduction to using computation to understand real-world phenomena.
编程开发
最后更新于:2022-04-01 04:29:01
# 编程开发
### 编程工具链
工欲善其事,必先利其器。以下就编程工具链推荐一些效率型工具。
### IDE vs Terminal
待整合完善
前边说了那么多编程的东西,那么怎么把自己的想法变为最终的结果呢?——当然是选择合适的编译器(或者类似的东西)啦,首推GCC#,关于编译器在这就不多介绍了,前边已经做过初步解释,初学者无需在此浪费过多时间,知道它能把你的代码翻译为计算机可执行的文件就OK了。下边针对C/C++做些介绍,其它语言类似。
就国内的高校C语言教学来说,Windows下的VC6.0使用率还是比较广的,估计大部分都是用的盗版汉化软件,我大一一开始学的时候老师上课演示也是用VC6.0示范的,不得不在这里小小的抗议一下,初学编程完全无需VC6.0(在Win7下兼容性很成问题)甚至Visual Studio这样的庞然大物,光建工程配置文件就能打击一大批新手的自信心,而且莫名其妙的错误是经常会有的!对于初学者,个人觉得Linux + Terminal就非常不错,能配合《Linux C一站式编程》就更完美了。
如果你喜欢IDE,那也没关系,免费开源的[[http://zh.wikipedia.org/wiki/Code](http://zh.wikipedia.org/wiki/Code)::Blocks Code::Blocks],自由小巧的[Dev-C++](http://zh.wikipedia.org/wiki/Dev-C%2B%2B)也不错,如果你平时使用多种语言开发,开源的Eclipse当仁不让。当然咯,如果你钟情于Windows,Visual Studio则比较适合你,初学时可以用免费的Express版,也可以使用微软授权给高校学生授权的Professional版本。
另外值得一提的就是软件调试,这本是一块很大的话题,《Linux C一站式编程》中有关gdb的使用已经很详细了,有兴趣的去看看,其它IDE或多或少也有类似的排错功能,使用方法见各软件帮助文档或网络上的教程。
除了IDE这种开发方式,你也可以使用前边提到过的Text Editor配合编译器使用,配置好的话熟练后非常方便,效率也较高。更多的介绍请参考Wikipedia或者社区wiki之[工具篇](# "wikilink")。