精华内容
下载资源
问答
  • 哀家毕业论文就是做的生物信息...EMBL库,欧洲分子生物实验室的DNA和RNA 序列库 GenBank ,美国国家生物技术信息中心 (NCBI)所维护的供公众自由读取的、带注释的DNA序列的总数据库 DNA Databank of Japan

    哀家毕业论文就是做的生物信息方向,《150株酸菜乳酸菌的菌种类型分析》,NCBI,真是怀念啊~~


     生物信息学,离不开大规模的数据处理,因此很多只能是通过计算机来实现.另一方面,生物信息学的数据和其他的计算机处理的数据也没有多大的特殊性,因此理论上来讲几乎所有的编程语言都可以用于生物信息的数据处理,但是效率却很不一样.

      就目前来说,在生物信息学中常用的语言有c,c++,python,perl,java,matlab,r/bioconductor,SAS,SPSS(这几个主要用于统计),等.

      其中python和perl属于脚本语言,并且现在都有生物学上的扩展,如python有biopython,perl有bioperl,由于perl出现的比较早,因此其在bioperl可能是老一辈的生物信息学家或者甚至是有些生物学家常用的语言.但是,另一方面,我们也要看到python也很快的提供了许多生物学上的便利,并且一步步显示出其优势


     java,在生物信息学上的应用是很广的,从数据处理,到界面程序的设计,然后到网页界面的交互,无一不体现出其优势,我们可以看到很多生物信息学的门户网站在3d结构的显示都是以java插件的形式存在的.但是,java的广泛应用,也存在着很大的缺陷,速度慢,体积大等缺点也让很多人望而却步.


    INSD,国际核酸序列数据库


    EMBL库,欧洲分子生物学实验室的DNA和RNA 序列库


    GenBank ,美国国家生物技术信息中心 (NCBI)所维护的供公众自由读取的、带注释的DNA序列的总数据库




    展开全文
  • 学编程些什么

    万次阅读 2014-07-17 16:46:38
    虽然一直想写点什么,但是感觉自己怎么写肯定都不如书上写的好,所以到最后感觉还是推荐点书比较好。 下面列举一些自己感觉还不错的书,可能会和以前的有重复,就当做总集篇吧。一般好书都有些难度,而且

    下面列举一些自己感觉还不错的书,可能会和以前的有重复,就当做总集篇吧。一般好书都有些难度,而且看很多书还需要一些铺垫的知识,我只从我自己知道的提一些,不足之处还请见谅

    编程基础




    书名:《C++编程思想》

    推荐理由:虽然很多人推荐《C++ Primer》,而且确实我也觉得那本书写的挺好的,不过如果真觉得哪本书把C++讲的更让我舒服一些,我还是选择它。里面对于虚函数与虚函数表、多态、晚捆绑、模板、多重继承等问题都做了很详细的介绍,甚至还对类方法调用的机器码都做了详细介绍,从原理上弄明白了C++到底算什么。



    书名:《Effective C++》

    推荐理由:在看这本书之前建议还是先看看《C++编程思想》这本书,在没有太多基础的情况直接看《Effective C++》是相当痛苦的一件事情,这本书不针对整个C++体系进行介绍,而是专门针对C++在具体应用过程中非常重要的一些内容,如构造、析构、虚函数、多态、异常、模板、常量等一些我们容易忽略的细节问题中给出了详细的讨论。看这本书不仅是让我们写出给优美的代码,目的更是让我们加深对C++的理解。不知道是不是我个人的原因,感觉看侯大翻译的很诡异,感觉看的时候语句变得很晦涩难懂。



    书名:《More Effective C++》

    推荐理由:这本书算《Effective C++》的一个补充版本,在一些更加深入的细节部分给予的讨论,如果能够把《Effective C++》给看个明白,这本书其实也就没那么难了。不建议上手就开始读它,难度有些高。



    书名:《Java编程思想》

    推荐理由:如果懂C++了,学习Java真心是一件很容易的事情,因为它没有了C++中令人讨厌的指针,不用像C++一样需要自己做堆管理,多了接口、包这样非常适合设计的内容。甚至还有大量的类似Spring、Hibernate这样的开源框架。我们没有理由不喜欢Java编程,它让我们将更多的精力集中在编程,而不是语法的细节上。那这本书的好处就是,给我们详细讲述了Java的语法和基本原理。如果懂C++,这本书可以说就是一本工具书,如果不懂C++,那这本书也很适合作为一本教材。所以没理由不推荐。



    书名:《Effective Java》

    推荐理由:和推荐《Effective C++》的理由一样,Java虽然让我们少了很多对语法细节的关注,但是如何将Java的语言特性发挥出来却不是一件很容易的事情。这本书就在这些细节问题上给出了非常详细的讨论,如类与接口、泛型、注解、方法等很细的内容。



    书名:《STL 源码剖析》

    推荐理由:学习了C++,肯定觉得立面的STL很强大,但是肯定会有很多人说STL一定要根据具体情况而使用,而不能胡乱用,那心里一定忐忑如何才能将这些容器给用正确使用。做法很简单,只要知道它们底层的机制就可以了,所以这本书相当值得推荐,它告诉你为什么vector、list、map、heap、set、queue、dqueue、stack等等各种数据结构底层的实现,它还告诉你什么是迭代器,我们是如何使用模板这一高级特性的。这本书还为以后学习数据结构打下基础,而且学习Java的时候,Java的容器就很容易上手了。这本书难度有些高,最好多用STL解决几个问题后再读。如果对C++懂的比较多,读起来效果更佳。



    书名:《程序员的自我修养——链接、装载与库》

    推荐理由:讲解编译和链接过程的书非常的少,讲编译的书我只知道《编译原理》,讲链接的书我只知道《链接器源加载器》和这本了。这本书难度会比较大,最好懂的Linux内核中关于进程地址空间、页表与内存寻址、进程描述符和中断相关的知识。这样对这本书中一些知识点才比较好理解。另外,最好还需要懂的编译GCC工具链,这样才能对书上的内容进行验证。最后,最好还需要懂一些X86架构体系的知识,或者懂一些汇编,这样里面的一些内容才能看的明白。所以要看这本书,需要的前期准备其实是比较久的,但是如果看懂了这本书,以后再看C++、Java、Ruby这种语言,又完全是另外一番味道了,尤其在看Java虚拟机这样的书的时候,就非常容易理解那些书上说的是什么。如果说之前的几本书是外功的话,这本书就是一本内功书籍,以后很多外功都可以靠它来修炼。



    书名:《深入理解Java虚拟机》

    推荐理由:学了Java,如果还没有学Java虚拟机,那Java真心觉得白学了。弄明白了Java虚拟机的内容,那Java真心就没那么难了。这本书也有一些难度,如果看懂了《链接、装载与库》这本书,那这本书就没什么难度可言,如果没有看懂,那这本书看起来就相对吃力了,其实它里面讲的内容还是编译、链接、加载过程,只是它讲述的是Java是如何做到的,当然这本书还介绍了Java下的堆是如何进行管理的。标记-清理和引用计数是堆管理的两大机制,对以后的学习很有帮助。

     

    书名:《Unix环境高级编程》

    推荐理由:从顶层学习Linux系统绝佳的一本书,Linux系统非常经典的就是它定义了很少的一些经典的系统调用,这本书主要就是通过介绍这些系统调用,告诉我们一个Unix系统应该有什么样的特性,这本书不仅仅是可以当做一本工具书使用,更可以当做一本教科书使用,配合上《Linux系统管理手册》两本书一起看,收获很多。

    书名:《Unix网络编程卷1:套接字编程》《Unix网络编程卷2:进程间通信》

    推荐理由:我原来是学网络工程出生,本科学习的都是《TCP/IP协议族》《局域网与城域网》《接入网技术》《计算机通信网络》《交互网络》这些理论书籍,但是这些书学完以后总感觉自己光有理论知识,但是却没办法将其转换成实际的代码,而让我真正可以开始进行网络编程的入门书籍就是《Unix网络编程卷1》这本书,书中十分详细的介绍了各种套接字,如TCP、UDP、STCP的调用接口,还很详细的比较了各种实现方案:基于信号、阻塞、多路复用、基于线程池情况下如何进行网络编程,在理论的基础上更多了很多系统的知识,可以说是将理论与实际相结合。《Unix网络编程卷2》呢,它十分细致的整理了各种进程与线程间通信和同步的方式,如果希望自己有并发编程的基础,那这本书也可以说是入门的必选教程了。

     

     

    设计基础



    书名:《UML精粹 标准对象建模语言简明指南》

    推荐理由:这本书说起来很鸡肋,它仅仅告诉我们UML该怎么画,偏偏这本书又贵的要死(另外一本我觉得贵的要死,内容又没想象的好的书就是《编写可读代码的艺术》)。当时还是需要推荐这本书,学了那么多C++和Java,或多或少都听过对象建模,那必然需要翻看一些建模类的书籍,但是那些书籍都默认大家懂得UML,这样一来就出现一个落差——看不懂图。这本书的目的就是告诉我们,如何去看别人画的图,如何将代码与图对应起来。可以说它就是我们迈向系统架构的第一步基石(虽然它很鸡肋)。



    书名:《设计模式:可复用面向对象软件基础》

    推荐理由:学习面向对象编程中的基础,虽然这本书已经很久了,里面的模式已经被用烂了,但是我们还是需要学习它,学完它,我们就懂了什么是工厂,以后学习Spring这样的框架就很容易了;学完它,我们就懂了什么是代理,以后学习AOP就显得自然;学完它,我们就懂了什么是观察者,以后什么MVC架构都不会吃力;学完它。。。书中给出了23中设计模式,虽然并不是每种都一样的实用,但是它给了我们如何更加有效、合理的去利用对象、多态这样的特性,如何更好的去做一个内聚的、高可复用的、松耦合的架构的基础,记住:它给的仅仅是基础,真正难的还在后头。



    书名:《敏捷软件开发:原则、模式与实践》

    推荐理由:我才学完《设计模式》的时候,我觉得它很强大,就迫不及待的去应用它,结果在用的时候出现了各种各样的问题。我一直弄不明白如何将这些设计模式和UML结合起来,我不知道如何将设计模式融入到自己平时的代码中。看了这本书以后,我感觉我找到了一些答案,这本书的内容非常丰富。当然,它的要求我感觉也比较高,不懂的人觉得它从头到尾都在贴代码,但是其实不是这样,这本书中隐含着整个代码开发的过程。它告诉我们我们平时设计类的时候的原则有哪些、我们设计包的原则有哪些、我们应该抱着什么样的心态去编码、我们如何与他人合作编写代码、我们该什么时候开始利用设计模式等等。虽然好处非常多,但是我感觉没有切身体会过自己设计、编码、与人合作的痛苦,看这本书的共鸣肯定就会小很多,真的是痛越多,感触就越多。



    书名:《重构:改善既有代码的设计》

    推荐理由:最开始写代码的时候,我那个一个揪心呀,总觉得代码写起来是那么的困难。一会担心效率问题、一会担心命名问题、一会担心代码排版。。。代码删删改改、涂涂写写,老半天憋了十几行代码,结果用的时候还是要出问题。其实,这是一个方法的问题——写代码其实是有一定步骤的,我们需要做到的事情就是——一次只做好一件事情。写代码可以分成添加功能、重构、测试三个过程,看完这本书,我们就懂的了我们应该在重构过程考虑什么问题,这本书不仅仅可以作为一本工具书,也告诉了我们怎么样去编写代码。



    书名:《Junit实战》

    推荐理由:本来是应该推荐《软件测试》这本书,不过那本书我买了还没看,我学习如何利用测试驱动开发是从《JUnit实战》这本书开始的,所以测试相关的书也只能从这本书开始推荐了,感觉看这本书不是为了学习JUnit而看它,更多的是我们要弄明白为什么我们要测试,我们应该什么时候去测试,我们应该如何进行测试,我们应该测试什么,我们应该如何去保证我们的测试是完整的,我们如何在条件不完全的情况下构建测试。而不仅仅是学完以后,知道了一个JUnit怎么用。测试其实是一门非常难的事情,最少我看来它并不是想做就做好的,不是点击几下鼠标就叫做测试。我所知道的写代码就是:测试、重构、实现。每个环节都不是那么容易做到的。




    书名:《程序员修炼之道——从小工到专家》

    推荐理由:很有意思的一本书,讲述了我们平时应该以什么样的心态去面对代码,面对项目,面对团队合作,面对测试。。。这本书感觉没有什么门槛之说,但是更感觉它是写给参与过的项目开发的程序员看的,感觉越是资深的程序员,对这本书的认可度就越高。



    书名:《编程珠玑》

    推荐理由:也是相当有趣的一本书,不过它不是讲述如何去面对团队合作,更多的将尽力放在我们应该如何去面对我们的代码,但是它告诉我们面对代码的心态又和《重构》这种书介绍的不一样。重构更强调的是代码的命名、清晰与减少代码重复度等内容,而这本书更多的是告诉我们应该如何从算法、性能、复杂度等方面去重新考虑代码的编写。但是这本书还是相当值得读的,读了它以后,以后学习算法的时候的心态就会变得更加的坦然了。



    书名:《Linux/Unix设计思想》

    推荐理由:这本书也相当的有趣,没太多的难度,完全可以当做一本科普书来读,但是它讲述的思想死意义深远的。其实到最后,我感觉它的思想就是我们现在项目工程的思想,只是两者用在了两个不同的领域,给出了不同的指导,最后的纲领其实还是一样的。


    很可惜的是我没有做过太多的架构方面的知识,结果这一块内容的书一直都是看的迷迷糊糊,下面会依次介绍一些,我只知道他们是好书,但是没办法做太多介绍。


    书名:《大象:Think in UML》

    推荐理由:这本书个人是感觉写的非常好,它先介绍了UML的各个元素以及RUP的过程,最后再将这些内容整合起来,用一个具体的项目实例告诉我们如何利用UML和RUP进行架构设计。



    书名:《UML和模式应用》

    推荐理由:这本书也是好书,其实内容也和《Think in UML》有些像,不过这种书多看个两本,对UML的理解就更加深刻了。



    书名:《领域驱动设计:软件核心复杂性应对之道》

    推荐理由:这本书关注与领域模型的构建,但是感觉讲的好抽象,看不懂,但是可以肯定,它绝对是一本好书



    书名:《编写有效用例》

    推荐理由:这本书关注于用例模型的构建,但是没有机会接手项目的这个过程,所以看起来还是很抽象,但是我还是可以肯定它绝对是一本好书



    书名:《分析模式:可复用的对象模型》

    推荐理由:针对领域模型的分析过程,这本书也相当的抽象,里面的图都感觉非常难看懂,但是可以肯定它绝对是一本好书



    书名:《企业应用架构模式》

    推荐理由:这本书虽然对表示层、领域层和持久化中间层都做了介绍,不过感觉花费的精力更多的是如何对持久化中间层的设计,我所知道的就是,如果要深入学习Hibernate的机制,那这本书绝对可以提供非常好的指导作用,所以这本书也是一本好书。



    书名:《面向模式的软件架构卷1~5》

    推荐理由:能够出版到卷5的书相信不需要太多理由了,不过这几本书感觉难度还是有些大,反正我看的时候也是看的云里雾里的,没有太多的心得。



    Linux与操作系统

    接下来介绍一些系统原理方面的书:


    书名:《Linux内核设计与实现》

    推荐理由:学习Linux内核很好的一本入门书籍,Linux内核可以说相当的复杂,从任何方面入手都相当的有难度,有的人说先看0.11版的内核比较好。我不完全赞同,在不知道什么是中断、什么是进程、文件抽象、内存管理、内存寻址、文件系统、块I/O与页缓存、虚拟地址空间、模块。。。。等等概念前,看任何Linux内核的书都是很困难的。推荐这本书的理由比较简单,它在介绍内核,但是它又不介绍内核的具体源码;它告诉我们不同子系统下有些什么,但是又不介绍这些子系统的具体实现。所以我觉得它是一本非常好的入门书籍。看完这本书不敢说自己懂内核了,但是我们最少知道了内核有什么东西,后面会慢慢介绍一些讲的更加具体的书籍。



    书名:《Linux内核设计的艺术》

    推荐理由:相信如果只是看了《Linux内核设计与实现》,肯定会觉得内核东西太多,完全搞不明白为什么这些东西怎么组合在一起就可以工作了,那这时候最推荐的一本书就是《Linux内核设计的艺术》,虽然这本书只是讲0.11版的内核,但是它讲的方式很有意思,它是从Linux内核从上电的时候开始的整个系统初始化过程,我们将在书中看到内核启动过程中是如何从实模式转换到保护模式、内核级和用户级是如何调整的、中断向量表是如何重构的、系统内核是如何加载的、中断是如何执行的、内存是如何初始化的、页表是如何构建起来的、文件是如何访问的、进程间通信又是如何实现的。。。不要觉得这本书介绍的内核版本太低,其实现在的内核也是这样做的,只是系统更加复杂而已。还有一本和这本书类似的书叫做《独辟蹊径:从内核源码导入》,只是那本书我没有看过,但是也是一本好书。不过看这本书的时候需要一些铺垫,最少对内核中应该有哪些东西有个大致的概念,还需要对X86的架构有一些了解。



    书名:《Linux内核完全剖析——基于0.12内核》

    推荐理由:这本书我感觉后面2/3的内容可以不看,主要是前面一部分的内容最好看看,因为这部分恰好和《Linux内核设计的艺术》这本书相补充,看完那些内容以后再看《Linux内核设计的艺术》就变得相对容易一些了。




    书名:《深入Linux内核架构》

    推荐理由:它个头很大,当然块头大不能成为推荐它的理由,但这本绝对要比《深入理解Linux内核》这本书要好,《深入理解Linux内核》和《深入理解Linux网络技术内幕》这两本书完全是被国内的翻译者给毁掉的两本书,虽然这两本书都很好,但是翻译的作者太不给力了。这本书比《深入理解Linux内核》更好的一点就是它讲每个模块的内容都讲的比较详细(只是比较详细,因为在一些具体的模块部分可以找到更加详细的书)。但是就是这样都洋洋洒洒上千页。算是我的书柜中最厚的两本书之一了。可以把它当做《Linux内核设计与实现》这本书的增强版就可以了。这本书不推荐入门就看,否则会被他各种细节给绕晕掉的。



    书名:《深入理解Linux虚拟内存管理》

    推荐理由:这本书非常的奇葩,附录居然占据了将近2/3的内容,而且这本书也是被出版社毁掉的一本书,后面代码缩进全部没有了,看起来是蛋疼无比。但是我能找到的讲解Linux虚拟内存的书只有它,而且它讲的还是2.4的内核。但是不可否认这本书在虚拟内存部分做了很深入的解释,在没有出现更好的介绍Linux虚拟内存管理的书籍之前,我们只能看它了。善哉。。。



    书名:《深入理解Linux网络技术内幕》

    推荐理由:虽然这本书被翻译者给毁了,但是不可否认这本书讲的的确非常的好,它认真剖析了帧传输、桥接、ip、icmp、tcp、udp、邻居子系统、路由子系统等等网络协议栈中的具体实现问题,在介绍Linux网络协议栈上,是我看过的最好的一本书了。不过这本书的入门门槛也很高,首先需要对Linux内核有比较多的认识,包括虚拟文件系统、中断、设备驱动、内存管理等相关的知识,此外还需要懂的网络协议栈的知识,包括了TCP、UDP、IP、ICMP、ARP等协议的内容。所以看它需要的准备工作也非常的多。





    书名:《Linux内核源码剖析——TCP/IP实现》

    推荐理由:虽然《深入理解Linux网络技术内幕》这本书讲的很好,但是网络协议栈还是得真枪真刀的看看源码才懂的具体的机制,这本书的好处就是它很详细的介绍了网络协议栈中代码,并且还对《深入理解Linux网络技术内幕》很多没有提到的细节提供了补充。所以这本书完全可以和《深入理解Linux网络技术内幕》一起搭配着具体源码一起看,相信效果会非常的好。



    书名:《存储技术原理分析:基于Linux 2.6内核源码》

    推荐理由:这本书也是一本神书,因为它对内核存储部分的内容可以说做了相当详细的介绍,这在其它的一些书上绝无仅有的,从中你可以深入到虚拟文件系统、块I/O子系统、PCI子系统、SCSI子系统、Multi-Disk、Divice-Mapper模块的最深入部分去一探究竟。这是我最喜欢的几本书之一,虽然其中很大一部分内容我因为不感兴趣而没看,但是我感兴趣的那些内容就已经让我相当的满足了。当然这本书要求也很高,也是需要对内核中的设备驱动、文件系统、虚拟文件系统、内存管理等内容有比较多了解。其中还有一些因为我们都没见过那些设备,导致看不明白的内容。

     


    书名:《深入理解计算机系统》、《现代操作系统》

    推荐理由:这两本书都很喜欢,不过看的更多的还是后者,这种书怎么说呢,理论多于实际,但是我们可以利用实际来验证理论。这种书就在一个很高的角度告诉我们计算机系统(操作系统)为什么应该长这样,还可以有其他的实现方式么,为什么我们不采取其他的实现方式,我们现在使用的方式存在问题么等等问题。

    算法



    书名:《算法:C语言实现》

    推荐理由:虽然不玩ACM,但是感觉还是有必要学习一些算法,最少懂的一些基础是数据结构,算法类的书看的很少(因为太难了),最喜欢的还是这两本(作者说要写3本的,结果多少年了第三本还没出来)。不过最近有一点心得,看这本书最重要的就是理解它里面想要表达给自己的思想,而不是对着书抄一遍,然后运行,发现成功了,再把代码背住就算自己学会了。所以说会算法的人都是神呀,这东西完全就是只可意会不可言传。反正我就一个感觉,什么时候我们看算法能够得出“看山是山,看山不是山”的结论的时候,就算有些明白到底要学什么了。



    书名:《算法导论》

    推荐理由:这本书也是神书(和TAOCP那种超越神的书没法比了),我觉得每隔一段时间看它总有一种新的体悟,不过这本书也不是太好懂。个人的一些心得就是,先到网易公开课找到MIT算法导论的公开课(老师就是这本书的作者),看它一遍,另外,自己动手写代码,这里的写代码不是将书上的伪代码实现了就叫写了,而是去做一些算法的题目,比如《编程之美》上面的题,或者任何一些竞赛入门的题,再看看类似《背包九讲》《男人八题》《微软面试100题》这些的文章。我也说不清那种感觉,反正每隔一段时间,对这些东西就会有一种完全不同的体悟。可能算法的魅力就在于此吧。

     

    接下来的书都是没怎么看,或者看不懂的书了


    书名:《计算机程序设计的艺术》

    推荐理由:神书,不解释,看不懂

    书名:《信息检索导论》

    书名:《数据挖掘导论》

     

    书名:《模式分类》

     




    新入手的一些好书

    下面介绍的书籍都是刚刚入手的好书,虽然没有读过,

     

    书名:《领域特定语言》

    书名:《代码大全2》

    书名:《持续集成:软件质量改进和风险降低之道》

    书名:《离散数学及其应用》

    书名:《组合数学》

    书名:《具体数学》

    书名:《图论》

    书名:《事务处理》

    书名:《HTTP权威指南》

    书名:《Git权威指南》

    书名:《计算机程序的构造与解释》

    书名:《大数据挑战与NoSQL数据库技术》

    书名:《Java虚拟机并发编程》

    书名:《MySQL技术内幕:InnoDB存储引擎》

    书名:《软件调试》

    书名:《DEBUG HACKS》


    转载http://blog.csdn.net/minghe_uestc/article/details/9255621

    展开全文
  • 这样学编程,直接原地起飞啊!

    万次阅读 多人点赞 2021-04-22 10:41:37
    大家好,我是二哥呀。 今天来给大家分享一些学习编程的心得,真的颠覆了我以前对学习编程的...前者代码写得多,但基础不扎实,刚学编程时候的我应该属于这一类;后者代码写得少,一句“talk is cheap, show me the co

    大家好,我是二哥呀。

    今天来给大家分享一些学习编程的心得,真的颠覆了我以前对学习编程的刻板印象,可以这么说,如果你恰好处在大学阶段,看到了这篇内容,OK,恭喜你,如果你能按照我说的去做,大三大四的时候绝对能领先同学一大截,除非你好心把这篇内容分享给他——嘿嘿。

    编程分两种,一种是实操型,奉行的准则是实践出真知;一类是理论型,奉行的准则是全部的知识都要搞懂后才肯去动手。前者代码写得多,但基础不扎实,刚学编程时候的我应该属于这一类;后者代码写得少,一句“talk is cheap, show me the code”就被呛得想动粗。

    真正的大牛,能在两者之间找到一个巧妙的平衡点。

    对于上班族或者转行的同学来说,想把所有的知识点都铺开去学习完,确实不现实,最好的办法就是重实战,然后再补理论。对于科班的在校大学生来说,因为有充足的时间,所以可以在理论知识上多花一些时间,等到工作后再弥补实践上的短板我认为是最正确的方式。毕竟鱼和熊掌不可兼得呀!

    最近些年,可能是因为写作的原因,我补充了大量的基础知识,就突然感觉“今非昔比”了,编程上有了很大的进步,尽管依然很菜,但比前些年自认为好了很多。

    好了,废话就不多说了。先给大家推荐一门课,哈佛大学的 CS50。

    老师非常激情,尽管没有在现场,但依然有一种身临其境的感觉。第一节课,直接就叫同学到讲台上撕了一本超级厚的书,就为了给同学们灌输一种思维——说得直接点,就是二分查找法,先把书撕一半,然后再撕一半,再撕一半,直到找到一个 M 开头的名字。

    总共也就 20 多节课,每节课大概一个小时左右的时间,大家可以每天刷一节。我简单列一下课程的目录,基本上都是编程中要搞懂的基础知识。

    • 算法、程序设计、语言等
    • 数据存储、磁盘等
    • C 语言、源代码、编译器等
    • 函数、全局变量、参数、返回值等
    • 线性搜索、二进制搜索
    • 符号、递归、冒泡排序等
    • 归并排序、动态内存分配、堆和栈等
    • 指针、文件输入输出等
    • 数独、计算机史上最有名的 bug 等
    • 魂斗罗游戏如何分配内存等
    • 哈希函数等
    • 网络编程等
    • 网络安全等

    说一件挺不好意思的事,我以前觉得只学 Java 这门编程语言就够了,做个 CRUD 的好 boy 不就挺好的嘛。然后随着时间的推移,越来越觉得这个想法有点天真,有点无邪,哈哈,还是要力争上进的,多学点没啥坏处。

    一开始学也行,随后补也行,总之是不能想当然的不学,会吃亏的,吃大亏的。

    关于 C 语言,我之前给大家推荐了浙大教授翁恺的视频,以及一个英文的在线学习网站,新来的同学可以去看一下。

    https://www.bilibili.com/video/BV19W411B7w1

    大家应该能发现,很多讲解计算机科学相关的书籍,包括课程,里面的例子几乎都是 C 语言描述的。我在《一把小刀,直插 class 文件的小心脏》这篇文章里也提到了 C 语言的符号表(Symbol Table)。

    C 语言是很古老了,但越老的东西活得越久,越能证明它的优越性。

    不得不说,哈佛就是哈佛,名校就是名校,这课程真心给力。如果你真的是对计算机科学感兴趣,并且将来要进入这个行业工作,强烈建议多刷几遍。

    这是一个在编程界混吃等死了十多年的老菜鸟给初学者的最良心的建议。下面是这门课程的地址。

    https://open.163.com/newview/movie/free?pid=M6U6LS8CV&mid=M6U6MHDUR

    刷完这门《哈佛大学的 CS50》,也刷完了翁恺教授的《C 语言程序设计》,就可以看看下面这本天书了!

    这本书牛不牛逼,直接看豆瓣评分就能感受到,基本上全星,应该说是计算机相关书籍中评分最高的一本了吧。

    那肯定是一门好书,一本再好不过的书了。

    但能不能看得懂,能不能耐着性子看下去,就需要看你的定力了!

    这本书从计算机开始讲,介绍了电脑主机有什么部件,主板上有什么零件,CPU、内存和硬盘之间是怎么连接的。

    介绍了我们写的程序是怎么从一个文本文件被编译,然后是怎么变成汇编语言,再到机器码的,以及怎样被计算机执行的。

    还讲到了计算机网络、计算机组成原理、进程和线程等等,从硬件到软件,全部拿下。

    这本书读完后会有哪些收获呢?

    • 明确某一个阶段我们欠缺什么知识。
    • 对技术有极客追求的同学会在这本书里找到很多答案。
    • 终于明白了,我们写的程序是怎么被计算机执行的。

    再次强调,《深入理解计算机系统》这本书对初学者并不友好,可能需要在不同的时间节点反复的看,一开始看不懂的内容可以过一段时间再看,如果还看不懂就再等等,过一段时间回来再继续看。另外,书里面很多例子都是用 C 语言写的,所以在看这本书之前一定要把 C 语言给吃透了。

    总之,不要抱着那种一定要把这本书吃透再怎么怎么样的幻想。先从中学到 1%,再学到 5%,再到 10%,不要操之过急,学到点是点,能学到多少都是值的,不抛弃不放弃,嘿嘿。

    如果真的想从事编程,当做一份职业来对待的话,你需要一本这样的书

    读这本书的同时,可以着手学习数据结构了,比如说数组、链表、树、图,以及哈希表等。为什么要学习数据结构呢?

    清华大学邓俊辉老师的答案:数据结构作为构建高效算法的必要基础,在计算机科学领域中,起到了技术体系的基石的作用。以 ACM/IEEE Computing Curricula(计算机教学大纲)2005 年版为例,其中对于计算机科学、计算机工程、信息系统、信息技术、软件工程等几个相关专业的共同要求中,数据结构与算法作为程序设计概念与技能的核心,紧随在数学之后,排在第二位。

    当然了,基本的算法也跑不了,比如说动态规划、贪心算法,还有基本的排序算法。

    我给大家推荐一个在线的学习网站,地址如下所示:

    https://www.programiz.com/dsa/why-algorithms

    这是一个纯英文的学习网站,截图中为什么是中文的?哈哈,当然是我用 Safari 浏览器翻译过的。英文功底可以的同学可以直接看英文原版的。代码示例有多种版本,Python、Java、C 和 C++ 的都有,完全不用担心被编程语言困扰的问题。

    有 C++ 基础的同学可以直接看邓俊辉老师亲自录制的课程,有配套书籍——《数据结构》第三版,清华大学的计算机系列教材,质量没得说。

    我贴一下课程的在线地址:

    https://www.xuetangx.com/learn/THU08091000384/THU08091000384/5883586/video/9215529

    害,如果你想在毕业后或者跳槽的时候拿到满意的 Offer,甚至体验那种好多个 Offer 摆在面前,却不知道选哪一个的感觉的话,我推荐的这三门课程、一个学习网站、两本书,你值得拥有!

    最后再送大家一本美团大佬手撕的 300 道 LeetCode 刷题笔记,纯 Java 版,二哥亲自整理的,分亮白版(可以打印出来学习)和暗黑版(晚上看保护眼睛),对于算法薄弱或者需要提高的同学都十分受用(提起码:xs23):

    https://pan.baidu.com/s/1xe3r8qDuKE99p2ZD9w2XrQ

    哇塞,原来学编程可以这样呀,忍不住点个赞,嘻嘻~

    展开全文
  • 黑客要学什么编程语言

    万次阅读 多人点赞 2014-03-30 07:56:16
    基本黑客技术  黑客态度是重要的,但技术更加重要。态度无法替代技术,在你被别的黑客称为黑客之前,有...1 学习如何编程 这当然是最基本的黑客技术。如果你还不会任何计算机语言,我建议你从Python开始。它设计清晰

    基本黑客技术 

    黑客态度是重要的,但技术更加重要。态度无法替代技术,在你被别的黑客称为黑客之前,有一套基本的技术你必须掌握。 这套基本技术随着新技术的出现和老技术的过时也随时间在缓慢改变。例如,过去包括使用机器码编程,而知道最近才包括了HTML语言。但现在明显包括以下技术: 


    1 学习如何编程 这当然是最基本的黑客技术。如果你还不会任何计算机语言,我建议你从Python开始。它设计清晰,文档齐全,对初学者很合适。尽管是一门很好的初级语言,它不仅仅只是个玩具。它非常强大,灵活,也适合做大型项目。


    但是记住,如果你只会一门语言,你将不会达到黑客所要求的技术水平,甚至也不能达到一个普通程序员的水平---你需要学会如何以一个通用的方法思考编程问题,独立于任何语言。要做一名真正的黑客,你需要学会如何在几天内通过一些手册,结合你现在所知,迅速掌握一门新语言。这意味着你应该学会几种不同的语言。


    如果要做一些重要的编程,你将不得不学习C语言,Unix的核心语言。其他对黑客而言比较重要的语言包括Perl和LISP。 Perl很实用,值得一学;它被广泛用于活动网页和系统管理,因此即便你从不用Perl写程序,至少也应该能读懂它。 LISP 值得学习是因为当你最终掌握了它你会得到丰富的经验;这些经验使你在以后的日子里成为一个更好的程序员,即使你实际上可能很少使用LISP本身。 


    当然,实际上你最好四种都会。 (Python, C, Perl, and LISP). 除了是最重要的四种基本语言,它们还代表了四种非常不同的编程方法,每种都会让你受益非浅。


    这里我无法完整地教会你如何编程---这是个复杂的活儿。但我可以告诉你,书本和课程也不能作到。几乎所有最好的黑客都是自学成材的。真正能起作用的就是去亲自读代码和写代码。


    学习如何编程就象学习用自然语言写作一样。最好的做法是读一些大师的名著,试着自己写点东西,再读些,再写点,又读些,又写点....如此往复,直到你达到自己在范文中看到的简洁和力量。


    过去找到好的代码去读是困难的,因为很少有大型程序的可用源代码能让新手练手。这种状况已经得到了很大的改善;现在有很多可用的开放源码软件,编程工具和操作系统(全都有黑客写成)。这使我们自然地来到第二个话题... 


    2 得到一个开放源码的Unix并学会使用、运行它


    我假设你已经拥有了一台个人计算机或者有一个可用的( 今天的孩子们真幸福 :-) )。新手们最基本的一步就是得到一份Linux或BSD-Unix,安装在个人计算机上,并运行它。 

    当然,这世界上除了Unix还有其他操作系统。但它们都是以二进制形式发送的---你无法读到它的源码,更不可能修改它。尝试在DOS或Windows的机器上学习黑客技术,就象是在腿上绑了铁块去学跳舞。


    除此之外,Unix还是Internet的操作系统。你可以不知道Unix而学会用Internet,但不懂它你就无法成为一名Internet黑客。因为这个原因,今天的黑客文化在很大程度上是以Unix为中心的。(这点并不总是真的,一些很早的黑客对此很不高兴,但Unix和Internet之间的共生关系已是如此之强,甚至连微软也无可奈何)


    So,装一个Unix---我个人喜欢Linux,不过也有其他选择。(你也可以在同一台机器上同时运行DOS,Windows和Linux)学会它。运行它。用它跟Internet对话。读它的代码。试着去修改他。你会得到比微软操作系统上好的多的编程工具(包括C,Lisp, Python, and Perl),你会得到乐趣,并将学到比你想象的更多知识。


    关于学习Unix的更多信息,请看 The Loginataka. 

    要得到Linux,请看: 哪里能得到 Linux. 


    3 学会如何使用WWW和写HTML 


    大多黑客文化建造的东西都在你看不见的地方发挥着作用,帮助工厂、办公室和大学正常运转,表面上很难看到它对他人的生活的影响。Web是一个大大的例外。即便政客也同意,这个巨大而耀眼的黑客玩具正在改变整个世界。单是这个原因(还有许多其它的), 你就需要学习如何掌握Web。


    这并不是仅仅意味着如何使用浏览器(谁都会),而是要学会如何写HTML,Web的标记语言。如果你不会编程,写HTML会教你一些有助于学习的思考习惯。因此,先建起自己的主页。 

    但仅仅建一个主页也不能使你成为一名黑客。 Web里充满了各种网页。

    多数是无意义的,零信息量垃圾。 要想有价值,你的网页必须有内容---必须有趣或对其它黑客有用。


    这样,我们来到下一个话题.... 黑客文化中的地位大教堂与集市”,解释了许多Linux和开放源码文化的运做原理。我还在它的续集“大教堂与集市”,解释了许多Linux和开放源码文化的运做原理。我还在它的续集“开拓智域”一文中有更直接的论述。 


    FAQ(常问问题解答) 


    问:你会教我如何做黑客吗?


    自从第一次发布此页,我每周都会得到一些请求,要我“教会他如何做黑客”;遗憾的是,我没有足够的时间和精力来做这个;我自己的编程项目已经占用了我110%的时间。 

    甚至即便我想教你也不可能,黑客基本上是一项需要你自行修炼的的态度和技术。你会发现即使真正的黑客想帮助你,如果你乞求他们填鸭一样教你的话,你不会赢得他们的尊敬。 首先去学习。显示你在尝试,你能靠自己去学习。然后再去向黑客们请教问题。


    问:你会帮我“黑”掉一个站点吗?或者教我怎么黑它? 


    No. 任何在读完FAQ后还问此问题人,都是愚不可及的家伙,即使有时间我也不会理睬。 任何发给我的此类mail都会被忽略或被痛斥。


    问:哪里能找到真正的可以与之交流的黑客? 


    最佳办法是就近参加一个Unix或Linux的用户组,参加他们的会议。


    问:我该先学哪种语言? 


    HTML, 如果你还不会的话. 但它不是一个真正的编程语言。当你准备编程时,我建议你从 Python开始. 会有很多人向你推荐Perl,它比Python还受欢迎,但却难学一些。


    C 是非常重要的,但它却是最难学的。不要一开始就尝试学C。


    问:开放源码的自由软件不会使程序员饿肚子吗?


    这似乎不大可能---到目前,开放源码软件产业创造了而不是消灭了大量工作机会。 如果写一个程序比不写一个程序只是个纯粹经济上的收益的话,无论它是否免费,只要它被完成,程序员都会从中得到回报。而且,无论软件是由多么的free的方法开发的,对更新的软件应用的需求总是会有的。


    问:我从何学起?哪里有免费的Unix? 


    本页的其他地方指向最常用的免费Unix。要做一名黑客,你需要自立自强,以及自我教育的能力。 现在开始吧

    展开全文
  • 大学四年,我是如何学习编程的?

    千次阅读 多人点赞 2019-12-04 23:40:27
    大学四年,我专业是计算机专业...今天我分享下,如何在学校里免费技术,沉淀一些编程技能。 编程书籍 这是我大学看过的书籍。 设计模式 这里简单介绍一下: 设计模式是软件设计中常见问题的一般可重复解决方...
  • 编程是什么,什么是编程

    万次阅读 热门讨论 2011-08-21 17:13:27
    [作者] 网名: 猪头三 站点: http://www.x86asm.com Email: pliceman_110@163.com QQ: 643439947 编程生涯: 2001~至今[10年] 职业生涯: 9年 开发语言: C/C++; x86asm; Obj
  • 大学如何开始学编程

    千次阅读 2020-05-20 17:59:32
    大学如何开始学编程?是编写自己感兴趣或者能够真正投入使用的程序?还是找志同道合的人,然后互相学习?
  • 从事嵌入式开发多年,有三种语言玩的比较多C/C++ java,从编程语言的难度来讲C++是最难得,而且也是最难入门的编程语言,很多编程老手都是这个结论,为什么C++是最难编程语言,虽然难但还是很多编程老手喜欢...
  • 什么越来越多的人学编程

    千次阅读 2019-04-28 08:43:27
    编程已经在我们的生活当中无处不在,我们使用的手机、电脑,都是需要编程的。程序员这一行业也渐渐出现在大家的眼中,并且成为调侃对象,当然这都是玩笑。但大家都知道的,程序员的工资都是非常可观的,于是越来越多...
  • 信息学奥林匹克竞赛-编程语言

    千次阅读 2015-11-17 13:15:53
    主流编程语言简介  计算机语言的种类非常的多,总的来说可以分成 机器语言,汇编语言,高级语言 三大类。 机器语言:是直接用二进制代码指令表达的计算机语言,指令是用0和1组成的一串代码,它们有一定的位数...
  • 我是如何学习计算机编程

    千次阅读 2011-11-23 00:39:55
    注:本文转载自外刊IT评论,国外...我希望读者能从我这些复述中获得的信息是:如果你想学习编程,做大量的练习性的项目是非常必要的。 学习一种技术最好的方法就是练习,练习,练习。所有我知道的最优秀的程序员都
  • vs-OpenGL编程入门学习

    万次阅读 多人点赞 2017-12-04 10:28:31
    一、点、直线和多边形 我们知道数学(具体的说,是几何)中有点、直线和多边形的概念,但这些概念在计算机中会有所不同。 数学上的点,只有位置,没有大小。但在计算机中,无论计算精度如何提高,始终不能表示一...
  • 网络编程学习小结

    万次阅读 热门讨论 2009-08-29 13:42:00
    几种网络编程方式:ISAPI、CGI、WinInet、Winsock它们之间的区别:1) ISAPI主要是开发基于浏览器客户端与服务器端程序。效率比CGI方式高,而且也扩展了CGI没有的一些功能。(基于TCP/IP模型中的应用层)2) CGI...
  • 下面给大家分享下,众多小伙伴的编程心得,希望对你有所帮助。 这篇文章我是在知乎上看到的,感觉很不错。原作者回顾了自己漫长的编程学习之路,从中总结了许多个人经历,走的弯路,和教训。我摘抄了过来,希望能...
  • 3D游戏编程学习

    千次阅读 2011-04-02 00:50:00
    此篇文章献给那些为了游戏编程不怕困难的热血青年,它的神秘要我永远不间断的去挑战自我,超越自我,这样才能攀登到游戏技术的最高峰   ——阿哲VS自己 QQ79134054多希望大家一起交流与沟通 这篇文章是我一年半前...
  • Python编程基础与学习心得

    千次阅读 2019-09-04 11:43:13
    Hello,各位小伙伴们大家晚上好呀。这期,博主分享的是Python基础,帮助大家掌握对Python的使用,从而应付后续的课程。最后,博主还写了学习编程的感悟,...
  • 同样是潜水或者销声匿迹,但有的人却是偷偷发育,然后惊艳所有人,这不鹅厂好友鱼皮花了一个月开源了一个编程导航,内容上也是相当丰富,页面也是非常nice,现在分享给大家。 最近一个月,上班之余,鱼皮几乎将全部...
  • 如何学习编程语言?

    千次阅读 热门讨论 2008-06-14 01:34:00
    很多人认为编程语言不知道从何起,总感觉东西越越多,越越晕,很是头疼。正所谓“爱她在心口难开”,实际上,任何编程语言的学习都是有规律可循的,而且它们都有一些共性,我们只要掌握了这种规律和共性,学习...
  • 写这篇文章的主要的原因是什么呢?主要是想到了自己是怎么从一个工科专业然后转行来做到计算机专业,这中间的酸甜苦辣,人间疾苦想分享给大家,以及学习了编程之后我的世界观、价值观的变化,希望能与大家产生共勉。...
  • 如何高效地学习编程语言?

    千次阅读 2019-03-11 16:25:08
    学习编程语言是一种技巧:做好了,你会感受到掌握新事物之后的快感;做不好,就会接二连三的沮丧,甚至放弃。下面我将介绍一些技巧与方法,以便帮助大家高效地学习。 持续测试自己以抵抗胜任力错觉 最不济的学习...
  • R是最值得学习的编程语言

    千次阅读 2015-12-15 11:09:19
    R语言早期主要是学术界统计家在用,在各种不同的领域,包括统计分析,应用数学,计量经济,金融分析,财经分析,人文科学,数据挖掘,人工智能,生物信息学,生物制药,全球地理科学,数据可视化等等。 近...
  • 透过屏幕,似乎看到了大一时的自己,不会装环境、不知道怎么编译,报错也不会解决,更不知道除了计算水仙花数、打印乘法口诀表…还能写些什么。 感同身受让我觉得有必要认真的好好回答一下(其实是因为这是小姐姐问的...
  • ACM协会编程学习座谈的记录和思考

    千次阅读 2014-12-01 07:16:50
    ACM协会的负责同学和我说,大一的同学不少说编程,想让我做个讲座。我说,让我讲多没意思,不如搞个座谈,让感觉困难的同学说说究竟是什么困难,有针对性地,老师、高年级同学,以及同年级克服了这些困难的同学...
  • 谈一谈网络编程学习经验

    千次阅读 2012-08-21 17:42:09
    谈一谈网络编程学习经验 giantchen@gmail.com blog.csdn.net/Solstice PDF 版下载:https://github.com/downloads/chenshuo/documents/LearningNetworkProgramming.pdf 本文谈一谈我在学习网络编程方面的一些...
  • 对于完全没有编程经验的初学者,在学习python的时候,面对的不仅仅是python这门语言,还需要面临“编程”的一些普遍问题,而有特别明显的两个错误认知是: 错误认知一:一些初学者认为python很简单,就以为编程很...
  • 原标题:什么是少儿Python编程?这一篇就够啦!少儿Python编程大家都了解多少呢?由于少儿编程学习的重要性被广大家长朋友们所知,再加上近几年来我国对少儿编程教育的重视,现在很多的家长朋友们都选择让自己的孩子...
  • 软件测试需要学习些什么技能

    千次阅读 2015-10-21 21:22:16
    编程技巧(java编程设计,脚本语言,设计工具,XML编程)  4.软件测试技术(测试理论,方法,流程,文档写作,测试工具,自动测试)  5.测试技术实践  软件测试的基础知识(黑盒测试,白盒测试,单元...
  • 学习 Python 编程的 19 个资源

    千次阅读 多人点赞 2018-01-11 00:00:00
    编译:wzhvictor,英文:codecondo segmentfault.com/a/1190000004187319用Python编写代码一点都不难,事实上它一直被赞誉为最容易编程语言。如果你准备学习web开发, Python是一个不错的开始,甚至想做游戏的...
  • 你现在学习的网络硬件,...这是一个可以让自己找到编程方向的机会,也让你的编程更加有目标,起来更加有效。将来如果你从事网络维护的工作,或者从事网络安装、施工方面的工作,编程方面的优势也能让你更加得心应手。

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 96,303
精华内容 38,521
关键字:

信息编程是学些什么