百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术文章 > 正文

一个在阿里云打工的清华学渣分享:程序员编程如何入门、进阶?

ccwgpt 2024-11-27 12:23 26 浏览 0 评论

今天这篇文章, 分享一下讲讲我是如何入门和进阶编程的。也正好有读者朋友跟我咨询类似的问题,如何入门编程?有没有什么 c++ 小项目可以练手的?这篇文章也算是能回答这部分读者的疑问。

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

关于作者: 程序猿石头(ID: tangleithu),现任阿里巴巴技术专家,清华学渣,前大疆后端 Leader。 欢迎关注,交流和指导!

如何入门、提高兴趣?

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

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

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

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


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

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

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


积累专业知识,重视基础

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

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

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

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

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

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

现在的 网络资源 也很丰富,各种丰富的教程、文章、书籍等都可以直接白嫖,不过也正是因为现在各种资料满天飞,其中也不乏各种垃圾,学会甄别和如何快速检索到想要的也是一种能力。

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


积攒项目经验

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

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

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

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

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


仿QQ聊天系统

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

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

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

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


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

勤思考、多总结

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

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

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


总结

整体来讲,针对“入门进阶编程”这个话题,我谈了谈自己的理解,重点还是要重视基础,通过小项目正向激励自己多主动学习,然后做到勤思考,多总结。

如果你依然在编程的世界里迷茫,不知道自己的未来规划,亦或你想更好的提升你的编程能力,好好学习C/C++编程知识的话!那么你很幸运~

编程学习书籍:


编程学习视频:


分享(源码、项目实战视频、项目笔记,基础入门教程)

欢迎转行和学习编程的伙伴,利用更多的资料学习成长比自己琢磨更快哦!

C语言C++编程学习交流圈子,点击下方【了解更多】获取更多学习资料帮助你学习成长哦~

相关推荐

5 分钟搭建 Node.js 微服务原型(node 微服务架构)

微服务已成为在Node.js中构建可扩展且强大的云应用的主流方法。同时也存在一些门槛,其中一些难点需要你在以下方面做出决策:组织项目结构。将自定义服务连接到第三方服务(数据库,消息代理等)处理微服...

当前的前端,真的不配叫程序员吗?

今天看到一个比较令人震惊的帖子,说前端不配叫程序员,令我很吃鲸,是谁我就不说了,帖子出处是一个大龄程序员组里面的,想想也不觉得奇怪了,毕竟对于年龄比较大的程序员来说,前端起步比较晚,最开始就是一个切图...

聊聊asp.net中Web Api的使用(asp.net core web api教程)

扯淡随着app应用的崛起,后端服务开发的也越来越多,除了很多优秀的nodejs框架之外,微软当然也会在这个方面提供更便捷的开发方式。这是微软一贯的作风,如果从开发的便捷性来说的话微软是当之无愧的老大哥...

NodeJS中,listen Access:permission denied解决办法

错误描述:Win10系统,NodeJS程序。使用express框架开发的http服务器,启动时出现错误提示“listenAccess:permissiondenied"。错误原因:这是由于...

Hono — 下一代高性能web框架(天融信下一代vnp)

最近公司可能要有变革,要统计我们的技能。真的是很无语,但是有没有办法。哎,问豆包吧提起Hono大家可能很陌生,这是什么?但是我提到Expressjs、nodejs想必前端小伙伴很熟悉啊。那么Hon...

生活例子说明线程,简单明了(列举一个日常生活中的例子以程序的形式表示)

1.程序设计的目标在我看来单从程序的角度来看,一个好的程序的目标应该是性能与用户体验的平衡。当然一个程序是否能够满足用户的需求暂且不谈,这是业务层面的问题,我们仅仅讨论程序本身。围绕两点来展开,性能...

Node实战006:自定义模块的创建和使用详解

Node的应用是由模块组成的,每个文件的定义都是一个模块(module变量代表当前模块)并有自己的作用域。Node遵循commonjs的模块规范,用来隔离每个模块的作用域,使每一个模块在自身的命名空间...

Node.js基本内容和知识点(node.js的概念)

简单的说Node.js就是运行在服务端的JavaScript,起初段定位是后端开发语言,由于技术的不够成熟,一般小型项目会完全使用node.js作为后台支撑,大项目中,运行不够稳定,不会轻易使用...

干货 | 如何利用Node.js 构建分布式集群

引言在软件定义的世界里,企业通过Web应用和移动应用程序来提供大部分的服务,Node.js迅速成为时下最为流行的一个平台之一,就和它可以搭建响应速度快、易于扩展的web应用和移动应用有很大关系,并凭...

nodejs mongodb 实现简易留言板(node.js留言板)

一个朋友问了一下mongodb的一些操作问题我就做了下面这个简单的留言板给他做一个实例希望能帮助到他express的框架就不说了express的问题请移步nodejs之expressht...

nodejs mqtt 智能售货机系统物联网控制系统源码分享

智能售货机系统(Moleintelligentvendingmachinesystem)是一套物联网控制系统性的解决方案。主要涉及到的语言和库有c,c++,js,nodejs,vue.js,...

为什么 Node.js 这么火,而同样异步模式 Python 框架 Twisted 却十几年一直不温不火?

说nodejs只是靠营销的是否太天真了些?当初nodejs出来的时候各种BUG,我简单的测试其大文件传输都会出现各种问题。而同時期的其他阵营早就甩其几条街了。但是为什么却能一直不断发展壮大?...

2020年14个最有用的NodeJS库(node用什么数据库)

Express快速,简单,极简的节点Web框架对…有好处·易于处理多种类型的请求,例如GET,PUT,POST和DELETE请求·快速构建单页,多页和混合Web应用程序每周下载1100万Lice...

连载:2016年最好的JS框架和库(下)

继续上一期的介绍:Agility.jsAgility.js是专为JS服务的MVC库,你可以免费编写可再用和可维护的浏览器代码,Agility支持Js,样式(CSS)、内容(HTML)和行为(JS)。C...

awesome-nodejs 终极资源库:60K+星标的开发者宝藏

Node.js终极资源库:60K+星标的开发者宝藏引言在GitHub上,有一个备受瞩目的Node.js资源仓库,以其惊人的60.6k星标量和6kfork量,成为了Node.js开发者的必备参考。这个...

取消回复欢迎 发表评论: