如何学习编程?

如何学习编程?,第1张

如何学习编程

首先,我想说一下学习思想.学编程其实跟网络游戏有着类似的效果.开始的时候,你会对那些代码,函数等产生很大的兴趣,尤其是刚接触编程的人,刚学习第一种语言的人.可是,当你一步步深入的时候,你会发现你没有了以前那种斗志.就好象你在玩韩国泡菜网游似的,玩到一定程度,每天就是练级练级,完全是一个想冲到高级别的意志力在支持着你.而学编程就更难了,学了两个月后,总是觉得你好象全都学会了,却又什么都做不了,又没有其他的意志力支持你.这时候你会很容易放弃,或者转到别的如网业制作,PS,FLASH等行业的.其实我告诉你,虽然你觉得你好象已经学了很多了,其实你还是什么都没学呢,等你跨过这道坎,才是你刚入门的时候.说这些,只是想告诉你,学编程中会遇到很多困难,你要努力的克服这些困难,才能真正学到东西.否则,你根本别想学编程,趁早转行. 接下来,我帮你规划一条编程之路.

学编程的人,很少有人没学过C语言的.我推荐让C语言作为你第一个学的语言.虽然有的人说要先学VB,其实这种观念是错误的.C确实比VB枯燥,而且说实话学完C后不学别的就好象没学过,感觉什么都没学会.可是,对初学编程的人来说,只有C语言才能建立起你对编程概念的理解.VB不是编程,VB只是一种工具而已.C语言确实是个不折不扣的语言,真正让你知道什么是编程的语言.有初学C语言,用TC2编译器的人总说他学了C什么都不会.什么软件也写不出来.我可以告诉他,编程编程,编的是程序,而不是软件,软件这是程序的一个构价.你想编程出软件,那以后很轻松的就能掌握,现在你需要学的就是编程,说明确一点,你现在所需要学的就是算法.编程的灵魂是算法,这点每个人都要记住.

所以,第一门语言要学C,推荐的书为谭浩强老师的<C程序设计>(清华大学出版社)或者克尼汉的<C程序设计语言>(美国).

初学者也许需要一套视频教程来帮助自己更快的入门,那么就推荐你去百度搜索"C语言视频教程",第一页的第一条记录就是这个教程.而且是和谭老师的<C程序设计>配套的教程!

注:有些人说谭浩强的书不好,太死板.那么我只能说你最多是个一瓶子不满,半瓶子逛荡的人.真正要掌握高深技术的时候,你会发现你没办法掌握.

C语言要学到什么样才算个头呢?其实,C语言没有学到头一说.有些人学了一辈子,还在钻研.那么你应该到什么时候学下一种呢?按时候算的话,我推荐,如果你每天有6个小时的时间学习的话,一个半月以后,你就可以转到下一个语言的学习过程中了...(我估计普通人在这一个半月内该掌握的都掌握了)

那么,下面要学的是什么呢?这会不会还有人说VB吧.还美其名曰加深对编软件的印象.这种说法很幼稚.学了C语言还学什么VB呀.其实VB确实是很强大的,容易入门,想精通了也不容易.著名的DOS系统就是用BASIC语言写出来的.可是,这种这么易用的软件对于专业学编程的人是一种不好的东西,会让人产生依赖,让人产生惰性.VB的那些控件的功能实在是太强大了,你都不用怎么思考,就可以编写出来.可是,控件毕竟是不能随你的意愿支配的,控件是死的东西.你真正要学的是编写的思想,是函数(Java中称方法).另外,学VB还不如去学Delphi呢.

注:市面上的软件一般一眼就可以看出是用什么语言编程的,而VB编写的软件几乎找不到多少.

所以,下面要学的也就那两种选择了,C++/Java.我推荐,先学Java.

Java实际上是C++改的.去除了C++中指针的部分,让C++变得更安全,同时也比C++稍微简单了一些.你需要去找一些关于Java的介绍,在看下面的东西.

我听一个北大青鸟的老师说Java的最终发展目标是J2EE.我觉得不然,J2ME一定也是个发展方向,只是他跟J2SE,J2EE有很大的不同,开发环境也很不同.关于J2ME的部分我不做讨论.而J2SE呢.说实在的,市面上的J2SE软件确实也是很少的,你见过有几个拓展名为.jre的软件?不过还是要告诉你,学习Java的人肯定最先接触的是J2SE.Java的GUI软件只是技术性的问题,也是开发手段的问题.不管你是要发展到J2EE,还是转到GUI编程,J2SE绝对不是弯路.还是那句话,算法是最重要的.而Java比C++最大的优势在于他的完全面向对象和跨平台.其实,就算你先学了Java,你还是可以很容易的掌握C++,Java程序员和C++程序员的互转是很容易的!再说一些Java的优点.Java比C++方便很多,下载了编译器后一个记事本就能写程序,JBuilder实际上只是个辅助的工具.我去一个搞Linux系统开发的公司看过,用JBuilder的很少,一般都是直接用UltraEdit直接写程序.而C++必须要用VC++等编译器,不说电脑配置低很不好用,光说VS是要花钱的,而JDK永远都是正版(免费下载),就应该用Java.其实这只是习惯问题,不管你是先学Java还是先学C++,都会很快掌握另外一个的.

