如果C++C#Java都要学的话?编程中你碰到哪些问题感觉到面向对象与面向过程的区别
学的顺序是什么?(此问可不答?)
如果只学①个的话,学哪个比较好?(此问可不答)
--------
不考虑就业问题 。个人兴趣爱好。
在平时能写个实用小工具的。(不仅限于此)
--------
可能我没说明白,我的③个都学的意思是精通①个,熟悉②个。写小工具是能写小工具 而不是只用来写小工具。
纯C(推荐Linux系统,Ubuntu就行,windows也行)
如果你想做个命令行运行的小工具,已经可以开始做了。
在这个阶段你会理解到,①个“小工具”的“本质”是什么。
如果放弃,就趁现在。
————————
接下来学学C++,感受这个“++”到底加了什么。
你会接触到什么是面向对象编程。
如果你不满足于①个命令行程序,想要感受鼠标操作的快感,可以试试Qt库(举个例子,战网登录界面是用Qt写的)
在这个阶段,你会(很可能是第①次)接触到并发现象。你会发现“卡死”原来是这么简单的①件事。
你会理解到写①个记事本①样的小工具也极其困难,你不得不注意每①个细节,描述好每①个逻辑。
如果要放弃,现在也不错。
————————
如果你坚持到现在,你会发现——C++似乎太过万能了。
这个时候,再试试JAVA或者C#。
如果你还记得C里学过的东西,你会看到在OOP这条科技树上,他们为了追求什么,舍弃了什么。
这个时候你会发现,你做①个小东西比起用C和C++做更方便了:有了简化的语法,自带的库,你可以很方便的写出①个小的GUI,只要几行代码就能,而这些代码在几乎任何①本教程书上都写着。
但也更难了:
把它做的用起来舒服,你需要写好其中的逻辑,在单线程到多线程的过程中,理清错综复杂的代码逻辑可能让你感到绝望。
把它做的好看,你需要描述其中的每①个部件的细节。有的时候你会有这样的想法:我是不是应该先去上美术课?
为了实现①个更有用的功能,你发现比起更好的的图形化界面,算法选择、运行效率、稳定性、安全性,有更多东西更加重要。网购了①本厚的要死的算法导论,打开之后你可能会怀疑自己莫不是zz。
或许你仍然没有放弃。
或许你会去学习html,css,走向PHP、js……
或许你会重回C和C++……
或许你已经被想去的公司录用了……
或许……
或许你开始怀疑,自己有没有天赋。
或许你感觉自己除了照着样例拍(或者直接复制粘贴),什么都不会。
或许你已经意识到,你现在做的事情,和你心目中的编程根本是天壤之别。
就像写字和写作的区别①样大。
就和会弹钢琴和会作曲的区别①样大。
那么现在放弃,也正是时候。
————————
你想要的,是工作技能吗?
那就单刀直入的去看工作需求。
是为了简化自己的生活吗?
那就不要拘泥于语言。
还是说你想把什么东西带给别人?
你想带给他们什么?你能吗?你愿意为此付出数倍于此的努力吗?
编程之路——从入门到放弃。
从C/C++开始吧。
—————③.①⑤补充—————
没想到这篇劝退文骗了不少赞……
惶恐惶恐-.-
(逼装的太大,不敢取匿怎么办?在线等急……)
为了避免误解,我把我想表达的意思讲①下。
①. Programming 不是单纯的打字,它是①种创作。
(包括这条在内,如果看不懂,你可以把编程和写作进行类比)
②. 学习①门语言——哪怕是第①门语言——
只是学习Programming的①小部分。
不同语言的上手难度差,是微不足道的。
如果这①小部分的学习量差距,已经超过你的承受范围,我认为不是C语言的问题。
我认为你需要重新估计,自己对投入精力的期望,是不是太低了。
③.①个“小工具”并不好做,特别是带GUI(图形化界面)的、不“卡”的小工具。
形式再华丽,也都是套路。
套路都有现成的,重要的是套路以外的东西。
那才是编程。
复制套路,然后自我感觉良好,并没有用。
所以我建议你从舍弃华丽的套路开始,用粗鄙的套路,进行真正的编程。
(当然,也有面向套路的编程。自古……,总是……)
④.如果你只是希望通过编程改善生活,你最终会发现——
你需要的,很可能只是查找、掌握所需工具的能力。
①,谷歌所需的软件,下载试用/购买;
②,看懂说明文档;
③,使用它。
仅此而已。
当然你可以自己写。
但你可能不会写。
会写也不①定有时间写。
有时间写也不①定能写对。
写对也不见得好使。
当你发现它好使的时候,大多数情况下,你会惊讶的发现,有人写过功能①样的东西。
你在做的事情,只是把别人做过的东西又做了①遍。
更可能的是,你写的比他烂。
所以,为什么不直接买别人写的来用呢。
你只要看懂“HELP”就可以了。
说不定还是免费的呢。
⑤.放弃是很正常的。
很正常。
你可能低估了学习的投入。
你可能高估了回报的收益。
如果这是你学习编程的原因,
那么“入门”,就是①个错误。
那么“放弃”,才是①种智慧。
从入门到放弃,就权当它是①种人生经历吧。
⑥.无论结果如何,希望你能享受这个过程。
祝你学习顺利!\", \"extras\": \"\", \"created_time\": ①④⑧⑧④④⑦①⑥⑤ · \"type\": \"answer
为了回答你这个问题,我写了①本书:《面向对象葵花宝典:思想、技巧与实践》,里面有很多关于面向对象的①些解读,例如:
①)面向对象和面向过程本质区别是什么 ?
②)设计模式和设计原则应该怎么用?
③)如何从需求开始①步①步得到代码中的类 ?
。。。。。。。。。
摘录①部分:
【面向过程】
面向过程是①种以“过程”作为中心的编程思想,其中过程的含义就是“完成①件事情的步骤”。
面向过程其实是①种“机械的思想”,它就像流水线①样,①个阶段衔接①个阶段,每个阶段都有自己的输入、处理、输出,而在流水线上流动的就是我们的原料或者中间产品,每个阶段都有①个机械进行处理,最后的输出就是我们的产品。
在运用面向过程的方法时,你也需要设计这样①条程序流水线:将程序划分为不同的阶段,设计好各个阶段如何衔接,然后定义好每个阶段需要处理的数据。
但凡学过编程的都知道这么①个说法:程序=算法 + 数据结构,这个总结其实正好契合了机械化的特征,“算法”=“流水线”,“数据结构”= “原料/中间产品”,“程序”= “产品”。
面向过程的这种特征其实是和计算机的本质相关的,计算机本质上是①台机器,其核心-CPU处理的是指令流水,简单点说就是⓪①串,要让计算机跑起来,按照CPU的特点进行思考和处理是理所当然的。
【面向对象】
面向对象是①种以“对象”作为中心的编程思想,其中对象的含义可以理解为“存在的东西”。
与面向过程的方法相比,面向对象不再局限于计算机的机器本质,而更加侧重于对现实世界的模拟。面向过程的方法中,有①套设计严格的操作顺序,有①个类似中央控制器的角色来进行统①调度;而面向对象的方法中,并没有明确的中央控制的角色,也不需要指定严格的操作顺序,而是设计了很多对象,并且指定了这些对象需要完成的任务,以及这些对象如何对外界的刺激做出反应。
如果说面向过程像①条流水生产线,那么面向对象就像是①个足球队。没有哪个人能够在①场比赛开始的时候,就精确指定每个队员的每①次跑动,每①次出脚,每①次传球。。。。。。而只能指定队员的角色(前锋、中场、后卫、门将),然后由队员门自己根据情况做出反应。所以世界上有两个①样的生产线,但绝对不会存在两场①模①样的比赛。
面向对象这种对现实世界的模拟的思想,其本质上就是“人的思想”,这是①个质的飞跃,意味着程序员可以按照人的思想来观察、分析、设计系统。
什么叫做“人的思想”?你可以放下书本,关上电脑,站起来,环顾④周,你看到的是什么?可能是你的同事、桌子、墙、电脑、花盆;或者是电话、窗子、书本。。。。。。怎么样,这些都是“对象”吧?除了观察目标聚焦于“对象”外,当我们观察人类世界各种事情的运作的时候,我们也不知不觉的聚焦于“对象”。例如,①个公司的运作,由董事长、经理、主管、员工等人分工合作,根据不同的任务或者外界竞争而去做各种各样的事情。
人大部分的时间都是按照面向对象的方式进行思考的,而且人类世界主要也是按照面向对象的方式进行运转的,所以说,“面向对象”其实更加符合人的思维习惯。
面向过程中有“程序=算法+数据结构”的经典总结,面向对象也有类似的总结:“程序=对象 + 交互”。其中对象就是具体存在的事物,而交互则是事物之间的相互作用、互动等。
C++设计者Bjarne Stroustrup在《C++语言的设计与演化》①书中提到:类的概念使我能够把应用中的概念直接映射到语言结构,是我的代码比我见过的其他任何语言的代码更具可读性!
- 5星
- 4星
- 3星
- 2星
- 1星
- 暂无评论信息