user-0 提问: 学完C语言基础部分，还要学什么？

回复:
user: user-0
content: 引用 18 楼 bigbaldy 的回复:1.如果楼主对C感兴趣，那么接下来可以看《windows程序设计》王艳萍编著，多线程，图形界面，基本绘图，文件，注册表，钩子，网络通信，内核驱动等都有，我个人认为是一个很好的入门书籍，某些东西讲得也比较有深度，由于你是搞C的，如果看完后对其中的驱动开发感兴趣，也可以学学驱动开发，可以看看《Windows驱动开发技术详解》，《Windows内核情景分析》，前者看完最好是找个工作跟项目，后者主要是让你对windows操作系统能有一个更深入的了解。。。。   你回答太全了，谢谢你，看到你的建议我有些方向了，谢谢你

user: user-1
content: 《Linux C编程一站式学习》

user: user-2
content: 引用 14 楼 albert12336 的回复:[quote=引用 13 楼 ebaker1024 的回复:] 给你个建议：下载一份 bash 的源代码，试一下：1）能不能看懂？2）自己动手写一个出来如何？ 假如你能自己写一个bash, 马上就有工作！  如果回答是否定的，说明你需要补充以下两方面的知识： A）数据结构。教科书很多，建议选一本用C语言讲述的。 B）操作系统。个人推荐的教材是：《UNIX操作系统设计》（Maurice J.Bach 著）。这本书最初是贝尔实验室的内部讲义，后来公开发行。80年代初，北大的老师组织几个学生把这本书译成了中文。 这本书的特点是：用伪代码讲解UNIX操作系统，同时解决了3个W：What, How, Why. 参与操作系统开发的机会是不多的，但是操作系统开发中的一些设计思路是通用的。相信在完成了AB两项后，你对软件开发的认识会达到一个新的高度。 这本书有点老，可能需要到图书馆去找。 此外，对LINUX代码进行剖析的书现在比较多，有兴趣也可以看看。  在此基础上，再继续下面的内容： C）学习SQL语言，掌握一种常用数据库的使用。 D）学习Java技术，包括：Java语言，Servlet/JSP。  完成了以上4项，毕业后就会很有竞争力了。  潭浩强的那本C语言教材是很不错的，在讲解C语言的同时，还介绍了基本的数据结构和软件开发的基本方法，如“自顶向下逐步求精”等。不过，从理论上掌握到实践中应用还存在一段距离。 学习软件开发有两个窍门，一是多读源代码（类似 Linux, Tomcat, Spring ...），二是自己多动手写代码。 类似SQL 这样的东西，语法是非常简单的，可能3天就学完了，但要用好是不容易的。  现在学校的教学可能也存在一些问题，毕业生的基础比较薄弱。推荐你看一本书：《深入理解计算机系统》。  最后，再送你一道面试题：用你熟悉的语言（比如C）编写一个模块，完成人民币金额从数值到汉字大写的转换。汉字大写的规范可以在百度上找。  本以为自己知道很多东西。听到你的，打击很大，压力很大，还有那么多东西要学[/quote]  bash 可能太复杂了。可以从简单的开始：bc, 就是UNIX 终端环境的计算器。 1）首先装一个ubuntu, 学会用bc;  2）自己尝试一下：如何编写一个bc 程序。 3）阅读bc 源代码，找一找差距。 开发bash 需要了解LINUX 的系统调用。而bc程序呢，原则上，在《C语言》和《数据结构》这两门课程学完后就可以开发出来。如果搞不掂，把教科书拿出来翻一翻，有没有新的发现？ 类似“自顶向下逐步求精”这样的思想和方法，不论你从事哪个领域的开发都是有用的。打好基础，后面的学习效率就高了。

