精华内容
下载资源
问答
  • 程序不自己永远学不会编程

    千次阅读 2006-10-25 11:47:00
    程序不自己永远学不会编程 
    程序不自己写永远学不会编程 
    展开全文
  • 随着Scrapy等框架的流行,用Python等语言爬虫已然成为一种时尚。但是今天,我们并不谈如何...随着互联网技术的发展,爬虫不再是门槛非常高的技术了,一些编程语言甚至直接提供爬虫框架,例如python的Scrapy框架,它

    随着Scrapy等框架的流行,用Python等语言写爬虫已然成为一种时尚。但是今天,我们并不谈如何写爬虫,而是说说不要写代码就能写出来的爬虫。

    爬虫新时代

    在早期互联网世界,写爬虫是一项技术含量非常高的活,往大的方向说,爬虫技术是搜索引擎的重要组成部分。

    随着互联网技术的发展,写爬虫不再是门槛非常高的技术了,一些编程语言甚至直接提供爬虫框架,例如python的Scrapy框架,它们让写爬虫走入“寻常百姓家”。

    在知乎的热门话题“能利用爬虫技术做到哪些很酷很有趣很有用的事情?”下,很多用户用爬虫实现了很多有趣的事情:

    有人用爬虫爬取了12万知乎用户的头像,并根据点击数据训练出来了一个机器人,可以自动识别美女;

    有人用爬虫爬取了上海各大房产网站的数据,分析并总结出过去几年上海房价的深度报告;

    有人用爬虫爬取了一千多万用户的400亿条tweet,对twitter进行数据挖掘。

    写爬虫几乎没有门槛 

    我们已经发现,写爬虫是一件炫酷的事情。但即使是这样,学习爬虫仍然有一定的技术门槛,比如说要使用Scrapy框架,你至少得会python编程语言。

    想象一个场景:你是一个房地产销售人员,你需要联系很多潜在客户,这时候如果靠在搜索引擎或者在相关网页上查看信息,就会非常地费时费力。于是就有朋友说了,学习一下怎么写爬虫,然后抓取销售数据就可以了,一次学习终生受用。

    这样的说法,很难说的上是个好主意,对于房地产销售从业者来说,学习写爬虫的代价实在是过于高昂了,一来没有编程基础,二来如果真的能写好爬虫,恐怕就直接转行写带代码了。

    在这样的形势下,一些可视化的爬虫工具诞生了!这些工具通过一些策略来爬取特定的数据, 虽然没有自己写爬虫操作精准,但是学习成本低很多,下面就来介绍几款可视化的爬虫工具。

    集搜客GooSeeker

    使用集搜客不需要编程语言的基础,将要抓取的特定字段映射到工作台,建立好采集的规则,就能轻松将数据采集成功,整个过程简单明了。

    集搜客的特色是爬虫群功能,功能非常强大,可以直接在会员中心控制采集数量,控制采集时间,同时可以用多个爬虫采集同一网址,防止采集过于频繁IP被封,又能保证采集的速度,同时采集的数据可以直接入库,并导出,关键是集搜客还不限制采集的深度和广度,想多少采集多少。

    八爪鱼

    八爪鱼有个优点,可以下载现成的采集规则,如果不会写规则, 就直接用别人写的规则就好了, 进一步降低了使用爬虫的门槛。

    1.jpg

     网络矿工

     2.jpg

    网络矿工是一款基于C#开源的网络爬虫工具,注意,是开源。网络矿工遵循BSD开源协议,具备完整的UI交互、线程管理、采集匹配等,用户可以基于此扩展属于自己的采集器,而不受任何限制。

     火车头

    3.jpg

    火车头采集器界面比较清爽,并且内置了好几款皮肤,视觉效果不错。采集器内置了一些常用网站的采集规则,内容以门户网站为主,感觉用处不是太大。

    采集规则流程倒是蛮清晰的,自动获取地址链接也足够方便,缺点是一些结构复杂的页面无法获取到信息。

     4.jpg

     神箭手平台

    5.jpg

    神箭手平台和以上工具都不太一样,它是一个开发爬虫的平台,你可以自己开发爬虫并将爬虫托管到云端。

    神箭手的一些特性非常符合潮流,比如防屏蔽、开放的接口、图标分析功能,换句话说这其实已经是个开发工具了。

    更重要的是,它是一个爬虫市场,你可以出售自己的爬虫,或者在平台上购买需要的爬虫,这对于广大爬虫爱好者来说,多了一个交流和变现的途径。

    爬虫与反爬虫

    可视化爬虫工具的出现,让大量原本并不会写爬虫的人也能爬取数据,这就至少能造成两个后果,一是网站的数据丢失的概率更大,如果是商业数据的话,被竞争对手利用从而导致经济损失;二是越来越多的爬虫会对网站负载造成压力,严重者甚至会宕机。

    当然,对于普通用户来说, 无论是学习写爬虫还是学习使用可视化爬虫工具,都对自己的工作与生活有益。

    互联网的发展重新定义了很多规则,而爬虫的存在使得一些看起来非常困难的事情也变得容易起来,也让一些原本简单的事情变得复杂。

    * 本文作者:岂安科技(企业帐号),转载请注明来自FreeBuf黑客与极客(FreeBuf.COM)

    展开全文
  • 给想学和在学编程的你们,学习编程的7个好处

    万次阅读 多人点赞 2020-03-29 19:20:41
    其实选择学编程是能变人生的。可能很多人学编程,报了一个编程培训班,为了就是拿到更高的工资或者有更好的工作环境。最后坚持下来的都会发现编程给我们很多个人能力和技能的提升。

    写给想学和在学编程的你们,学习编程的7个好处
    你们有没有这种经历?亲戚或者爱人甚至是不做技术的朋友,看到我们屏幕上的小括号{},大括号[],还有一大堆的技术英文单词privatepublicfunction等等,都会惊叹一句“你写的是什么呀?太可怕了,全是英文看不懂。”或者“做个程序员是不是需要英语很好的呀?太难了!” 其实当真正学习编程和做起程序员来一切并没有那么的可怕,也并不需要英语有多厉害。不信的小伙伴可以问问身边大多数的程序员,问问他们刚开始学编程的时候英语是不是很好,估计得到的大部分答案都是:“没有哈,不是的哈”。

    当然,如果你英语比较好,在编程的路上确实是会给你带来一定的优势。我们可以这么去想,会英语的看代码就等同于会是在看一本书一样,函数名,方法名其实都在描述这个代码是在做什么的。自然理解起来的时候就不需要很费劲了。加上学习新的技术和原汁原味的技术时,都会需要看国外的文章和文档,这些基本都是英文。但是不会英语也一样可以学好编程,也一样可以成为一名优秀的程序员。甚至在学编程的路上,你的英语也会有所提升。

    其实选择学编程是能改变人生的。可能起初很多人学编程,报了一个编程培训班,为了就是能拿到更高的工资或者有更好的工作环境。最后坚持着坚持着,最后会发现编程还会给我们带来很多个人能力和技能上的提升。


    三钻分割线

    「一」什么是编程?

    什么是编程?

    想开始学习编程或者坚持学习编程,我们首先要知道什么是编程?做编程的开发者是做什么的?这个行业是否合适自己?— 做为程序员,开发者和编程工程师,对外行人来说我们跟TA们说我们这些职称,基本TA们脑海里都会出现一个在修电脑或者修手机的我们。还会来一句“噢噢,做IT的呀?改天过来帮我看看我的电脑,开不了机了。”

    在TA们的脑海里就出现了这么一个画面 🤔:

    在TA们的脑海里就出现了这么一个画面

    程序员是什么?

    我们用一个能让大家都懂的方式解说程序员做的编程工作到底是什么:

    如果现在我们需要一把剑,那我们就会找造剑的工匠。 同等现在我们要做一个手机APP,一个网页系统,一个软件或者一个电脑工具,打造这些的工匠就是程序员。


    🌟简单的说“程序员和开发者就是打造软件或者互联网产品的工匠,我们的材料就是全英文的代码,我们的工具就是代码编辑器(IDE)

    这样说外行人应该就懂程序员,开发者,软件工程师是个什么鬼玩意了。


    前端和后端又是什么?

    好奇的人还会问,“听说开发还分后端和前端,那后端前端又有区别呢?” — 好问题呀童鞋,这个真的让人难以解说了。不过不用怕,给大家两例子让0技术基础的TA们都能听的明明白白。

    后端解说例子:

    后端写的程序就是一个货物仓库中工作人员的指挥部。来仓库找材料的人需要10万个“外科口罩”。这个时候指挥部先找到这个口罩在仓库的具体坐标,然后会发出指令告诉仓库工作人员去到某一个地区的货架,第二排找到这口罩,最后搬过来给到需求方。


    转化为技术专业名词:

    • 找货物的人 — 就是调用后端接口拿数据的一方
    • 仓库指挥部 — 后端编写的程序
    • 仓库 — 就是保存资料信息的数据库
    • 仓库的货物 — 就是数据库里面的数据

    前端解说例子:

    如果后端操控存放货物的仓库,那前端就是建筑师,前端主要的工作是建立店铺和装修店铺,然后从仓库获取货物到店铺中展示。一个店铺中货物必须分类摆放,有条理,好看才会有人买。所以前端还会规整货物,让货物分类摆放,同时让客户容易找到还好看的舒服感,自然就会有更多的客人来店购物。


    转化为技术专业名词:

    • 店铺 — 就是前端打造的页面
    • 建立店铺和装修的材料 — 就是前端页面排版
    • 店铺中的货物 — 就是后端给予前端的数据
    • 取货 — 就是前端请求后端获取数据

    还有比较常见的两个方向,前端和后端。当然编程还有很多方向,比如“算法工程师”,“运维工程师”,“测试工程师” 等等。这里我就不一一细说了。有需要了解其他的可以在评论区给我留言。

    我们需要了解清楚什么是编程,开发者们做的是什么。程序员用编程打造软件产品的工匠,给人类带来更便捷的工具与平台。让我们可以通过手机,电脑加互联网来自动化,系统化,智能化的完成我们的工作或者沟通。甚至可以高效提高很多行业中工作的效率,解决很多繁杂的操作和任务。还可以给我们带来信息快速传播和展示的作用。每个程序员都有一个梦想:“用代码改变生活,用代码改变世界!”

    三钻分割线

    「二」学编程的好处

    学编程的好处
    学习编程其实没有想象中那么难,但是也并非一条容易的道路。在学习编程的过程中最困难的就是动力和坚持。一开始学习的时候我们会很感兴趣,每做出一个小功能后会感到非常有成就感。可是当我们越学越多,越学越难之后我们会开始觉得枯燥无味。一个问题或者一个难题可能都要好几个小时,甚至是一天两天才得以解决。所以不论是我们在学习之前还是在学习中工作中,我们都要有发自内心的热爱和动力。

    所以我们需要找到我们学习编程的好处,我们能得到什么,能改变什么。这样我们的毅力和动力才能得以持续维持。我希望通过接下来的分析,能给到感兴趣但是也不是很有动力的童鞋开始学习编程,在学习编程中有点迷茫的童鞋更能坚持下来,更加热爱这一条道路!


    1. 拥有把想法转化成应用的魔法

    拥有把想法转化成应用的魔法
    做为一个程序员,最有成就感的一件事情就是能把一些想法,一些有趣的点子通过编程把它们转化为应用。一个可以操作、可以体验和可以帮助很多人的应用。但是如果我们不懂编程,我们就只能找技术来帮助你实现。但是开发成本太昂贵了,最终就选择放弃。

    估计大家在这个互联网时代中,每天日复一日的生活中,都会有那么一瞬间觉得 “有那么一个APP,那么一个平台,我们做某一件事就会方便多少,就会简单多少” 。但是我们不懂编程,不懂技术,无法去实现,所以到了最后我们就会与这个很好的想法擦肩而过了。也许当过了几个月后,就会发现有人做出了这么个应用,和你当时想的是一摸一样的,就会开始觉得,“诶,如果我能自己做,现在看到的这个应用就是写上了我的签名,在改变大家生活和人生的人就是我了”。

    在现实中,如果要一个想法落实到生产出应用也绝非易事。人在大脑构思出来的想法,要表达出来给到产品经理整理逻辑,转化成原型。然后通过原型还需要UI设计师转化成设计稿,最终到开发者手上再理解一才能真正开始研发。但是多少想法在这个过程中被人与人之间的沟通,传达,理解所被丢失的细节呢?所以最终做出来的产品往往不是完完全全和一开始构思的一摸一样。

    其实很多开发者都是在这个研发流水线中的一员,研发部没有了产品,没有UI设计,前端就无法排版,后端就无法研发。不知道大家有没有留意大厂或者是国外的开发者。很多前端都是懂UI,懂设计理念,甚至是两者兼备的。然后后端都是懂前端,起码有前端知识的基础。为什么呢?因为一个想法经过越少的人,就会丢失越少的信息。这样做出来的产品才能与当初想的越贴切。当然,如果研发中心的每个部门的人都是牛人,必然能打造很好的产品的。但是中小型的公司的人员能力参差不齐,在我以前待过的中小型公司的老板都是天天跟着产品,设计和开发的屁股盯着。就怕最终产品走了样。

    俗话说的好“如果你想心想事成,最好的方法是自力更生”。也是因为这样我也走上了全栈开发之路。产品,设计,前端,后端和运维都专研了一遍。

    当然做为专研一个技术领域的开发人员也能做出很好的产品。比如说博客,个人网站,excel处理程序,春节抢票工具等等。多少这些提高我们工作和生活的产品都是开发者自己在日常生活或者工作中,想避免一些繁杂的事情做出来的工具或者应用。

    但是如果我们不懂编程,就只能依赖于别人。“因为懂编程,我们的想象力可以是我们的创造力”


    2. 拥有强大的学习能力

    拥有强大的学习能力
    编程的世界是一个高速发展和变化的环境,也与星空一样知识是无边无际的。今日的编程实现方式与5年前的来相比,已经是截然不同了。每天每个编程的语言与TA们的框架都在升级迭代中。

    我们无法学会所有编程语言或者技术栈,不过我们是可以在某几个编程领域中发光发亮。只要我们坚持,专研,深度学习一门技术,我们必定会变成这一方面的专家。

    在编程的世界里,我们会找到很多可以学习和成长的空间。无边无际的知识海洋,就算一门语言我们学到了TA的巅峰境界,我们还可以去突破TA,或者选择再学习多一门语言来提升我们自己的研发能力。所以在这种高速发展的技术领域中,我们的大脑的会被各种技术的知识开阔我们的很多思维。

    给大家讲一个我的经历:

    我入行编程事业的时候没有现在的前后端分离,后端是需要和前端混编的,而且一开始在中小型企业也没有完善的产品部,设计部,研发部。所以对于前端的知识还是需要懂的。我进入的第一家公司,没有产品经理,没有UI设计师,没有前端工程师,研发部就我一个人。一进入公司项目老大就跟我说,要我一个月做一个物流管理系统(ERP),并且要实现:商品管理,订单管理,进销存管理。然后商品和订单,需要与淘宝,天猫和京东对接上,可以实时同步。从产品的需求整理,沟通到设计和研发都是我一个人在弄。

    年少轻狂的我,毕竟是交代下来的工作,那就是一个字“干”!从不懂什么叫ERP,到了解商品管理,多规格SKU,订单状态流,入库出库单到学会对接第三方平台订单。一路过来有无数个不眠夜,无数个在写着写着代码就昏睡过去几分钟的经历。不止需要学懂业务,还需要自己排版,自己提升自己前端的能力。这个过程说长不长,说短不短,一个月我独立完成了商品体系,订单体系,进销存体系,订单同步完成了80%左右。(后面公司招到了更多的开发,最后与4个开发者一起完成了这个系统。随后还做了客户管理系统 — CRM)

    说实话这个过程我有无数遍想过放弃和辞职,但是我出去又有什么本事去更好的公司呢?我当时的技术能力一文不值,去一个好的公司根本就是妄想。咬咬牙齿就继续坚持下来了。

    一点都不夸张的说,当时基本每天上班18-20个小时,眯眼就大概2-4个小时。但是事后,我发现自己学习能力,适应能力,抗压能力各方面都得到了飞跃性的提升。在我往后的技术生涯中有了很多帮助。当然我并不建议大家都进入这种玩命的公司来快速学习和成长。毕竟当时的我是被逼无奈。

    在我的这段经历出来后,我感觉自己脱胎换骨,对于技术的热爱半点不减,反而发现不停的学习和成长非常重要。过了那么多年后还在学习和成长的路上。

    不知不觉在编程的领域中,会发现我们的学习能力会得到不断的提升,因为我们每天都在学习和成长。而我们的未来还有无边无际的知识海洋在等着我们。


    3. 编程提升逻辑思维和分析的能力

    编程提升逻辑思维和分析的能力
    编程就是用逻辑思考能力把问题分解成一个个小问题,逐个突破。也是用分析能力把功能和任务分解成一个个小任务,然后小步快跑的去快速完成。

    逻辑思维能力

    在编程中我们会遇到很多问题,并且需要我们一个个的去解决。解决困难,解决问题是做为一个开发者必备的技能。大到技术架构,解决业务场景带来的难度和逻辑复杂度,小到解决系统中的问题和缺陷,使用逻辑思维去排查和修复漏洞。

    在每天的工作中开发者都是会面对各种各样的问题和困难,长年累月每一个开发者都会养成解决问题的能手。渐渐的我们会有各式各样解决问题的办法。一个我们经常用的口诀“先思考,后百度,再求助”。(个人推荐用Google,更容易找到精准的答案)

    也是因为日常的不断锻炼和思考,让我养成一种逻辑思维来解决问题。每一个问题都会建立一套一套的逻辑思维方式和方法来解决。比如系统中的一个问题出现了,一个资深的开发者,瞬间就可以定位到问题并且给出解决方案。其中最重要的一个点是因为资深开发者长年累月的经验,还有就是熟悉解决问题的排查方法,一套高效快速的方法。

    分析能力

    作为一名开发者,每天都需要分析需求,功能,难题等等。分析、整理和思考都是每日的家常便饭。

    当一个需求到手的时候,开发者需要去分析里面的功能,把功能分解成一个个小块来进行设计,给出对应的实现方案。同时也需要我们去分析里面新增,修改,优化的功能对现有架构,功能和体系存在的影响和难度。最后定制出解决方案或者实现方案。

    除了需要分析需求,我们还需要去分析每个功能或者业务的流程和逻辑。比如一个系统中的登陆流程大概就是:
    登陆流程
    经过编程的长期锻炼,我们的思维会发生改变,遇到每一件事情或者事物,我们都会解刨分析。比如讲到车,我们首先会把车分解成一块块来分析,引擎,轮轴,车胎和油箱等等,然后深度分析每一部分的作用和逻辑,从而明白整体车是怎么运作和构建的。

    编程的过程中,会培养我们的逻辑思考能力和分析能力。渐渐的会让我们成为一名先通过深度分析,然后用逻辑思维解决问题的大师。


    4. 用自动化程序为我们干活

    用自动化为我们干活
    日常生活中,我们有很多重复的工作,极度的枯燥乏味。但是我们幻想一下,如果编写一个程序可以帮我们自动化的处理掉这些工作,是不是很舒服?这样我们就会有更多的时间思考,或者做更多有意义的事情。

    自动化,智能化都是现在科技高速发展时代经常听到的热搜词。目前给我们带来很多生活中方便的应用、系统和工具都是怎么来的呢?其实都是程序员用代码编写出来的。

    支付宝、微信、钉钉等这些应用大家都很熟悉吧,基本每天都会用到。其实里面帮我们做了很多繁琐的事情,比如说支付宝帮我们记账,分析出每月我们的支出。微信的语音功能可以自动帮我们转换成文字,让我们不方便打字,或者懒得打字的时候,录一段语音,点个按钮就转换成文字,还自动给我们加上标点符号。钉钉为我们引入了自动蓝牙打卡,不需要天天排队打卡,每个月还会自动生成考勤异常情况,分析出某个人某天缺了打卡或者某天有缺勤需要补一个调休。

    这些都是编程为我们日常生活中带来的方便和便捷。让一些需要我们坐下来花时间处理的繁杂事情变得更自动化、简单化和智能化。如果没有支付宝,每天我们还需要带着现金出门,不够现金了,还需要去一趟银行取钱。如果没有微信,我们可能还需要写信,然后出去邮寄才能与远方的朋友联系聊天。如果没有钉钉,每个月考勤情况,还需要我们去人工计算核对时间和缺勤情况。

    学会编程不止可以编写改变世界的代码,还能为我们自己日常工作或者生活中编写工具来节省时间。如果我们学会了Python编写Excel脚本来处理表格,自动填充和获取信息。根据我们每天在电脑的工作行为用脚捕捉写成日报表,甚至自动帮我们提交。自然就可以多出很多的时间来学习和做其他有意义的事情。


    5. 拥有高薪的职业

    高薪职业
    技术行业的薪资相对比其他行业的平均薪资都会高一些。其实每一行都可以到达很高的薪资,每一行都有每一行的辛苦。但是一个永恒不变的定律,一分付出就有多一分收获。编程也是因为有难度,每天都是辛苦的脑力活,所以才会薪资高。

    其实程序员工资高也是因为当前是互联网和科技高速发展的时代,所以编程岗位也还处于非常短缺的状态。加上技术一直在发展,技术和互联网相对比其他行业还是属于一个成长期。很多新型的技术和语言每日每夜都在更新迭代。技术行业的岗位也是每年都在增加。从几年前的前端后端,到现在的人工智能开发,甚至到未来的机器人开发。

    技术行业的薪资体系,目前来看,我是觉得不是很标准的。这几年来面试的过程中,很多应聘者对自己能力的评估和价值都是有偏差的。但是我觉得相对其他行业,技术活都是凭能力说话,凭能力换来对等的报酬的。只要自己的能力强,技术的知识深度够,实战能力够硬。月入过万都不是梦。

    如果你们热爱高效的工作和无限的自我提升空间,大概你们会很喜欢和技术开发人员一起工作。我们是一群为了产出更有的程序而坚持提升自己,为了产出更好的产品而马不停蹄的提升自己的程序和代码。在这个领域中,会让你们大开眼界,扩大自己的思维瓶颈。每日都会发现各式各样的新鲜事物。能力的提升都会给我们带来对等的薪资提升,是一个越努力越赚钱的行业!


    6. 可以是一个有趣的业余爱好

    有趣的业余爱好
    学习编程成为一名开发者,不一定是要作为你朝九晚五的一份工作。可以把编程当成一个我们热爱的爱好,甚至是一份副业。

    在我读大学的时候,我并不是一名读计算机专业的学生,当时的我特别热爱玩游戏,也特别喜欢写攻略。有一个公会里面的老大就跟我说,为什么不自己做一个攻略网站或者博客,还可以顺便赚一下广告费。就是这样我开始了自学编程,手把手搭建起自己的网站和博客,从此爱上了编程。

    大学期间我还接过很多做网站的外包,做过无数个网站和博客的主题开发。也赚了一些游戏经费和学习经费。到了后面我开始研究开游戏私服,自学了一些游戏开发,开启了游戏私服。

    这个过程中,我把编程当成了自己的一个业余爱好,也没有想过今天的我居然成为一名朝九晚五的程序员。回过头想想,编程给我带来了无比的快乐与成就感。作为一名开发者,可以让我们的想象力自由飞翔,实现我们所想,唯一需要的就是我们懂得编写代码, 代码,就能打造出我们心中所想的东西。无论你现在是想写一个网站介绍你自己,写一个博客记录你学习路上的种种,还是写一个无比有趣的小游戏。编程都可以如你所愿!

    编程对于任何人都可以是一个有趣的业余爱好,没有门槛。任何人只要有一台电脑,能上网,就可以开始学编程。编程是不受任何的限制。只要你愿意学,有兴趣,有毅力,你都能学会。


    7. 充满活力及友善的社区

    充满活力及友善的社区
    程序员是我见过最有趣,最可爱,相处起来最轻松舒服的一群人。程序员之间没有过多的勾心斗角,像其他行业团队里面那么多的宫斗剧上演。在我待过的团队中,比较多的都是热爱学习,热爱生活,热爱代码的一群热血青年。

    当然,凡事无绝对,都是有好有坏,也会有有一些比较让人恶心的程序员就希望自己每天工作中舒舒服服、一问三不知和一叫三不做的人。好在这些人还是占少数的,相对一二线的城市和有些规模的公司工作,普遍团队中的程序员都是比较好相处,并且在工作中会让我们非常开心有趣。

    每一个语言或者框架,都有一群充满热情和活力的社区等着你的到来。比如CSDN,掘金,Segmentfault,Stackoverflow,GitHub等等这些大型的技术社区有很多的热心和热爱技术的开发在维护着这个充满热情的编程世界。如果我们需要帮助,有无数的手会伸出来援助于我们。

    在学习编程和技术开发工作中,作为一名程序员,我们并不孤单。我们都是一个团体在一起努力,一起奋斗,一起并肩作战。还有网上的各路英雄好汉在江湖中奔跑着,随时可以认识到其他的开发者与你共同进步,一起终生学习,热爱编程,热爱生活!


    「终」总结

    总结
    这周我又写了一篇上万字的博文,给想学和在学编程的童鞋们打打气,也把我自己在编程事业中的感触分享给大家。最后我想大声的跟大家说:“对!无论我们当前是多大岁数,不懂英文也好,不懂电脑也好,编程都值得我们花时间和精力去学”。

    在这个技术和科技高速发展的时代,不懂编程就像古代中的文盲一样。你永远不知道你是否喜欢一样东西,直到你尝试它。所以对编程有兴趣的,想学编程的,现在就打开你们的电脑,开始投身到技术的海洋吧!在学习编程的你们,坚持再坚持,只要你努力,你坚持,就必定会成功!所有的付出都会得到收获,所有的艰辛都会换来未来的幸福,越努力越幸运,越努力越赚钱。

    在编程的路上,有无限的可能,也有无限的空间,只要你热爱它,它也会相应的回报努力的我们!让我们一起终生学习,用代码改变生活,改变世界!

    推荐阅读

    推荐阅读以下几篇文章,可以让助你成为出色的开发者。

    • 🔥《如何高效学习编程》 — 编程确实不是一件容易的事情,除了要有较强的逻辑思维,还需要花大量的时间和集中力来提升或者维持一定的高度。
    • 🔥《5大法则助你 成为更出色的开发者》 — 这篇文章传授5大法则助我们成为更出色的开发者,在众多开发者中脱颖而出的诀窍,也会在我们的技术职业生涯中给我们很多的帮助。
    • 🔥《用“易于改编”原则,提升编程水平,写出更好的代码》 — 无论新手还是资深开发者都会经常问一个问题,“怎么写好的代码?”,要知道怎么写好代码,首先我们要知道怎么样才是好的代码。要有明确的目标,才能知道如何达成目标。在《程序员修炼之道》中提到的“ETC Principle” – 易于改编原则。这个原则看似简单,但是我们越是深入思考越是觉得“简约而不简单”。

    和你一起终身学习

    展开全文
  • 如何代码 —— 编程内功心法

    千次阅读 2017-08-29 21:07:06
    怎样好代码 —— 编程独家心法 代码就是学一门语言然后开始撸代码吗?看完了我的《GoF设计模式》系列文章的同学或者本身已经就是老鸟的同学显然不会这么认为。编程是一项非常严谨的工作!虽然我们自嘲为码农,...

    怎样写好代码 —— 编程独家心法

    写代码就是学一门语言然后开始撸代码吗?看完了我的《GoF设计模式》系列文章的同学或者本身已经就是老鸟的同学显然不会这么认为。编程是一项非常严谨的工作!虽然我们自嘲为码农,但是这工作毕竟不是真正的搬砖,我们是软件工程师。编程需要关注的问题太多,不仅仅有语言,还有算法、数据结构、编程技巧、编码风格、设计、架构、工程化、开发工具、团队协作等方方面面,涉及到很多层面的问题。本文将分享一下根据我这几年来的编程经验总结出的一些关于如何写代码的个人见解。

    由于“跟我混”的一些小伙伴编程功底相对来说比较薄弱,所以在此总结一篇“编程内功心法”帮助他们渡过职业生涯的第一个瓶颈期。顺便,也造福一下路过的有缘的同学!于是有了此文。

    前言

    首先,思考一个问题,何谓编程?编程就是写代码吗?

    所谓的编程,其实就是不断的对这个现实世界中的问题建立模型并将其固化为代码自动化执行的过程。

    ~ Bug辉 《GoF设计模式 - 解释器模式》

    在对问题建立模型的过程中,我们会遇到非常多不同层面的问题,所以我们需要很多领域的知识去解决这些问题。

    • 我们需要管理被操作的数据,因为数据与数据之前是相互有关联的。将数据结构化,通常是编程的第一步。关于结构化数据的相关理论以及实践,需要有一个专门的学科分支或者说课题去研究——数据结构

    • 我们需要解决一个具体的问题,这个具体的问题如何一步步去解决,过程是怎么样子的——算法

    • 我们需要将解决方案进行自动化,并以代码的形式进行交付——编程语言

    • 如果将一个抽象的模型进行编码实现,如何实现“这个功能”,如何实现“那个功能”——编程技巧

    • 问题的规模大了,众多代码糅合在一起,连程序员自己都看不懂了!怎么来拆分、模块化这些代码——设计

    • 代码量已经到了一个人无法完成的地步了,需要团队分工合作才能完成了——工程化

    • 你写的代码我看不懂,没法调用或者很难调用,我写的代码你也看不懂,或者很难看懂。还怎么愉快的玩耍——编码风格/编码规范

    • 问题的规模继续扩大,到了系统工程的规模了,之前学的套路已经不管用了!怎么来构建这个系统才能实现正确、安全、高性能、高可用——架构

    然而这些也只是一个系统工程中的冰山一角!这是一个庞大的体系。也正是因为软件开发需要考虑到的问题太多且团队成员水品参差不齐,所以团队开发中并不是每个程序员做的事情都是一样的。每个人都有自己的角色、初级工程师、中级工程师、高级工程师、架构师、CTO。。。

    所以编程不仅仅只是堆砌代码!

    说到这里,我想起来了一件事情——为啥业界普遍鄙视培训出来半道出家的新人?人与人的区别是很大的!我见过培训出来也很牛的。其实,说到底,被鄙视的并不是所有人。而是那些培训了几个月之后发现随便找个工作也能拿“高薪”然后还自认为编程很简单的新人。因为这种经历给了他们一种错觉——编程如此简单,我培训几个月也会嘛!有点像刚学会开车的新司机,很嚣张的对老司机说“开车很简单嘛!你看我也会啊!”。语言和开发工具只是招式,这是外功。而编程思想、经验是内功。这些内功并不是靠短短几个月的培训能够掌握的,这一点有点像中国制造业和日本制造业的区别。动不动赶英超美可不好。。。

    编程并不简单!这是一件很严肃的事情。不过今天,我没有办法介绍完所有的方面!或者说,到今天为止,我也并没能掌握所有领域的知识。所以今天我只是分享一些关于编码本身的一些经验。

    另外,本文主要分享如何写代码,并不是如何用Java写代码。所以文章中各种语言都有可能出现。


    编码风格

    先来一个圈内的段子。

    大部分程序员在工作中都很讨厌这四件事情:

    1. 写注释

    2. 写文档

    3. 别人不写注释

    4. 别人不写文档

    o(∩_∩)o 哈哈。。中枪了没!

    这个段子其实反映出来一个问题,即大部分代码都需要通过大量注释和文档来说明才能将意图传达给维护这些代码的程序员!然而,就像上面的段子说的那样,写大量的注释和文档其实是一件很麻烦的事情。所以很多时候,由于嫌麻烦,注释和文档就没写,导致维护代码的人相当的痛苦。这个苦同学们肯定都是体会过的!相当于给你个精密仪器要你维护还不给说明书。

    其实,打破上面那个段子描述的那个怪圈的一个很有效的手段就是统一编码风格。优秀的代码可以实现代码即注释,代码本身就可以非常清晰的体现出它的意图来,让别人可以很容易读懂。这就是所谓的可读性!


    命名

    计算机科学领域中最难的两件事是命名和缓存失效!命名并不简单,很复杂。好的名字可以见名知意,非常容易理解。之所以说命名难是因为命名的过程同时也是概念提取的过程!对问题建立模型,需要提取概念并赋予其“术语”。这个过程其实是“万里长征”中最难的一步。毕竟,设计也好,架构也罢,都有成熟的套路可以参考。唯独这个过程,是需要程序设计者自己进行充分的思考的创造性工作!

    以下是总结出来的一些命名经验:

    • 一个类是某物、某事、某人的抽象,是数据与行为的集合体。这恰好符合名词的定义,因此 类名 是一个名词!

    • 方法名 或者说 函数名 是某操作或者某过程的抽象,是一个动作。这恰好符合动词的定义,因此函数名通常是一个动词。

    • 变量名宁可长一些说明清楚用途也不要用a、b、c之类的无意义的名称,除非是循环计数器中用i、j、k等约定俗成的一些变量名。比如pageIndex和pageSize就要比取名成i和s好!取成这种和用混淆器混淆过后的代码一样的名称没有什么好处,如果算法比较复杂的话,过一段时间恐怕自己都会看不懂。

    • 变量名最好包含变量本身的业务含义。比如ListstudentList = new ArrayList<>();就比Listlist = new ArrayList<>();好很多。如果同一段代码里再出现一个List的话,这样就可以很方便的取名为teacherList或者teachers而不是list1和list2这样的毫无意义的名称!


    英文不好怎么办

    这个问题怎么说呢。。

    作为一名程序员吧,基础的英文还是要懂的。要不然发展也容易遇到天花板,学不好编程的。毕竟,最新的技术、解决方案、工具都是从国外传过来的。如果是解决一些基础性的问题,每天只做做CRUD,好像英文确实不怎么用得上。但是一旦遇到一些实质性问题,恐怕只能到英文网站上找喽!ㄟ(▔ ,▔)ㄏ 不要跟我说你编程可以不需要Stack Overflow。copying and pasting from stackoverflow 可是终极编程大法!o(∩_∩)o 这句话可是编程的真谛啊!(如果你看不懂这个梗那你有可能是伪程序员)

    其实,话说回来,实在不方便用英文的时候,我认为也可以用拼音命名。这个问题上可以务实一点,量力而行。但是,拼音和英语混用的做法就不太好了。最好别这样!逼格不高。


    注释

    怎么添加代码注释

    关于注释,我们需要解决的第一个问题是如何添加代码注释。

    对于Java、C#之类的语言,有专用的文档注释语法,很好处理。对于C/C++,则按约定的格式说明一下类和函数、代码片段的作用和意图即可,至少编译器会进行静态检查。在Python中,有更牛逼的文档字符串这样的语言级特性支持,看注释用help()很方便。不过对于Lua这样的弱类型解释型语言,注释就比较难处理了。这里以Lua为例给出一种注释的解决方案。

    借用Java语言文档注释的风格。

    文件注释,或者说类/模块注释。

    怎样写好代码——编程独家心法

    函数注释

    怎样写好代码——编程独家心法

    tips: Lua中可以通过metatable机制实现类和继承,这一点与Javascript通过原型机制来实现类和继承有点类似。

    注释里该写些什么

    我们首先来看个反例。

    怎样写好代码——编程独家心法

    首先这个方法名本身就取得不好,这个暂且不说,先说注释问题。这里的注释犯了几个错:

    1. 方法注释为“查询”,这简直就是废话!方法名已经告诉别人这是查询方法了,还在这个注释里写这两个字有什么意义呢?而且到底查询些什么这里也没说!

    2. 参数没有注释。没有描述每一个参数的意义以及取值范围等!

    3. 什么情况下会抛出PageIndexOutOfBoundsException没有描述清楚。

    4. “定义一个整型变量”这种垃圾注释就不要写了,这么简单的语句谁看不懂啊!如果要注释,也是写上这个变量的含义。

    这里我们先不考虑设计问题(分页索引号最好做成可以自己调整成合理值),下面再来看改善注释之后的代码。

    怎样写好代码——编程独家心法

    改完之后的注释有没有感觉信息更全很多!虽然说代码本身就是最好的注释,但是必要的注释还是得写上去,毕竟调用的时候别人没法猜测你的索引号到底从0还是从1开始。另外,如果函数内算法比较复杂,可以在代码块内注释,也可以在函数注释上直接写清楚这个函数内部的大概算法/逻辑。代码写出来就是给别人调用的,如果没有基本的注释信息,那么每次调用你的代码的时候,都得去看一下你的函数内具体逻辑才能知道怎么调用。这显然是非常低效的!

    命名与注释这两个基本方面没做好的话,会影响到整个团队的运作。也就是说,你封装的东西并没有给队友节省什么时间,别人用到你的代码的时候,又需要花上一些时间去读你的代码。如果团队里每个人都这样,那整个团队都会极其低效。我个人是非常不愿意与这种代码风格恶劣的人合作的。


    参考规范

    关于编码风格的问题,本文只说命名和注释这两个方面。关于缩进、空格、断行、空行等其他方面的问题,可以参考本节给出的参考规范。

    不同的企业会有不同的编码规范,所以这里没有办法给出一个符合所有公司的规范。不过制定自己团队的规范的时候,可以参考一些大企业的做法。以下是世界上最大的互联网公司谷歌的编码规范,同学们可以参考这个。

    • Google Java Style Guide

    • Google C++ Style Guide

    • Google Python Style Guide

    • Google HTML/CSS Style Guide

    • Google JavaScript Style Guide


    异常处理

    异常与返回值有什么不同

    在C语言中,我们的函数通常会返回一个整型值作为状态码用于通知客户端调用的结果。比如0表示成功,非0表示失败。并且可以通过不同的数值来表示不同原因导致的失败。然而在Java、C#、C++一类面向对象语言中,一般不会用返回值来表示状态。返回值一般用于表示返回的业务值,而异常用于通知客户端程序运行状态改变了。

    什么时候需要抛出异常

    关于这个问题,我想到了一句极其精炼的话:当函数无法完成宣称的任务的时候抛出异常!

    比如上面的那个日子,当listArticle方法由于种种原因无法查询出文章列表的时候,则抛出异常。

    抛出异常在这种场景下是非常有必要的,因为这样其他人调用你的代码时可以非常放心的去调用,只要调用了你的方法,就会返回文章列表。如果无法返回文章列表,则会抛出异常。完全不用在调用这个函数的时候去怀疑是否执行成功了。

    再来一句至理名言:

    宁愿终止程序也不要带错运行下去。

    也就是说,遇到错误的时候,宁愿抛出异常终止程序,也不要带着错运行下去。这是在掩耳盗铃!

    异常需要携带什么信息

    首先,异常的类型本身会带有异常种类信息。其次,异常的message属性可以带上更详细一些的信息。这里需要注意,千万不要像下面这么做。

    怎样写好代码——编程独家心法


    抛出异常了肯定是执行失败了呀!带上这种信息有什么用,不是带了一句废话嘛!

    应该是下面这样

    怎样写好代码——编程独家心法


    日志

    谈到日志,首先要搞清楚一个问题,日志是干嘛用的?

    用来记录运行时的错误信息啊!

    是啊。好像大家都知道日志是干什么用的,但是为什么写起代码来就会忘记初衷呢!

    来看看代码:

    怎样写好代码——编程独家心法

    这里的代码是什么意思呢?程序员们应该都能明白的!很显然,这位程序员是想借助这些标记来调试,想知道代码到底执行到哪一行了。但是,这里很明显地犯了两个错。

    1. 为什么是System.out.println("");而不是logger.debug("");?

    2. 为什么是1、2而不是一些更明确的文字信息呢?

    在这里,合理的方式是下面这样。

    怎样写好代码——编程独家心法

    我想给正在犯上面的错的同学提个醒:

    1. 使用日志框架,并用合适的级别输出日志非常重要。

    好多程序员从来不负责也不参与运维相关的工作,甚至是做了好几年的Web都从来没有自己发布过网站。所以压根没有后期维护的意识!

    如果没有这些日志,当项目上线之后,运维的背锅侠兄弟发现网站挂了之后只能直接重启,然后当作什么也没看到。因为没有排错的线索。

    2. 输出有效信息。

    不要去输出一些像1、2、3、成功、失败、hello这样的毫无意义的日志,要输出logger.debug("邮件发送任务成功入队。任务id:" + taskId);这样的有效信息。

    也许当时你调试的时候,在你看来这些奇怪的字符串是有意义的,但是在其他人看来,这些就是天书。运维的背锅侠会提刀过来砍你的!另外像"-------开始执行--------"这种对运行期间定位问题没有半点好处的日志就不要输出了!自己用可以,提交代码前一定要删掉。

    3. 日志中带上上下文信息。

    孤立的一句错误日志通常没有什么实际作用。比如上面的例子中,如果在找不到指定的模板文件的时候未将发送邮件时指定的模板文件名输出,那么排错的时候无法知道到底是少了哪个模板文件。

    4. 不要在日志中输出用户的敏感信息。

    千万不要在日志中输出像用户密码、邮件内容之类的涉及用户隐私的敏感信息,也不要去输出像验证码的值之类的敏感信息。


    参数校验

    在你对外公开的方法前先插入一些检查参数的代码,以确保方法被“正确的姿势”调用。比如:

    怎样写好代码——编程独家心法

    参数校验的作用

    如果在对外公开的重要方法开始的位置不插入校验参数的代码,有时恐怕方法需要运行到方法内部比较深的位置才会抛出一个异常来。而且那种情况下,抛出的异常可能就会有各种各样的了。比如空指针、除零异常等。

    这种情况下,很难一眼看出引发这个异常的根源是参数传错了。需要对你的代码进行一番调试才行!如果一开始就在代码的入口插入了校验参数的代码,那么调用的时候,一眼就能看出来是参数传错了导致了一个异常。这样其他程序员看到这个异常之后就会去看一下你的方法注释。他一看,哦!原来分页索引号是从1开始计数的,那么这个问题就会就此打住,给团队节省了时间。

    参数校验问题是会影响团队运行效率的一个很关键的因素。所以,请同学们重视起这个问题来。我们都是工程师,团队作战的,自己写代码快不叫快,整个团队快起来才叫真的快!用好断言,可以让你的代码更健壮。

    tips: Java中默认断言是不开启的,所以建议无视Java语言的断言,自己处理。

    什么时候需要进行参数校验

    我认为一个方法或者函数在满足以下条件时有必要进行参数校验:

    1. 方法或者函数是对外公开的,不是私有的。

    2. 参数有可能为空指针的时候。

    3. 参数的合理值无法通过方法名、参数名、参数类型一眼看出来的时候!比如上面那个pageIndex是从1开始计数的,但别人并不知道你是从1开始计数的。

    如果对每一方法都进行校验的话,其实挺麻烦的。程序员的时间是很宝贵的,没这么多闲工夫。不过在满足上面条件的情况下,最好还是校验一下。因为做了这个校验,你自己是会稍微浪费几分钟的时间,不过从团队整体来看,总的调试损耗的时间却降下来了。要记住方法/函数写出来就是给别人调用的!

    参数校验需要做到什么程度

    我有一个标准,就是把自己当成调用这些代码的那个人,把自己想象成有可能以任何“姿势”调用的菜鸟(实际上也有可能是不了解你的代码的大牛)。如果这个时候自己也有可能会犯某些错(比如没注意边界值,没注意是否可空),那么这个时候是必须要做校验的。对于一些已经在其他层做过处理不太可能有错误的值的情况,可以不做校验。比如你的UserService中有一个签名为public void register(User user)的方法,用于注册一个用户。这种情况下,可以只校验一下user参数是否为空,而不用对user的username、password属性进行校验(用户名密码长度是否合法等)。因为你在上一层控制器层模型绑定的时候已经做过非常严谨的校验了。当然,这里如果你有充足的时间,也可以校验一下。具体做到什么程度,还需要你根据情况去自己把握。


    后记

    编码规范就是用来约束别人的!

    o(∩_∩)o 哈哈!开玩笑的啦!

    其实很多时候,出于各种原因,如“项目周期紧”、“项目还在探索阶段可行性未知,先实现了再说”、“项目中其他代码已经这样了,破罐子破摔”等,最终导致的结果可能就是我们这些自称“有经验”的程序员自己也不一定能写出完全符合这些理念的代码来。或许是吧!

    ㄟ(▔ ,▔)ㄏ

    我承认,我也写过奇葩代码。

    但是,这好像并不是你这个作为未来优秀程序员的人不思进取的理由。

    小时候,老师教我们要诚实,但是老师自己也不见得能完全做到。我们可以因为这个鄙视他。

    长大后,体验过了生活中会有很多的无奈,不再鄙视“不诚实”的老师。甚至低下了高贵的头,自己也变得那般模样。

    未来,你还会教育你的后代“要诚实”吗?

    恐怕会! 因为,优秀的理念,不管结局如何,都应该去提倡!

    本文的观点仅代表现在的我,人是会成长的,明天的我或许又会有新的见解! 如果你不认同部分观点或者还有其他的优秀理念,可以给我留言。我们一起成长!


    展开全文
  • 编程题没有思路怎么办

    千次阅读 多人点赞 2019-05-08 23:46:41
    我是一名计算机专业大二的学生,我现在在做一系列c语言竞赛一些容易的题目,可是我发现我碰到的问题会很没有思路,不知道方向,看见网上的很多同学都能够解决,而我却不能,我不知道自己差到哪了,我不知道怎么办才...
  • 编程是什么——编程的初学者

    万次阅读 2007-04-16 09:27:00
    编程是什么?作者:陈跃峰出自:http://blog.csdn.net/mailbomb 对于初学者来说,编程是一件很神秘的工作... 编程就如文章!文章,需要学习一种语言,例如汉语、英语等,编程也需要学习一种语言,例如Java、C等。
  • 不会编程?试试我的方法

    千次阅读 2018-06-28 08:24:51
    试考虑下面这些场景: 一门计算机编程的课程结课了,考试也通过了。一段时间以后,回想这门课程所学的内容,可大脑一片空白,...会不由自主的抱怨代码真不是人干的,对编程产生抵触心里,更有甚者用“反正以后,...
  • 很多初学者常常为如何培养自己的编程能力以及如何出优秀的程序而困惑,即使是掌握多门计算机语言,或者某些信息学竞赛的获奖者,再或者是有过一定编程经验的人也都会在达到一定程度后,因为无法再向前走一步而苦恼...
  • 而同时有其它几个线程也想读取这个共享资源,但是由于互斥锁的排它性,所有其它线程都无法获取锁,也就无法读访问共享资源了,但是实际上多个线程同时读访问共享资源并不会导致问题。 在对数据的读写操作中,更多的...
  • 简介: 编程没有那么难,会做菜就会编程。 平时工作之余,很多蚂蚁技术同学也乐于分享技术心得和经验感悟,我们会不定期精选其中的优秀文章,分享给大家。 不少同学对于编程感到好奇,但一看到厚厚的教程就打退...
  • Java 网络编程

    万次阅读 多人点赞 2019-05-30 23:07:18
    首先理清一个概念:网络编程不等于网站编程,网络编程即使用套接字来达到进程间通信,现在一般称为TCP/IP编程。 计算机网络: 把分布在不同地理区域的计算机与专门的外部设备用通信线路互连成一个规模大,功能强的...
  • 编程如何入门?写写自己一点感受

    千次阅读 2016-04-14 19:23:09
    首先,我并不是稀罕你的积分,我自己几万积分都用不完,我只是想给想初学编程的人一点个人意见。 从你的描述来讲,你要自学JAVA?我并不清楚你目前的情况也与你提的问题有点不相符,这里简单唠嗑几句。如果你具有...
  • python编程快速上手——在开始

    千次阅读 2018-11-25 23:15:31
    但无奈是编程小白,一方面没有编程基础,一时不知从何下手;一方面不知道python的难度如何,会不会很难坚持,所以迟迟不敢动手。 直到某个机缘巧合,报了一个0基础的python课程,发现python对小白其实很友好,初学者...
  • 从零学编程1-一封情书

    万次阅读 多人点赞 2015-07-10 17:46:13
    一哥们闲暇之余想学编程,博主作为”会装系统的人”自然脱不了干系,这哥们名字叫鹰,初中文化,对于电脑的认识属于只会上网听歌看电影,...我怎么会告诉你Windows启动过程呢.(~ o ~)~开始我们的故事我:今天让我们一封电
  • 编程就是用计算机语言文章

    千次阅读 多人点赞 2012-05-16 11:48:01
    痛感很多学生,毕业了都不知道编程是怎么回事儿,畏编程如畏虎,视计算机语言如天书。  其实,计算机就是个执行程序的机器。  计算机之父冯·诺依曼提出了三个计算机思想,其中,核心的就是“存储程序控制”。...
  • 网络编程学习笔记--1.socket可读可条件

    千次阅读 多人点赞 2015-06-12 20:51:34
    socket可读可条件,经常做为面试题被问,因为它考察被面试者对网络编程的基础了解的是不是够深入。 要了解socket可读可条件,我们先了解几个概念: 1.接收缓存区低水位标记(用于读)和发送缓存区低水位标记...
  • 烂代码才是面向人民币编程的精髓

    千次阅读 热门讨论 2020-08-25 18:24:00
    但是,作为普通码农,我们日常工作的目标是面向人民币编程,而不是教科书式的面向对象编程。没有人民币,你都new不出一个对象。 会高质量代码和日常工作中如何代码其实是两回事,做位有追求的程序员,我们一定...
  • 别人的代码看起来容易,自己未必得好 古人云说起来容易,做起来难。就像我们看小说一样,我们看完小说都看得懂,里面的人物事件都搞得清清楚楚,可这不代表我们能得出来。对于我们这些码农来说,有些...
  • 成长轨迹:编程初学者

    千次阅读 2008-09-16 18:53:00
    本文面向的读者:刚接触计算机编程的朋友、学了一段时间的编程但是感觉仍然在门外排徊的朋友,通常这些朋友都没有足够编程的经验。本文假设读者是正真对计算机科学感兴趣而想要知其所以然的学,如果你学编程只是为了...
  • 给一些迷茫的程序员的编程进阶之道

    千次阅读 多人点赞 2018-11-06 14:22:27
    Cover ...因为好多我认识的,上了大学开始学编程,学C语言却到现在做不出来东西的人,他们也有想法,也有做自己的努力,但是被9年的义务以及应试教育的学习方式所影响,找不到编程真正的门道。 而我...
  • 女生适合学编程吗?

    万次阅读 多人点赞 2020-05-31 07:28:01
    假如非要把编程定义为体力劳动的话,我想巾帼不会让须眉的,毕竟你看男足有多差,女足就有多优秀。 最近一段时间,找我说自己迷茫的小伙伴非常多,有女生,当然也有男生。也就是说,迷茫对性别没有歧视。 小伙伴们之...
  • 别为了学编程而学编程

    万次阅读 多人点赞 2014-01-14 09:39:03
    请不要为了学编程而学编程!更别为了高工资而从事编程这个行当。我诚挚的建议是,我们应该把时间花在:(1)学习如何贪婪地做研究,并对我们周围的事物是如何工作的有个基本的理解;(2)学习如何有效地与别人沟通。...
  • 问题本质要不要用集成开发工具代码而言,是不是用记事本代码和编程本身厉害与否没有多大的关系,倒是有很多人建议在初学编程的时候,先以记事本学习为主,这种是有一定道理的,毕竟记事本代码空白一张对于初学...
  • 编程模式积累

    千次阅读 2011-06-16 16:54:00
    收集一些编程(c++)的时候应该变成“本能”的不用去想的习惯性的东西:new的时候就去delete,如果一些不用delete的东西(gc管理的东西),注明为什么不用deletefor里面用++i, ++it, ...对于图形编程来说,出现...
  • 100多种编程语言学什么?编程范型/编程范式

    千次阅读 多人点赞 2017-08-07 22:40:04
    回想一下, 其实编程语言基础到了很多, 大学时的 C, C++, C# , Java, 数据库SQL, 汇编。 毕业后的 Lua, Python , Golang, Ruby , javaScript, TypeScript 等 很多只
  • 博不易,如蒙厚爱,赏个关注,一键三连~~点赞+评论+收藏🤞🤞🤞,感谢您的支持~~
  • 有人认为编程是一份工作,也有人认为编程是一种爱好,甚至有人认为编程是此生追求。其实,编程就是编写程序。   首先,从“编”字分析,它既可以表示编写,也可以表示按一定的原则、规则或次序来组织或排列。...
  • C#网络编程(Socket编程

    千次阅读 多人点赞 2020-04-02 09:45:27
    一、Socket网络编程 1.Socket是什么? 在计算机通信领域,Socket被译为“套接字”。它是计算机之间进行通信的一种约定或一种方式。通过Socket这种约定可以接收到其他计算机的数据,也可以向其他计算机发送数据。 2....

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 862,011
精华内容 344,804
关键字:

编程不会写怎么办