Java的书有很多,初学不要买实例的,买那种一直讲基础的,清华大学出版的书很好.另外推荐视频教程,孙鑫老师的Java无难事.去52ebook直接搜索名称"Java无难事",一共有12张CD,都下载下来就好了.教程的第一课会教你如何配置,去哪下载编译器等.

要学到什么时候呢?我是这么推荐的,学到你可以不看任何资料,(当然可查看JAVA帮助文档)熟练的编写出一个酒店管理系统来.接下来,你就可以去学别的了.

这个别的,就是C++,还是那句话,Java程序员可以很容易的掌握C++,只要学了C++的基础语法,剩下的就是实践了!

C++的书可以买一本C++语言+SQL的应用,就是讲数据库系统的例子.多练是很重要的.

视频教程推荐孙鑫老师的VC++视频教程,去讯雷上搜索"孙鑫 VC++",找到那个700M多的打包教程,就是了.

其实学懂Java和C,剩下的你真的可以自己掌握了.我粗略的说一下.

比如,你可以学汇编,汇编实际上是很磨人的,不过汇编高手永远都是抢手货.

那么VB呢?DELPHI呢?哈哈,又是VB,你学,这个时候学VB,学不了几天就掌握了.不比初学轻松?

想学的你都去学,甚至还可以去学Flash,连Flash ActionScript都可以很轻松的掌握.

其实现在,你的路已经定下来了.你剩下的就是不段实践,不段往更高的方向发展.

在这之前,建议你去考几个试.

去考中国计算机软件职业资格水平考试,直接考中级的软件工程师.或者再学一些别的,考个网络工程师.如果你愿意,你可以再多学点东西,把全国计算机等级考试的1到3级的所有东西都考下来.呵呵.

到了这种程度,我想真的不用我再说了,都靠你自己了.

最后,记住两句话.

编程的灵魂是算法+数据结构!

学好编程实践最重要!

关于C语言的博客我知道的确实不多,但是C语言的书籍还是有不少可以推荐的。

首先给大家推荐一本书是我个人认为最适合自学C语言的书籍《C Primer Plus》。这本书对于C语言的相关的编程概念解释的非常详细。作为入门的书籍非常推荐。这本书提供了一个简短的例子,每一个概念,以帮助读者更好地理解。例如,这个特性反映在指针的章节中。指针章节是这本书中最好的章节之一。指针用于识别内存中的特定位置并存储相应的内存地址。这本书是最新的ANSI C99标准。对于初级程序员来说,这本书对学习的基本概念有很大帮助。这些概念也可以应用在其他语言,如PHP和java。

如果你想要更进一步的去学习C语言,那么这本《C专家编程》可以推荐给你,这本书对于高级C语言的解释说明非常详细。作为进阶的书籍还是非常合适的。它强调程序员使用的一些最好的C语言技能。这本书非常有趣,展示了作者在太阳系(太阳系)的丰富经验。这本书还定义了一些传统的编程方式,例如使用不同的声明。同时,本书还提供了许多实用的编程实用技巧,如指针和数组之间的区别。

最后再推荐一本书就是《C语言程序设计:现代方法》。书里面对于C语言的解释方式十分地独特,是一本很有特点的书籍。C语言经历了一些变化,这些变化在引入这些变化方面是非常有效的。书中的程序是用纯C代码编写的,使程序具有良好的可移植性。这本书鼓励读者独立思考,并鼓励你找到更有效的方法来解决这个问题。对C语言感兴趣的学生是一个很好的课堂教学材料。

大一学习的c++,工作之后也一直用的c++。

1. 涵盖c++入门到精通的图书列表

《The C programming language》必读

《C++ Primer》,号称是一本可以让你从C或JAVA程序员转为一个真正的C++程序员的入门参考书,必读。

《The C++ programming language》,C++之父,人称B教主著作,在看过C++ primer后,应该可以跳章选读。

《Think in c++》,网上说此书的中文版翻译质量奇差,推荐看影印版,选读。

《Effective c++》,类似 Effective java,讲的是最佳实践,程序员必读。

《More effective c++》,上书的补充。

《The C++ standard library》,会写C,不会用标准库怎么行。这就跟java程序员不会用java.util包一样,必读。