user: user-2
content: 给你个建议：下载一份 bash 的源代码，试一下：1）能不能看懂？2）自己动手写一个出来如何？ 假如你能自己写一个bash, 马上就有工作！  如果回答是否定的，说明你需要补充以下两方面的知识： A）数据结构。教科书很多，建议选一本用C语言讲述的。 B）操作系统。个人推荐的教材是：《UNIX操作系统设计》（Maurice J.Bach 著）。这本书最初是贝尔实验室的内部讲义，后来公开发行。80年代初，北大的老师组织几个学生把这本书译成了中文。 这本书的特点是：用伪代码讲解UNIX操作系统，同时解决了3个W：What, How, Why. 参与操作系统开发的机会是不多的，但是操作系统开发中的一些设计思路是通用的。相信在完成了AB两项后，你对软件开发的认识会达到一个新的高度。 这本书有点老，可能需要到图书馆去找。 此外，对LINUX代码进行剖析的书现在比较多，有兴趣也可以看看。  在此基础上，再继续下面的内容： C）学习SQL语言，掌握一种常用数据库的使用。 D）学习Java技术，包括：Java语言，Servlet/JSP。  完成了以上4项，毕业后就会很有竞争力了。  潭浩强的那本C语言教材是很不错的，在讲解C语言的同时，还介绍了基本的数据结构和软件开发的基本方法，如“自顶向下逐步求精”等。不过，从理论上掌握到实践中应用还存在一段距离。 学习软件开发有两个窍门，一是多读源代码（类似 Linux, Tomcat, Spring ...），二是自己多动手写代码。 类似SQL 这样的东西，语法是非常简单的，可能3天就学完了，但要用好是不容易的。  现在学校的教学可能也存在一些问题，毕业生的基础比较薄弱。推荐你看一本书：《深入理解计算机系统》。  最后，再送你一道面试题：用你熟悉的语言（比如C）编写一个模块，完成人民币金额从数值到汉字大写的转换。汉字大写的规范可以在百度上找。

user: user-3
content: 个人觉得把数据结构和算法学好先，这个能让你更有竞争力度。做应用开发的话建议C++和JAVA吧。

user: user-4
content: 建议楼主吧C语言的指针部分好好看看

user: user-5
content: 有必要学数据结构，可以看《数据结构与算法分析》，不完全精通也要了解常用数据结构和算法。 个人觉得重要

user: user-6
content: 1.如果楼主对C感兴趣，那么接下来可以看《windows程序设计》王艳萍编著，多线程，图形界面，基本绘图，文件，注册表，钩子，网络通信，内核驱动等都有，我个人认为是一个很好的入门书籍，某些东西讲得也比较有深度，由于你是搞C的，如果看完后对其中的驱动开发感兴趣，也可以学学驱动开发，可以看看《Windows驱动开发技术详解》，《Windows内核情景分析》，前者看完最好是找个工作跟项目，后者主要是让你对windows操作系统能有一个更深入的了解。还可以学学单片机，这个入门很容易，也很好玩，可以看单片机教学，讲得非常基础易懂。最后，如果你对Linux感兴趣也可以往那方面发展，可以看《 Linux程序设计》入个门。想自己写操作系统可以看《Orange S:一个操作系统的实现》,该书配有详实的例子，不过是在ubuntu系统下开发，需要你对linux系统有一定了解，不过书中例子的操作步骤非常详细，很容易看懂，并且看不明白的地方他在下面一定有解释，想想吧，自己动手完成一个操作系统这是多么大的成就感，呵呵  2.如果楼主想做应用开发，写界面之类的，那么还是C++或者C#吧，C写界面，等你读完《windows程序设计》的第四章你就知道了，会累死的。个人认为C++要是做界面，目前还是选择Qt吧，方便不少，库的话，至少熟练掌握STL,boost也可以学学,能让你的开发方便许多。C#就不用说了，做界面最方便的语言，而且现在也完美跨平台，windows,linux,ios,macos,android都能完美运行，你有C的基础，学C#这个类C的语言上手非常快的，先读个《C#开发实战宝典》对C#有一个初步认识，也能产生些兴趣，然后再逐步深入。  3.如果楼主对开发不感兴趣，那么还可以往逆向、反病毒分析等方向发展，不过这个也是要具备一定的开发经验的，这样逆东西也快，推荐《C++反汇编与逆向分析技术揭秘》，《天书夜读》，《加密与解密》，《0day安全软件漏洞分析技术》，搞这个也很有意思，偷窥嘛，程序员都喜欢干，将来搞漏洞挖掘也是很有钱途的呦！

user: user-7
content: 引用 3 楼 albert12336 的回复:[quote=引用 2 楼 caozhy 的回复:] 说明你完全不懂计算机科学，只学了点培训班的皮毛。  你应该知道，一种语言能不能做到另一种语言做到的一切只取决于这种语言是不是图灵完备的。通用编程语言都是图灵完备的，所以不存在某种语言可以实现超越另一种语言的可能。  你理解错了，我的意思不是在比较 这些语言那个强，谁能实现什么功能。而且我目前只是学习了大学上的那些基本知识。  我的意思是，学完C语言基础部分，后面还要学什么？它有像其它语言一样有 那些 实现 图形界面，数据交互，多线程，多媒体，网络 的部分吗？如果有我应该看哪些书？如果没有，我们平时在电脑上用的应用程序的那么多复杂功能和复杂界面 怎么实现？C语言肯定不会停在我们大学学过的那本书吧。而且凭我大学学的那些知识肯定开发不了什么东西。  C语言是不是主要用于做系统内核和跟硬件打交道的领域？  如果想要学习和开发复杂界面和功能的windows或者Linux应用程序（如我们平时用的qq，office，音频播放器，视频播放器，还有很多游戏等），我下一步应该学什么？  谢谢[/quote]  直接上手java或者OC吧，不过估计会比较费劲。 想轻松点的话就上手C++

