【分享】看到好多童鞋整天在为学编程烦,我说说我的入门方法,也许傻但很有效
本帖最后由 tywolf 于 2016-9-3 18:42 编辑看到好多童鞋整天在为学编程烦,我说说我的入门方法,也许傻但很有效。
1、如果你之前没有接触过编程又想学编程(我就是这类),
1-1、明确你自己学编程来做什么?是想做类似POST、GET这类的应用软件还是类似管理工具、QQ这类的桌面软件,还是做网页应用
1-2、做POST、GET这类软件
这类软件其实是最最最简单的东西,为什么?按照我的步骤来
1-2-1、什么编程语言和视频都不要看,你会问,那看什么?《tcp/ip协议详解》三卷!一共三本,当时我看完三本书花了一周的时间,看完以后你的基础就扎实了,什么HTTP、SOCKET、UDP都是从这里来的,你会发现你玩来玩去就是在应用层上打转转!
1-2-2、看完以后接下去找一个你觉得你看起来最顺眼的语言,别管别人用的多不多,反正你自己看起来最顺眼的!!第一件事:花一到两周时间把它的基础语法记一下!第二件事:看看你学的这语言操作网络的时候是用的哪几个API,怎么一个大致的流程!!第三件事:随便写一个HELLO,WORD互发消息的东西或者用你学的那几个API随便POST、GET一下网页获取一下网页的源码!到这里,你已经上路了,你会发现因为你的《tcp/ip协议详解》三卷底子打的好,看到这些东西就好像看到一张透明的纸一样简单!!
有事外出,未完待续!
回来了,接着后续的,这些都是我自己的学习路程,并不表示适合每一个人,但是我相信绝对比大家自己去摸黑过河要好的多,我做不到象给当时<黑客X档案>和<黑客防线>杂志写书时那样手把手的去教大家。我离开程序员岗位自己做物流已经有四五年了,现在也就是自己公司需要的东西自己亲力亲为一下,这样能节省成本。平时我也有工作有我自己的生活,还要带小孩,每天我都要忙到凌晨三四点才可以睡觉,早上八九点回公司上班,还要接待客户、处理订单挣奶粉钱!!所以能讲多少就多少,大家见谅~~
1-3、做管理类软件(不管桌面的、网页的、手机),这里有一个很核心的东西,数据库!!
看到这里,也许有人要问了,那么多数据库我应该用哪个呢?我的答案是:随便!!为什么?因为所有的数据库都大同小异,跟编程挂钩的核心在哪?SQL!!!当你把SQL学透,再用上面同样的方法去找你熟悉的语言操作SQL的API,管理类软件你就成功了一半!!!
你也许又会说,这才成功了一半?那另一半呢??另一半的答案在你的项目需求里!!讲的通俗些就是你平时怎么去做一件事的,就把这个过程通过代码反应到你的程序界面操作上,这就是“逻辑”!!再简单点!!就是程序里有N多的if for while之类的东西进行的判断!!这里你之前学的基础就可以派的上用场了,这个时候也许你会遇到不懂的API,没关系,现在大部分的IDE里都带有帮助,勤快点按“F1”,勤快点GOOGLE,别说用百度,百度对程序员来说就是个废物。因为真正好的答案在国外的BBS上!!
1-4、做QQ类的网络软件
说白一点TCP/IP!!不管是哪个操作系统,统一管操作它的代码叫SOCKET!!别管别人给SOCKET讲的什么端口复用、端口重叠的概念,那都是编程的叫法,只是编程方向上用来优化SOCKET负载和传输协议的东西,咱普通人用的还是最普通的SOCKET代码!!它的核心还是TCP/IP!!这会你又会发现你当初学的《tcp/ip协议详解》三卷起了很大的作用!!
这里有一个这样的问题,不要在乎别人怎么看待你用什么语言和工具去做你想做的事!!最重要的是结果!!!结果!!结果!!管它黑猫白猫,抓到老鼠就是好猫!!那些总是说这个语言好那个语言差的都吃饱了撑着没事干瞎侃,这个语言做这件事不容易,我换个做这件事容易的语言来做然后整合一下不行吗??终点就在那,我走不了直路,我绕个弯弯总能走过去!!只要你把编程的核心“逻辑”解决了,就好像盖房子一样,人家用钢筋水泥,我没钱,我用木头砖瓦也能盖起来!而且住起来一样不漏水!!!
题外话:我有一个程序<PCView>,以前在网上很热,挣了点小钱,后来远程控制类软件不好做了,索性就开源了,很多人为了这个代码当时把我的论坛都挤爆了。如果有机会大家下载到我这个程序不同版本的代码,应该可以看到当时我每个阶段是怎么走过来的,代码都是从繁到简!里面有驱动的代码开始我是用DELPHI写的,后来发现兼容性不好做,就改成用C++写OBJ做链接来做。再后面发现要做会员管理,后台就用了JAVA、PHP、.Net、Perl各写了一个。你想说为什么我要重复一个东西用那么多的代码来做?很简单!!!我的代{过}{滤}理有用不同服务器的!!我把它们都做好,代{过}{滤}理放上去就能卖钱做业务!!你说人家乐不乐意!!
暂告一段落,我要工作了,要不今晚三四点可能都睡不了觉,明天周末都没法休息,这篇乱七八糟的随笔,未完待续,等我抽时间把它叽歪完
7.25日续
Hello,大家早上好,今早有空上来论坛,没想到看到那么多童鞋都给了热心和CB,还有不少童鞋收藏了这篇帖子,谢谢大家。不继续说完就对不起大家了。
后面的内容很简单,说说开发一些常见应用层软件应该怎么串联知识,先说说网页吧。
1、网页的基础知识:
1-1、HTML
1-2、CSS
1-3、Javascript or vbscript(网页用的最多的是JS,这里我也只提JS,VBS也可以,但是我用VBS一般是用来做WINDOWS上一些自动化操作的工作罢了,因为看起来VBS比BAT的逼格更高^_^)
1-3、Php or .net or Java or python or perl or c and more....(这里面不同的语言又有N多个不同公司、社区、个人、团队写的框架之类的,我们都不管,我们只要用它们最基础的代码先写出我们想要的网页即可)
1-4、SQL(咋滴,又见到SQL了吧,如果之前你按照我以前说的好好学过写过桌面管理类的软件,到这里你应该是驾轻就熟了)
1-5、框架(这里框架要熟悉的最多的应该属用PHP的童鞋,比如说俺。。。)
2、网页应用,先学是HTML,很多童鞋就会说了,HTML有什么好学的,看来看去也就那几个常用的标签,没什么好看的,简单的很。如果是这样,你就应该谦虚一点了。
2-1、HTML跟新的HTML5常见的标签a、span、canvas(这些标签还有一个叫法“DOM”)这些看起来貌似很简单,其实不然,为什么?记下这句话:“标签虽简单,属性很复杂”!!我们不要求记住每一个属性,但是常用的属性以及怎么挂钩CSS跟Javascript这些是必须记住的,不要跟我说现在有很多很好的IDE可以代码提示!?然并卵。。。因为一旦你遇到断网的Linux服务器时,你就懵逼了。所以关键的属性必须要记住,脑子记不住,用笔啊,好记性不如烂笔头!!而且最最重要的是,我们的JS操作这些标签,90%都是在操作这些属性以及跟标签相关的CSS!!!
2-2、熟悉了HTML之后,就应该开始学CSS了。学CSS并不枯燥,相反它很有趣,这可是一位穿着漂亮的美人,经常的你要跟她约会,你也会希望她打扮的漂漂亮亮的好给你长面子^_^。有的童鞋就问了,我看到很多CSS代码里有个这个属性IE可以用,FIREFOX、CHROME又不可以用,我到底该不该用呢?我想说的是,现在你刚开始,至于它兼容什么浏览器关我屁事,老子只要在中国常用的WINDOWS的IE浏览器上能显示的正常、漂亮就可以了,今天写的东西还是给的中国人看的用的多!!咱大天朝IE还是主流!!哪天等真正遇到了需要做兼容的时候你再去测试那些一堆用"-"号开头的属性都不晚!!!
2-3、JS
JS是一门很高深的语言,为什么说它高深,它的匿名函数有时候会搞得你云里雾里的,尤其是在你读一些代码习惯不好的编码时!!简直想死的心都有了!!学JS没有捷径,二个字“硬啃”!
首先必须要硬啃下来的肯定是它的基础语法,这里推荐两本书,一本是犀牛角的《JAVASCRIPT权威指南》,另一本是shiningray老师的大作《JAVASCRIPT程序设计》!一定要边看边写!写多几次代码以后一定要把书闭上自己用记事本之类的文本编辑器尝试写一些常用的代码加深对JS基础的印象!!
2-3、前端的部分我们讲完了,现在我们该讲讲后端的程序代码了,这个就有点花多眼乱了,Php or .net or Java or python or perl or c and more....,至于用什么,随个人喜好,还是一样的,先学基础语法!!其实只要你熟悉一个编程语言的基础语法跟逻辑思维方式,学别的语言基础语法时,几乎就是两天左右的时间!!!为什么??李开复大哥写过一本书,叫《成功是可以复制的》。在编程领域,其实所有高级语言的东西都是可以复制的,变来变去它还是那个样,汇编例外!!!
2-4、SQL,这个不用再说了吧~~~~~
2-5、框架
市场上的框架千千万万,我们怎么知道要学哪个?这个问题其实非常非常简单!!!到51JOB.COM上面去找工作,看看别人公司在你熟悉的高级语言里最常用的哪几个,你就学哪几个就可以了,拿PHP来说,常用的无非就是ZEND、THINKPHP、YII这些。PYTHON的有两个常见的,DJANGO跟FLASK。JAVA。。SSH,到死都是它三个!.Net的也很简单,打开你的VS IDE,看看里面的模板跟微软官方自带的那个宠物商店的例子!当然我也曾经遇到过非常奇葩的香港公司,放着好好的微软自带的框架不用,自己用C#写了一个出来,用起来不伦不类的!!
好了,不知不觉又说了一大堆~~,如果大家还感兴趣,我下次有时间就说说游戏开发的那点学习经验,因为一旦这行你接触久了,其实你会对很多东西感兴趣,慢慢的,随着时间和经验的积累,你也会成为别人眼里的“大神”,但是是不是“大神”呢?我想这只有你自己才知道。
9.3续
Hello大家好!我胡汉三又回来了~今天打开论坛一看这帖子居然有那么多人关注了,着死有点吓到宝宝了,谢谢大家的厚爱,让我受宠若惊~~这段时间因为工作太忙,加上我的宝贝女儿出生,一直无暇顾及其它事,很抱歉~~~~
今天本来呢想说说游戏开发的事的,不过我这两天正好在写一个后台系统给我的客户提交Commercial Invoice,HTML5+CSS3+PYTHON+FLASK+JQUERY+MUI,数据库MYSQL,因为我也很久没用过这一套混血儿了,所以我很多都是现看现做的,正好就当做今天的一个话题聊聊吧,也希望大家不要嫌我笨。游戏开发的话题就留待我们下期探讨。
我的文章里不打算给任何的设计图跟代码,因为这个帖子本来我想讲的就是一个学习方法跟过程,并不是要手把手的教大家CODEING,如果是教CODEING有大把的书籍资料可以查阅的到。
1、要做一个PROJECT,你要明白这个PROJECT是用来做什么的,它中间的运作过程是怎么样的,它应该要给你和你的客户带去什么样的价值
比如我自己是做国际快递的,我的客户每天都要通过QQ有邮箱传不少的Commercial Invoice给我,这些一个个的EXECL文档多了不但看起来麻烦(话说我的桌面经常是乱七八糟满满的EXECL文档,看的我自己头都大有时候,更不用说有时候自己出去让我同事帮忙的时候了,他们根本就找不到),而且很容易出错,今年1月份的时候,我曾经因为这样让两个客户的货物运反了导致后面的手尾工作一大堆还赔了一万多块钱,说起来都是泪,所以从那时候起,我就一直在考虑怎么处理这个问题。
1-1、解决这个问题首先要的一点就是将每个客户的Commercial Invoice按照不同的时间、付款情况、运输情况分开
1-2、Commercial Invoice对我跟客户来说都是很有价值的东西,why?因为一旦Commercial Invoice多了,可以做一个大数据分析,让客户跟我们都可以清楚的了解到销售情况跟市场行情,当然这部分思维扩展不属于我们今天讨论的范畴,略过~~
1-3、OK,现在我们将这个小PROJECT所需要的东西理的差不多了,接下来我要选择用.NET、PHP或者别的什么东西来把我的工具造出来。
1-3-1、.NET很好,但是我的笔记本上没有留到SQL SERVER的存档,还要去下载一个几个G的家伙,然后等它安装半天,接着还要在服务器上重复一遍这个工作,等做完这些工作,黄花菜都凉了
1-3-2、PHP也很好,现有的PROJECT全部都是在WORDPRESS的基础上用PHP来做的,运行了好多年了一直稳稳当当的,而且有现成的服务器可用。但是我觉得用的太顺手了,写起来逼格太低。请允许我装一下逼,哈哈哈哈!!其实不是这样,开个玩笑。主要是因为我后面还有一个russia post的PROJECT是要用PYTHON去识别车牌号的,所以正好先用自己的PROJECT把环境搞好了,后面就好办很多了,至于服务器嘛,无所谓啦,PYTHON有PIP、EASY_INSTALL、PYPM等等一大堆包管理工具,你还怕它跑掉,随手一个BAT都能变成全自动的:)
2、很多人这个时候开始摩拳擦掌打开IDE准备开始写代码了,但!这是错误的,首先应该先建数据库。往往一个项目是否健壮有经验的人会先去看数据库设计,然后再看类的设计,最后才看编码的优化。这是硬道理,大家伙记住就好!建数据库我习惯用POWERDESIGNER。具体的设计我就不给出我的图了,相信聪明的你们如果在经过我前面说过的学习方法一路走下来的话这已经是小菜一碟了。
3、数据库建好以后,还是POWERDESIGNER,有很多人会说啦,好像POWERDESIGNER不能导出PYTHON啊?没关系,我不要它导出PYTHON,我只要有一个代码图,然后我就可以根据这份图写出具体的继承关系啦,所以说。。。管它能不能导出PYTHON代码,跟我没半毛钱关系。。。如果你想写Python代码快点,我建议你用codesmith+pycharm,pycharm用起来感觉真是爽爽的,不信你在IDE里用ctrl+shift+a然后回车看看,哈哈哈~~~
4、在写代码的时候如果遇到了问题,建议大家多用google,不要用baidu,google出来的信息量绝对不是baidu能比的,而且不要只看前几页,你要知道你在找资料,只要你的问题表述的比较准确,就好像进到图书馆一样,在那一角有那么多本书,你多看几本无妨。有时候我要的资料往往在翻了二十几页GOOGLE页面后在一个私人的BLOG角落里找到,我一样会把它存到我的收藏夹跟“为知”里去
此外我还有一个小心眼,如果我去书店的目的就是想找某个问题的解决办法,一般我去书店都是只看书不买书的,如果找到了我会用纸跟笔记下来然后放好书就撤了(当然如果那个东西刚好是一本书,那我也要花票票才行。。。。)
好啦,又啰嗦了一堆,又不知道什么时候才有空了,等有空了就继续啰嗦:)
凌天羽 发表于 2016-7-16 20:22
如果想学习编写软件,一般先从什么学起呢?
看你想做什么类型的了,做挂做小工具就易语言,简单快捷,还能掌握可视化编程的一些思路
缺点是很多功能封装成了模块,自己对底层的了解太少,以后转型还得费功夫去改变自己的观念(比如写一个POST:用易语言一句话就完成了,为啥用C语言写POST就得先引用netinet库,建一堆常量,写结构体之类的啊..你会很晕)
如果是为了工作,或者为了写游戏,系统级应用,跨平台开发之类的,就学一些主流语言,Java Nano C/C++ GoLang,或者脚本语言:Python PHP Perl Ruby,以及开发网站需要学的HTML JAVASCRIPT CSS等,这些都是比较有前途的
总结一句话,玩玩用易语言足够,不必伤神去深入学各种原理,直接调用别人写好的类库(以语言的话应该是模块吧..),写外挂的话就研究怎么找基址就OK;想正经学或者是做游戏赚钱就找一门自己看的顺眼的主流语言,现在流行的跨平台游戏框架 cocos2dx就是用的c++,Unity是Nano也就是C#,Android原生应用就Java,IOS Objective-C,看你想做啥了 {:301_1003:}支持一下 编程语言推荐aardio 支持 {:301_993:}支持 呵呵,看看,更新,还有没有其它指教~! 但是对于没有一点编程基础的人,看《tcp/ip协议详解》 能看懂吗?
是看的纸质书 还是电子版的? 其实我觉得.没有一点儿基础的,想弄GET/POST的,完全可以直接用易语言.百度一下现成的例子,瞬间完成
易语言之所以被各种无基础的人接受,就是因为方便 而且不需要了解任何专业知识,简洁. 用一堆WinAPI完成的操作,用VB可能只需要三行,用易语言只需要一行
如果说一点基础都没有的人,你要他看TCP/IP协议,肯定非常吃力 枯燥 无聊,这是众所周知的,我大学时几乎全班的人没一个对网络课感兴趣,全是死记硬背枯燥乏味难以理解的东西
所以说如果按楼主的初衷来看,仅仅是为了完成GET和POST请求,去学TCPIP四层协议甚至了解OSI的七层,以及拓扑结构,纠错算法这类底层东西,甚至了解Linux,实在不是好主意
但是如果要是想做网络工程师,而不是自己坐几个小程序玩玩,那么去学这些底层的东西是很有必要的. 可以支持一下 LzSkyline 发表于 2016-7-16 20:09
其实我觉得.没有一点儿基础的,想弄GET/POST的,完全可以直接用易语言.百度一下现成的例子,瞬间完成
易语言 ...
如果想学习编写软件,一般先从什么学起呢? 说的是比较正确