《Effective STL》,STL库的最佳实践。Effective C++作者又一力作,必读。

《The annotated STL source》,STL源码分析,这本书应该算是深入/精通类了,选读。

《Generic programming and STL》,号称C++编程里,就是跟模板,泛型打交道,那么精通泛型是势在必行。

《C++ Template》,C++模板编程,代码复用的经验之道,必读。

《Exceptional C++》,跟Effective C++类似,属于最佳实践和难题解析,书中列出了许多应用场景和实例代码供读者揣摩,选读。

《More Exceptional C++》,上书的补充。

《Exceptional C++ Style》,上上书的补充

《Inside The C++ Object Model》,有了上面这些书做铺垫,那么终于可以读此神书了。它会带你游览C++对象模型的底层实现机制。读完此书,任何C++代码看起来如同行云流水,必读。

2. 优秀的C/C++开源项目(阅读代码)

OS:Linux kernel LVS、Linux应用程序

DB:Mysql、PostgreSQL

Complier:VM、GCC

Framework:OpenSip、SipProxy、

Net:ACE(Java Mina、Netty)、TCP/IP、HTTP协议栈

Cache:Memcached、Redis、

Library:STL(java util package)、Boost、Qt(UI)、

balance:Apache、Nginx

GSL

地址:https://github.com/microsoft/GSL

Boost文档

地址:https://www.boost.org/doc/libs/

wxWidgets官网

地址:http://wxwidgets.org/

gtkmm

地址:https://www.gtkmm.org/en/

CopperSpice

地址:https://www.copperspice.com/

Qt

地址:https://www.qt.io/Eigen

地址:http://eigen.tuxfamily.org/index.php?title=Main_Page#Documentation

Plot utils

地址:https://www.gnu.org/software/plotutils/

Asio

地址:https://think-async.com/Asio/

POCO

地址:https://pocoproject.org/

abseil

地址:https://abseil.io/

C++开源库汇总列表

地址:https://en.cppreference.com/w/cpp/links/libs

除了这些开源项目,也可以找一些免费的公开课,那这里也推荐一个ACM金牌大佬讲授的免费C++课程,可以去体验一下:

学好C++才是入职大厂的敲门砖! 当年要是有这课,我的C++也不至于这样

已失效

3.C++语法讲解

语言基础

详细介绍变量、表达式、语句、指针、数组、流程控制、函数、文件组织等。

抽象机制 - 面向对象编程

深入讲解C++的抽象机制,封装(类)、继承、多态; *** 作符重载、函数对象、异常处理等。

模板 - 泛型编程

详细介绍C++的模板机制,类模板、函数模板、模板特化等方面的内容。

4.深入c++面向对象

4.1、从C到C++

引用和指针:为什么引用很重要

const关键字:为什么const很重要

名字空间 (namespace)

4.2、深入C++对象

关于C++对象

内置类型的对象,如int、double对象,自定义类型的对象

对象类型的定义

关键字class和struct

类成员:成员函数和数据成员

静态数据成员

成员的访问控制

对象的size

关于this指针

onst成员函数、const究竟修饰什么

mutable数据成员

4种特殊成员函数:constructor、destructor、copy constructor、operator=

对象的构造、初始化列表

对象的析构

对象的复制

什么情况下有必要显式定义4种特殊函数

C++对象生命周

4.3、 *** 作符重载

关于C++中 *** 作符重载机制

重要 *** 作符重载

算术运算:+, -, *, /, %, ++, --, ...

关系运算:>, <, ==, !=

下标存取:[ ]

函数调用:(),函数对象

类型转换、单参数构造函数与隐式转换、阻止隐式转换 -- explicit关键字

友元与成员

4.4、面向对象基础 -- 继承

基类与派生类

再谈对象的构造与析构

虚函数、纯虚函数

派生类的内存布局、虚函数表

多态、多态类型、如何体现多态

虚析构、为什么虚析构很重要

4.5、关于继承更多的话题

多继承

虚继承与虚基类

对基类的访问、public / protected / private继承

Down cast:static_cast<>和dynamic_cast<>

运行期类型识别 (RTTI)

4.6、C++与面向对象设计

C++语言机制提供了完整的OOP支持

超越继承

OOP若干法则和设计模式

5.C++泛型编程与STL

5.1、C++ 模板机制

5.2、STL 概要

5.3、STL容器

5.4、STL迭代

5.5、STL算法

5.6、预与定义STL数对象

5.7、STL适配器

6. C++进阶

《C++ Primer》

最新版本:第三版(第四版国外已上架, 国内一些网上书店也在预订中)

适合有丰富C经验,缺乏C++经验的。不过我个人一直认为此书带着过于强烈的C语言的痕迹,对于C++的学习未必是 好事。