user: user-0
content: 引用 15 楼 u012810294 的回复:一句话，语言只是工具。 虽然说是工具，但。。。压力很大啊。。。而且高手也太多了，毕业就失业了。

user: user-8
content: 一句话，语言只是工具。

user: user-0
content: 引用 13 楼 ebaker1024 的回复:给你个建议：下载一份 bash 的源代码，试一下：1）能不能看懂？2）自己动手写一个出来如何？ 假如你能自己写一个bash, 马上就有工作！  如果回答是否定的，说明你需要补充以下两方面的知识： A）数据结构。教科书很多，建议选一本用C语言讲述的。 B）操作系统。个人推荐的教材是：《UNIX操作系统设计》（Maurice J.Bach 著）。这本书最初是贝尔实验室的内部讲义，后来公开发行。80年代初，北大的老师组织几个学生把这本书译成了中文。 这本书的特点是：用伪代码讲解UNIX操作系统，同时解决了3个W：What, How, Why. 参与操作系统开发的机会是不多的，但是操作系统开发中的一些设计思路是通用的。相信在完成了AB两项后，你对软件开发的认识会达到一个新的高度。 这本书有点老，可能需要到图书馆去找。 此外，对LINUX代码进行剖析的书现在比较多，有兴趣也可以看看。  在此基础上，再继续下面的内容： C）学习SQL语言，掌握一种常用数据库的使用。 D）学习Java技术，包括：Java语言，Servlet/JSP。  完成了以上4项，毕业后就会很有竞争力了。  潭浩强的那本C语言教材是很不错的，在讲解C语言的同时，还介绍了基本的数据结构和软件开发的基本方法，如“自顶向下逐步求精”等。不过，从理论上掌握到实践中应用还存在一段距离。 学习软件开发有两个窍门，一是多读源代码（类似 Linux, Tomcat, Spring ...），二是自己多动手写代码。 类似SQL 这样的东西，语法是非常简单的，可能3天就学完了，但要用好是不容易的。  现在学校的教学可能也存在一些问题，毕业生的基础比较薄弱。推荐你看一本书：《深入理解计算机系统》。  最后，再送你一道面试题：用你熟悉的语言（比如C）编写一个模块，完成人民币金额从数值到汉字大写的转换。汉字大写的规范可以在百度上找。  本以为自己知道很多东西。听到你的，打击很大，压力很大，还有那么多东西要学

user: user-0
content: 引用 2 楼 caozhy 的回复:说明你完全不懂计算机科学，只学了点培训班的皮毛。  你应该知道，一种语言能不能做到另一种语言做到的一切只取决于这种语言是不是图灵完备的。通用编程语言都是图灵完备的，所以不存在某种语言可以实现超越另一种语言的可能。  你理解错了，我的意思不是在比较 这些语言那个强，谁能实现什么功能。而且我目前只是学习了大学上的那些基本知识。  我的意思是，学完C语言基础部分，后面还要学什么？它有像其它语言一样有 那些 实现 图形界面，数据交互，多线程，多媒体，网络 的部分吗？如果有我应该看哪些书？如果没有，我们平时在电脑上用的应用程序的那么多复杂功能和复杂界面 怎么实现？C语言肯定不会停在我们大学学过的那本书吧。而且凭我大学学的那些知识肯定开发不了什么东西。  C语言是不是主要用于做系统内核和跟硬件打交道的领域？  如果想要学习和开发复杂界面和功能的windows或者Linux应用程序（如我们平时用的qq，office，音频播放器，视频播放器，还有很多游戏等），我下一步应该学什么？  谢谢

user: user-9
content: 说明你完全不懂计算机科学，只学了点培训班的皮毛。  你应该知道，一种语言能不能做到另一种语言做到的一切只取决于这种语言是不是图灵完备的。通用编程语言都是图灵完备的，所以不存在某种语言可以实现超越另一种语言的可能。

user: user-10
content: c语言 数据结构 数据库都学得差不多了 可以试试找找工作了

user: user-9
content: 你连语言和API都没分清楚。

