软件编程入门自学教程,代码编程入门先学什么

软件编程入门自学教程,代码编程入门先学什么

作者 | 码农唐磊

来源 | 程序猿石头(ID:tangleithu)

软件编程入门自学教程,代码编程入门先学什么

背景

在之前的这篇文章中,我谈了谈读本科的时候都学了哪些计算机专业课和推荐了一些经典的技术书籍,然后推文封面中的这张图引起了不少读者的注意。

软件编程入门自学教程,代码编程入门先学什么

图:石头哥课程作业 Demo

这其实是我当时的课程大作业的 Demo,严格意义上讲其实是几个课程的大作业。

今天这篇文章, 石头哥就接着这个话题讲讲我是如何入门和进阶编程的。也正好有读者朋友跟我咨询类似的问题,如何入门编程?有没有什么 Java 小项目可以练手的?这篇文章也算是能回答这部分读者的疑问。

下面,我将从以下这几个方面,谈谈自己的理解:

软件编程入门自学教程,代码编程入门先学什么软件编程入门自学教程,代码编程入门先学什么

如何入门、提高兴趣?

首先,“编程”的门槛相对较低,你看外面的培训机构早就从成年人延伸到越来越多的中小学生,甚至“少儿编程”了。既然“少儿”都学,难道你还不能学么?

但整体来讲学习“编程”,特别是到后面进阶(例如数据结构和算法),是相对比较枯燥的。所以就要想办法来提高自己的兴趣,或者说通过一步步学习来获得“成就感”反向刺激自己主动多学习。

关于入门的编程语言,我觉得不要太局限,不要太限制自己非得用某个语言入门,可以根据自己的实际情况来选择。不过整体来讲,如果之前完全是小白,我推荐比如用 Python 等先对编程语言有个大体的了解。

掌握了一门编程语言后,其他语言都是触类旁通的,无外乎就是“顺序、选择、循环”,不同编程语言的具体语法不一样而已。然后对于常规的面向过程的 C 语言,或者面向对象的 Java 等也建议都了解和学习一下。

记得我当初上大学的时候接触的第一门编程语言就是“VB”,我想学校安排的课程先后顺序还是很有道理的。用 VB,在 VisualStudio 上简单用鼠标拖一拖就能出来一个有用户界面、可交互的像模像样的“软件”,这对于上面提到的用“成就感”来激励自己主动多学习还是很有效果的。

比如当初课程大作业就是写一个计算器,通过短时间的入门学习,就能写一个这样的计算器软件出来,确实还是颇有成就感。这其实就跟现在的少儿编程一个道理,用一些可视化的编程平台让小朋友通过简单的拖拽,加上少部分逻辑就能出一个非常“炫丽”的效果,就跟玩游戏一样,这当然能激发足够的兴趣。

再比如刚开始入门就选择 C 语言或者汇编,这对于提高兴趣、想获得“成就感”来起到激励作用就大打折扣了。我记得当初课程学习 C 语言时,最后作业都只有在黑屏控制台下,虽然也能完成差不多的功能,但从“可观赏性”来讲就差太多了。当然,我不是说 C 语言不重要哦~ C 语言还是很经典的,入门一门语言后,建议都认真学学。

小结一下,入门编程,就是先学一门比较好上手的编程语言,通过尝试写一些有用户界面(比如 HTML+JS)的小项目、小 Demo 来激励自己。

软件编程入门自学教程,代码编程入门先学什么

积累专业知识,重视基础

有了一两门编程语言作为基础后,这个环节就是真正体现编程水平的时候,也是最能和其他人拉开差距的部分。

在阿里社招面试的过程中也是非常看重基础的,过去项目不牛 X 没关系,基础知识一定得杂实。

石头在参与社招面试过程中,领导也特别交代,除了一般的沟通交流外一定要看基础,基础好,解决问题时有逻辑、有条理,简单的代码题目能写个八九不离十,基本上一面二面也就过了。

具体相关的计算机专业课程无外乎就是那么几门:《C/C++程序设计基础》、《数据结构》、《算法分析和设计》、《汇编语言程序设计》、《计算机网络》、《操作系统》、《数据库系统》、《编译原理》等等。

从中可看出,正如我之前所说,计算机相关的专业基础知识和就业联系得很紧密。如果是在校生,就一定不要浪费时间、抓住这些专业课程的学习机会。不然毕业后从事了编程这个行业,也还是会回到这些基础知识上,正所谓“欠下的债,迟早都是要还的”。

况且,学校的课程学得好,还能帮助获得奖学金、保研、找工作等等,一举多得,简直完美。

再次强调一下,程序猿真的需要重视基础。

现在的网络资源也很丰富,各种丰富的教程、文章、书籍等都可以直接白嫖,比如肝王 cxuan 总,小林的图解系列等等都很不错。比起我们当年,真是要好太多了。

不过也正是因为现在各种资料满天飞,其中也不乏各种垃圾,学会甄别和如何快速检索到想要的也是一种能力。感兴趣的同学可以私信我,我把我这边收藏的觉得质量还不错的学习资料分享给你。