《The C++ Programming Language》/《C++程序设计语言》

最新版本:第三版特别版

简称 TC++PL,有其他语言的丰富经验的。(也有人简称之为“TCPL”,但需与另一本《The C Programmer Language》区分开来)

《Essential C++》

《Accelerated C++》

这两本薄一些,都是不错的选择。《Accelerated C++》本人没有读过,从各方面的评价来看,完全值得推荐。

以上几本书都有相应的中文版,而且翻译的质量都不错。上面的书未必都需要读一遍,但无论如何,TC++PL是应该阅读的。

《Effective C++》

最新版本:第二版(第三版国外已上架,国内一些网上书店也在预订中)

简称EC。C++程序员必读!很多时候,我们说C++圣经不是指TC++PL,而是这一本。《The Pragmatic Programmer》一书中写到:“一旦你发现自己要参与C++项目的开发,赶快跑(不要走)到书店去购买Scott Mayer的《Effective C++》,可能还要《More Effective C++》”。

《C++ Coding Standards: 101 Rules, Guidelines, and Best Practices》/《C++ 编程规范》

个人认为此书应为C++程序员必备的案头书。几乎Effective系列和Exceptional系 列都在这里得到了总结。最新的模版、异常的业界经验都在这里的到了体现。可能的唯一缺陷就是对一个新手而言,关于“为什么这么做”的问题,解释的不够。

我 的看法是:如果你不理解其中的条款,记忆,并且照做;如果你理解其中的条款,我猜你一定会同意书中的观点。我认为这本书中的内容至少在2009年以前都不 会过时,人们将广为传诵它制定的101条戒律。

还不知道他的简称,也许“101”会成为一个候选者?

提到《Effective C++》,那么另外三本书一一浮出水面:

《More Effective C++》

《Exceptional C++》

《More Exceptional C++》。

新书《Exceptional C++ Style》也是值得一看的好书。

上 述几本书,一本也不应该放过。

个人建议上述书籍按顺序阅读。并且,在将来反复阅读这几本书。

《Thinking in C++》/《C++编程思想》

这本书及其中文版传言好坏都有,没有认真看过,不做评价,如果确有兴趣,不妨尝试 一下该书。

以下几本书基本上涉及的都是语言本身,大体上可以按照以下的顺序阅读。

《C++必知必会》

如果早一年,这本书将是重量级的,然而它被101和《Exceptional C++ Style》盖过一头。

《C++ Gotchas: Avoiding Common Problems in Coding and Design》/《C++程序设计陷阱》

这又是一本我未曾读过,而且广受好评的书。

《STL 源码剖析》

这本书我刚到手,就被人"借"走,以至于到现在也没有看过。看过这本书的朋友,可以给一个合适的评价。

7. C++进阶之数据结构基础

这是所有编程语言中最应该学习的部分,程序组成的基础之一。

顺序存储、链式存储、循环链表;

双向链表、栈(顺序和链式)、队列(顺序和链式);

栈的应用、树基本概念及遍历、二叉树;

排序算法、并归算法、选择、插入、快速、希尔。

以上这些内容你知道吗?

8. C++进阶之UI界面开发

掌握QT类库构架,图形界面开发模型;

掌握QT开发技巧,消息机制,图形处理;

掌握QT网络编程,UDP,TCP使用方式;

掌握QT文件处理方式,序列化;

掌握QT在windows,linux,ios,android不同平台下的移植技术。

9. C++进阶之Unix/Linux网络服务器

掌握Unix/Linux平台开发方式;

熟练使用系统调用;

熟练Unix/Linux内存管理,进程,线程调度;

熟悉网络服务器开发方式,熟练编写TCP,UCP网络服务程序;

掌握同步/异步IO模型在网络编程中的使用方式。

10.C++进阶之数据库开发

掌握SQL语言的实用技巧。Oracle,MySQL数据库的使用方式。

如果你能熟练掌握以上列出的技能,具备解决复杂问题和技术难点的能力,而且你能独立开发一些比较复杂的功能模块,那么很荣幸地告诉你,你已经达到中级水平,薪资过万对你来说简直是小菜一碟。

11.C++标准参考

C++ reference

地址:https://en.cppreference.com/w/

C++ Coding Standard

地址:http://www.possibility.com/Cpp/CppCodingStandard.html

Standard C++

地址:https://isocpp.org/

State of C++ Evolution

地址:http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2597.html

The C++ Resources Network

地址:http://www.cplusplus.com/

Draft C++ Standard: Contents

地址:http://eel.is/c++draft/

关注一些公众号,比如c语言与cpp编程


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/11243174.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-14
下一篇 2023-05-14

发表评论

登录后才能评论

评论列表(0条)

保存