user: user-9
content: 引用 9 楼 albert12336 的回复:[quote=引用 6 楼 caozhy 的回复:] [quote=引用 3 楼 albert12336 的回复:] [quote=引用 2 楼 caozhy 的回复:] 说明你完全不懂计算机科学，只学了点培训班的皮毛。  你应该知道，一种语言能不能做到另一种语言做到的一切只取决于这种语言是不是图灵完备的。通用编程语言都是图灵完备的，所以不存在某种语言可以实现超越另一种语言的可能。  你理解错了，我的意思不是在比较 这些语言那个强，谁能实现什么功能。而且我目前只是学习了大学上的那些基本知识。  我的意思是，学完C语言基础部分，后面还要学什么？它有像其它语言一样有 那些 实现 图形界面，数据交互，多线程，多媒体，网络 的部分吗？如果有我应该看哪些书？如果没有，我们平时在电脑上用的应用程序的那么多复杂功能和复杂界面 怎么实现？C语言肯定不会停在我们大学学过的那本书吧。而且凭我大学学的那些知识肯定开发不了什么东西。  C语言是不是主要用于做系统内核和跟硬件打交道的领域？  如果想要学习和开发复杂界面和功能的windows或者Linux应用程序（如我们平时用的qq，office，音频播放器，视频播放器，还有很多游戏等），我下一步应该学什么？  谢谢[/quote]  什么语言有“图形界面，数据交互，多线程，多媒体，网络 的部分”？[/quote]  比如java，c++ 或者OC里面学完基础部分后，有高级部分，比如实现 图形界面，数据交互，多线程，多媒体，网络等等高级部分。[/quote]  那是培训班的学习提纲，和语言没有一点关系。

user: user-0
content: 引用 8 楼 user-11 的回复:C语言的后续版本（C++等）正在不断弥补C的缺陷，现在的大多数公司都是用面向对象语言编程的。但是深入学习C会帮助你从更深层次上理解，比如深入到编译、汇编，在机器中的运行，掌握一些代码技巧等等，从本质上有一个深入的了解对将来的发展是有很大帮助的。 如果你想做一个大神，而不是普普通通的程序员，那继续学习C还是很有用的。你可以两边同时学习，如果能力足够，这是不矛盾的。现在市场上缺的是把某些东西学得精通的人，而不是什么都会但只会皮毛的人。  貌似有点懂了，谢谢

user: user-0
content: 引用 6 楼 caozhy 的回复:[quote=引用 3 楼 albert12336 的回复:] [quote=引用 2 楼 caozhy 的回复:] 说明你完全不懂计算机科学，只学了点培训班的皮毛。  你应该知道，一种语言能不能做到另一种语言做到的一切只取决于这种语言是不是图灵完备的。通用编程语言都是图灵完备的，所以不存在某种语言可以实现超越另一种语言的可能。  你理解错了，我的意思不是在比较 这些语言那个强，谁能实现什么功能。而且我目前只是学习了大学上的那些基本知识。  我的意思是，学完C语言基础部分，后面还要学什么？它有像其它语言一样有 那些 实现 图形界面，数据交互，多线程，多媒体，网络 的部分吗？如果有我应该看哪些书？如果没有，我们平时在电脑上用的应用程序的那么多复杂功能和复杂界面 怎么实现？C语言肯定不会停在我们大学学过的那本书吧。而且凭我大学学的那些知识肯定开发不了什么东西。  C语言是不是主要用于做系统内核和跟硬件打交道的领域？  如果想要学习和开发复杂界面和功能的windows或者Linux应用程序（如我们平时用的qq，office，音频播放器，视频播放器，还有很多游戏等），我下一步应该学什么？  谢谢[/quote]  什么语言有“图形界面，数据交互，多线程，多媒体，网络 的部分”？[/quote]  比如java，c++ 或者OC里面学完基础部分后，有高级部分，比如实现 图形界面，数据交互，多线程，多媒体，网络等等高级部分。

user: user-11
content: 引用 5 楼 albert12336 的回复:[quote=引用 4 楼 user-11 的回复:] 面向过程学习完，一定要学面向对象。 建议学习C++，因为C++是C的“进化”，你的C基础上增加面向对象，然后可以学学Java，和C++比较像。这两种语言都会涉及楼主所说的内容。 然后C#等等，看实际需要和个人爱好。  那想要学习我上面所说的那些内容，我没必要继续学C语言的后面了，是吧，我的意思是 C语言后面不会太多涉及到我所想学的东西？[/quote] C语言的后续版本（C++等）正在不断弥补C的缺陷，现在的大多数公司都是用面向对象语言编程的。但是深入学习C会帮助你从更深层次上理解，比如深入到编译、汇编，在机器中的运行，掌握一些代码技巧等等，从本质上有一个深入的了解对将来的发展是有很大帮助的。 如果你想做一个大神，而不是普普通通的程序员，那继续学习C还是很有用的。你可以两边同时学习，如果能力足够，这是不矛盾的。现在市场上缺的是把某些东西学得精通的人，而不是什么都会但只会皮毛的人。