当然,还有一点也很重要,很多情况下,我们去屯了不少学习资料,然而真正去阅读学习的又占多少?我不知道你怎么样,反正我确实是屯了不少,但屯了后去认真看的,确实少。

软件编程入门自学教程,代码编程入门先学什么

积攒项目经验

前面提到的入门也好,基础知识也好,其实最终是为“项目”、为“产品”服务的。在校生或者刚入门没有“项目”,没有“产品”怎么办,那就自己制造机会。

为什么要做项目呢,因为一个完整的项目是可以比较系统的,是一个可以把理论付诸实践的机会,从某种程度上讲,做一个或大或小的项目,也能起到跟前文所说的正向激励的作用。

例如我在本科期间,就做了几个小项目,现在列举两个典型供大家参考。

例如,学完 Java 编程、数据库等课程后,是不是也可以自己来搞个小聊天工具呢?再比如,学了 Java Web 开发,是不是可以搞个类似的图书管理系统、校园 SNS 之类(当初人人网很?啊)的玩玩?

下面就来看看我上学期间搞的两个小项目吧,供参考。

仿QQ聊天系统

这个就能对自己的学习有一个阶段性、系统性的总结,在当初看来确实还是蛮有成就感的。其实做一个,各种场合都能用,比如课程 A 的大作业可以用,稍微改吧改吧,课程 B 的也能接着用,一举多得。用心做,不仅自己知识点 get 到了,各个课程作业又能得高分。

这个系统主要是仿照QQ聊天软件,其功能模块包括:私聊、群聊、语音聊天、视频聊天,用到的主要技术点:C/S 体系结构,Oracle数据库、socket、多线程、swing等等。

当初做完了语音、视频聊天,还是很让人眼前一亮的。当然这种小项目当初我们是几个小伙伴一起合作完成的,一般课程作业是需要在规定的时间内完成的,就可以找几个小伙伴一起学习、互相促进和成长。

你当然也可以独立完成,如果也想找小伙伴一起,也可以加入”程序猿石头”的读者交流群,找志同道合的小伙伴一起“刷项目”,共同成长、共同进步。

软件编程入门自学教程,代码编程入门先学什么

积攒项目经验-传送文件

看截图,是不是还像模像样的。用这个小项目来入门练手,还真是个不错的选择。有足够的挑战,同时也有足够的趣味性和成就感。

基于中国移动飞信的校园资讯网

这个项目是基于WEB网络的校园资讯网,项目分析了飞信协议(其实就是利用网络资源改写一个web飞信),利用飞信功能可以进行个人日程提醒、订阅天气、好友生日提醒、课程提醒等等;(时光荏苒,飞信?用过的说明你也“老”了)

主要技术点:项目采用Struts+Hibernate框架开发,httpclient+htmlparser分析教务管理系统流程获取有用信息,利用webservices获得谷歌天气信息,将这些有用信息通过飞信发送给用户。

软件编程入门自学教程,代码编程入门先学什么

登录飞信-官方飞信客户端被 T 出

这个小项目也是源于生活。当初当了个小班长,每期末都要统计成绩,计算综合测评等,想想,何不写个爬虫来爬呢。有时候,程序猿的“懒”就是为了提高效率。

软件编程入门自学教程,代码编程入门先学什么

爬虫-爬取课表和成绩

类似的小项目可以达到阶段性总结的目的,同时自己的积累和总结也是自己的一笔财富,且无形之中可以让自己将来也获益。

举个?例子,比如我上面的项目总结和积累,可以帮助我后面获取更多的机会,例如当初我搞了个小团队,参与了大学生创新性实验项目,获得了国家 2 万元的项目研究资助,还发了小论文(虽然现在看来很水),后期在简历中也有加分。比如在我大三的时候,就获得了腾讯的实习机会,参与了真正的商业产品的开发。再后来,前面的积累又帮助我全奖保研到清华读研(清华录取外校的学硕名额是相当少的)。

软件编程入门自学教程,代码编程入门先学什么

勤思考、多总结

这个其实不必多说。不管那个行当,做到 “勤思考、多总结” 百利无一害。

例如,下图是我在读本科和硕士期间相关课程的学习材料,包括老师课件,课程作业和学习笔记和复习资料等,这种平日积累总结很有效,对于临近期末考试也能做到不慌不乱,还是很有作用的。

软件编程入门自学教程,代码编程入门先学什么

课程笔记总结

哪怕正式工作之后,写周报、月报等也都是阶段性的总结,再比如晋升答辩等等都是需要你日常的思考积累和总结的。反正将来都会用得着,何不现在就开始锻炼呢。

在日常学习和工作之中,我们看到一个问题的时候,要学会思考背后的道理,比如在接到某个需求的时候,思考这个需求最终是要解决具体什么问题,有没有更好的解决方案?在阅读某段代码,思考原作者为什么要这么设计?我有更好的方案么?

就比如看到这段代码,你能否多思考一下其中的奥秘?

