技术学习杂谈——摘自论坛网友评论
2008-02-20 21:59
288 查看
//*******************************************************************************************************
一、
呵呵,看楼主这么有志气,看来后继有人了,偶从底层转出了一段时间了,现从事JAVA,不过还是很怀念当年用汇编和C操纵底层硬件的,一切尽在掌握中的感觉---爽啊,现在的JAVA代码写得偶都要睡着了...。
在这里给楼主点建议:
1.关于c++:对于底层来说c++基本可有可无,主要还是C,不过OO的思想还是每个CODER的基本功,还是得了解了解滴,偶个人不推荐学C++去了解OO,c#和java才是面向对象的典范语言。
2.关于C:楼主要搞底层的话,光看看老谭的入门C是没有用的,C必须相当的精通,要精通的什么程度呢,举个2例子说吧:楼主知道C怎么处理浮点数变量赋值为0的细节吗,知道怎样不写main函数而生成可执行的C程序吗?如果你能不查资料一下子说出了答案来,那你的C才算过关。
3.关于汇编:8086下的汇编只是入门而已,必修罗云彬的《win32汇编》(具体名字我忘了,可以到他的网站上看看,他的书都是底层开发的圣经),一定要在大学期间把这本书吃透。
4.关于逆向:也就是所谓的破解,有兴趣就搞搞,不是十分推荐。因为绝大多数破解的软件的汇编代码非常以读懂,当然了如果你破解水平高的话也能搞出非常经典的代码出来。我有段时间也凑过逆向的热闹,可能因为水平原因反编译出来的代码可读性非常差。
5.底层的的分类是比较多的,主要有嵌入式开发,开源操作系统内核编写,BIOS开发(中国会这个的没有几个),驱动开发,病毒编写(也算是吧),主要是驱动开发和嵌入式开发为主。对于嵌入式:起码掌握一个实时操作系统,我当年做的时候是UC-OS/2火爆(3,4年前,因为免费),现在不知道是什么了最盛行,VxWorks这类高级的等楼主工作才有条件接触。对于驱动的话,硬件电路一定要过关,最起码能熟练的分析电路时序图,而且得知道WIN底层细节如ring0,Linux内核,VxD一定要懂,can总线,USB,1394火线等接口一定要会,当然了接口根据工作的情况而定啦,但最起码要会USB吧。
6.要学底层开发是件痛苦的事情,如过搞驱动的话(本人的老本行),起码要准备精通硬件和软件的两个方面,不容易啊,要学的东西太多了,最最关键要奈得住寂寞,还要忍受许许多多光离陆怪的BUG的考验和无数次死机的打击。学嵌入式,得破点费买点学习工具。
呵呵,最后,祝楼主学习一帆风顺!
顺带补充一下:逆向工程对楼主现阶段帮助意义不大,学习逆向也是非常耗精力的事情,你必须了解工具的使用工具的使用,PE格式,脱壳的技巧,密码学等等等等,它更接近黑客的行为,而不像开发。。。不如楼主把有限的时间投入到有用的事情上。
//*******************************************************************************************************
楼主若问哪本教程,我还真答不上来。我只能说,学编程没有说光看教程、光听课就能精通的一门技术的事情,真的还是动手实践是最关键的;计算机科学是项实践大于理论的科学技术。实践出真知。要学C,我的建议是:看完一本教程就足够了,然后的事情就是要多去动手做点东西,在做的过程中,会不断的积累代码技巧,会领悟到书上的知识点,只有通过动手的过程才能把书上的知识变为自己的知识;2.多上些技术论坛看看别人的文章,别人的问题,自己尝试着解答,尝试着与别人讨论,交流,这样才能提高快速;3.多看看一些高手写的程序源代码,学习别人的构架,吸收别人的代码的精华,为自己所用,CSDN上关于C的源代码多的是,楼主下载了去看就成了。
能做到三点,持之以恒,就足够了。
一般大学刚毕业的学生,一般很难找到底层开发的工作。都是工作一两年后有一定商业项目开发经验了,才转向底层开发的。所以楼主如果对底层开发有兴趣的话,需要大学中把基础学扎实,然后先找个做C/C++的公司锻炼一两年,然后在转入底层开发(我以前同事都是这么过来的,我自己包括我认识的做底层开发的圈子的人都是如此),毕竟大学中学的、做的东西远远够不上商业项目的要求。
底层开发的人员淘汰率很高,许多人因为跟不上知识的更新而离开,毕竟它需要掌握两个领域的知识,而这两个领域都是飞速发展的行业,一年一个样啊。。。
以上是我的一点浅见,供楼主参考。
//*******************************************************************************************************
底层开发范围太广。不过看开源项目肯定能提高很多
1.如果想学习数据库原理 看mysql的源代码
2.如果想学习操作系统, linux的源代码
3.如果想学习网络,看ace源代码 加上tcp/ip那3本书不错
4.如果想学习图形编程, ogre源代码,第二人生源代码
5.如果想学习编译器, 看lcc源代码和python源代码
不要光看,要多写代码,即使你觉得自己写出来的代码很垃圾也要不停的写代码,当你代码写到一定的量的时候,你的代码
质量肯定会好很多
不建议去找c++的书籍狂看,因为c++对于初学者来说实在太复杂.其次,c++复杂的部分,比如模板,除非你去写stl或者boost库才可能要熟练掌握,对于开发只需要会使用就可以了
一、
呵呵,看楼主这么有志气,看来后继有人了,偶从底层转出了一段时间了,现从事JAVA,不过还是很怀念当年用汇编和C操纵底层硬件的,一切尽在掌握中的感觉---爽啊,现在的JAVA代码写得偶都要睡着了...。
在这里给楼主点建议:
1.关于c++:对于底层来说c++基本可有可无,主要还是C,不过OO的思想还是每个CODER的基本功,还是得了解了解滴,偶个人不推荐学C++去了解OO,c#和java才是面向对象的典范语言。
2.关于C:楼主要搞底层的话,光看看老谭的入门C是没有用的,C必须相当的精通,要精通的什么程度呢,举个2例子说吧:楼主知道C怎么处理浮点数变量赋值为0的细节吗,知道怎样不写main函数而生成可执行的C程序吗?如果你能不查资料一下子说出了答案来,那你的C才算过关。
3.关于汇编:8086下的汇编只是入门而已,必修罗云彬的《win32汇编》(具体名字我忘了,可以到他的网站上看看,他的书都是底层开发的圣经),一定要在大学期间把这本书吃透。
4.关于逆向:也就是所谓的破解,有兴趣就搞搞,不是十分推荐。因为绝大多数破解的软件的汇编代码非常以读懂,当然了如果你破解水平高的话也能搞出非常经典的代码出来。我有段时间也凑过逆向的热闹,可能因为水平原因反编译出来的代码可读性非常差。
5.底层的的分类是比较多的,主要有嵌入式开发,开源操作系统内核编写,BIOS开发(中国会这个的没有几个),驱动开发,病毒编写(也算是吧),主要是驱动开发和嵌入式开发为主。对于嵌入式:起码掌握一个实时操作系统,我当年做的时候是UC-OS/2火爆(3,4年前,因为免费),现在不知道是什么了最盛行,VxWorks这类高级的等楼主工作才有条件接触。对于驱动的话,硬件电路一定要过关,最起码能熟练的分析电路时序图,而且得知道WIN底层细节如ring0,Linux内核,VxD一定要懂,can总线,USB,1394火线等接口一定要会,当然了接口根据工作的情况而定啦,但最起码要会USB吧。
6.要学底层开发是件痛苦的事情,如过搞驱动的话(本人的老本行),起码要准备精通硬件和软件的两个方面,不容易啊,要学的东西太多了,最最关键要奈得住寂寞,还要忍受许许多多光离陆怪的BUG的考验和无数次死机的打击。学嵌入式,得破点费买点学习工具。
呵呵,最后,祝楼主学习一帆风顺!
顺带补充一下:逆向工程对楼主现阶段帮助意义不大,学习逆向也是非常耗精力的事情,你必须了解工具的使用工具的使用,PE格式,脱壳的技巧,密码学等等等等,它更接近黑客的行为,而不像开发。。。不如楼主把有限的时间投入到有用的事情上。
//*******************************************************************************************************
楼主若问哪本教程,我还真答不上来。我只能说,学编程没有说光看教程、光听课就能精通的一门技术的事情,真的还是动手实践是最关键的;计算机科学是项实践大于理论的科学技术。实践出真知。要学C,我的建议是:看完一本教程就足够了,然后的事情就是要多去动手做点东西,在做的过程中,会不断的积累代码技巧,会领悟到书上的知识点,只有通过动手的过程才能把书上的知识变为自己的知识;2.多上些技术论坛看看别人的文章,别人的问题,自己尝试着解答,尝试着与别人讨论,交流,这样才能提高快速;3.多看看一些高手写的程序源代码,学习别人的构架,吸收别人的代码的精华,为自己所用,CSDN上关于C的源代码多的是,楼主下载了去看就成了。
能做到三点,持之以恒,就足够了。
一般大学刚毕业的学生,一般很难找到底层开发的工作。都是工作一两年后有一定商业项目开发经验了,才转向底层开发的。所以楼主如果对底层开发有兴趣的话,需要大学中把基础学扎实,然后先找个做C/C++的公司锻炼一两年,然后在转入底层开发(我以前同事都是这么过来的,我自己包括我认识的做底层开发的圈子的人都是如此),毕竟大学中学的、做的东西远远够不上商业项目的要求。
底层开发的人员淘汰率很高,许多人因为跟不上知识的更新而离开,毕竟它需要掌握两个领域的知识,而这两个领域都是飞速发展的行业,一年一个样啊。。。
以上是我的一点浅见,供楼主参考。
//*******************************************************************************************************
底层开发范围太广。不过看开源项目肯定能提高很多
1.如果想学习数据库原理 看mysql的源代码
2.如果想学习操作系统, linux的源代码
3.如果想学习网络,看ace源代码 加上tcp/ip那3本书不错
4.如果想学习图形编程, ogre源代码,第二人生源代码
5.如果想学习编译器, 看lcc源代码和python源代码
不要光看,要多写代码,即使你觉得自己写出来的代码很垃圾也要不停的写代码,当你代码写到一定的量的时候,你的代码
质量肯定会好很多
不建议去找c++的书籍狂看,因为c++对于初学者来说实在太复杂.其次,c++复杂的部分,比如模板,除非你去写stl或者boost库才可能要熟练掌握,对于开发只需要会使用就可以了
相关文章推荐
- [导入] * 网站首页 * 技术论坛 * 书籍收藏 * 日志标签 * 网友评论 * 友情链接 * 注册 * 登录 Visual Studio创建项模板心得
- 学习网络技术的一些常用论坛和网站
- webcast(.Net Compact Framework 数据访问技术杂谈)学习笔记
- MIT技术评论评选2013十大突破性技术:深度学习居首
- Java2核心技术学习笔记 分类: java 2009-11-29 23:54 339人阅读 评论(0) 收藏
- 技术学习论坛地址收集
- 学习软件技术必备的专业网站和论坛
- 关闭 晓K的专栏 我的学习历程 目录视图摘要视图订阅 赠书 | 异步2周年,技术图书免费选 每周荐书:渗透测试、K8s、架构(评论送书) 项目管理+代码托管+文档协作,开发更
- 发现一个学习好技术、下载好软件的论坛
- 学习视频技术论坛
- 笔记:运放的放大问题摘自TI技术论坛
- 关闭 晓K的专栏 我的学习历程 目录视图摘要视图订阅 赠书 | 异步2周年,技术图书免费选 每周荐书:渗透测试、K8s、架构(评论送书) 项目管理+代码托管+文档协作,开发更
- 今天在论坛里看到一网友问关于网络的最新技术,就随便写了点
- D2前端技术论坛之网页无障碍学习笔记
- 技术学习网站和论坛
- 鼠标从这里开始 国外搜索引擎的搜索技术与内容提供关系图(转摘自福步外贸论坛)
- 股票四度空间指标学习心得 分类: 股票技术探讨 2015-08-04 22:40 5人阅读 评论(0) 收藏
- 微软论坛2009全新奉献,全新打造技术自测系列活动:一起学习Silverlight
- 嵌入式技术论坛 - linux学习笔记
- MyBatis学习4---使用MyBatis_Generator生成Dto、Dao、Mapping 分类: MyBatis JAVA开发杂谈 2013-06-04 16:30 17467人阅读 评论(