publicstaticbooleanisEqual(byte[] digesta, byte[] digestb){ if(digesta == digestb) returntrue; if(digesta == || digestb == ) { returnfalse; } if(digesta.length != digestb.length) { returnfalse; } intresult = 0; for(inti = 0; i < digesta.length; i++) { result |= digesta[i] ^ digestb[i]; } returnresult == 0;}

上述代码中,比较两个字符串是否相等,按道理,其实中间某位不相等就可以直接返回了,但为啥要遍历完了再返回,这么做的目的是什么?在问了为什么之后,你可能就会知道,原来这么做是为了防止计时攻击。

声明:本文内容整理自网络,观点仅代表原作者本人,投稿号仅提供信息发布服务。如有侵权,请联系管理员。

投稿号的头像投稿号注册会员
上一篇 2022年9月29日
下一篇 2022年9月29日

热点推荐

  • “中考疑被偷分”事件将鉴定笔迹 究竟是怎么一回事

    中考差距悬疑——山东德州孙同学被“偷分”一事透视。现如今,中考已不再是单纯的一场考试,而是成了衡量学生学业能力与进入更高学府的关键阶梯。考试成绩既是对学生整个初中学习阶段的最终总结,也是对其刻苦努力的最终回报。然而,当成绩出现出乎…

    2023年7月22日
    560
  • 暗香歌词完整版(暗香歌词)

    本文主要讲的是暗香歌词,以及和暗香歌词完整版相关的知识,如果觉得本文对您有所帮助,不要忘了将本文分享给朋友。 《暗香》的歌词? 《暗香》是沙宝亮演唱的一首歌曲,由陈涛填词,三宝作曲。这首歌曲是电视剧《金粉世家》的主题歌。2004年…

    2023年4月3日
    790
  • 半次元正式停服 至今已运营了九年

    官方公告显示,半次元因公司业务发展的调整,将于 今天(2023年7月12日) 起停止运营和服务,届时APP和官方网站将无法登录和访问。 半次元是国内ACG爱好者社区,自2014年创立以来已运营了九年,聚集了Coser、绘师、写手等…

    2023年7月12日
    620
  • 怎么开淘宝店之淘宝网店推广的10个方法(开淘宝网店怎么推广)

    开淘宝网店怎么推广(怎么开淘宝店之淘宝网店推广的10个方法) 有些经验的卖家可能很清楚,开一个网店说起来很容易,在淘宝注册一个账号,上传几个商品,一家网店就算是开起来了.可是要将商品卖出去,似乎就没有那么容易了.如何获取更多的客流…

    2022年10月11日
    1020
  • 拥有绝世好人缘,一起“加入”吴京的影视朋友圈

    1905电影网专稿吴京很忙。他主演的电影《流浪地球2》仍在热映,其客串的影片《中国乒乓之绝地反击》(下文简称《中国乒乓》)也即将上映。 除了以演员身份参与之外,其创立的登峰国际文化传播有限公司,或以主出品,或以联合出品的身份,参与…

    2023年5月1日 热点
    710
  • 《中华帝国史》第二章 肇基中夏

      第二章肇基中夏   新石器时代中晚期,中华人种不仅遍及我国南北各地,而且已经遍布整个环太平洋地区。由于沧海桑田的变迁,后世被称为“中原”的黄河中下游大平原逐渐形成,这为大中华核心力量的崛起提供了异常优越的温床。为了保卫中华人种…

    2023年2月1日
    830
  • 卖给缅北8千万个手机号?吉林电信回应 请大家不信谣不传谣

    8月23日,吉林电信发布了一则辟谣通告,驳斥了一些自媒体平台公开散布的谣言,称:“吉林电信向缅北诈骗集团提供8000多万个手机号码”。这些言论都是不实的,严重损害了吉林电信的声誉和利益。吉林电信表示将依法维护公司权益,通过法律途径…

    2023年8月24日
    570
  • 母亲因新冠去世,纽约官员愤怒指责特朗普:他手上沾着血

    新浪新闻报道,CNN当地时间6日称,纽约一位名为斯金格的审计官员对联邦政府应对疫情的反应感到愤怒。斯金格的母亲因为新冠去世,他愤怒指责特朗普:特朗普手上沾着鲜血,沾着我母亲的血,他派来医疗船到纽约,但是没有人能去。 此前报道,海军…

    2023年2月4日
    840
  • 介绍互联网发展的6大趋势(互联网发展趋势有哪些)

    1.新技术 下一代网络建设带动5G产业崛起,工业互联网促进制造业集成创新,大数据、人工智能将加速推进产业深度融合,技术创新推动金融信用体系趋于完善。 2.新动能 产业互联网推动新旧动能加速转换,“互联网+先进制造业”成为振兴实体经…

    2022年10月21日
    990
  • 我的世界随机传送指令代码,命令方块随机传送的指令

    /kill @e[type = evocation_illager] 清除卫道士 /gamemode 0 生存 /gamemode 1 创造 /gamemode 2 冒险 /gamemode 3 旁观 (旧版本不能使用) /gam…

    2022年10月3日 热点
    1420