想做程序员却不知从何下手?新手入门信息打包送你!

637 篇文章 35 订阅
210 篇文章 2 订阅

很多人都想了解自己是否适合编程?程序员的日常工作是什么?以及自己能借助编程完成什么事情?但他们往往因为缺乏一些相关信息(我愿称之为“初始”或“由此开始”文章),而无从入手。如果你也想了解编程这项工作是否适合自己?你需要做什么?你可能要做什么?编程能为我们带来什么?不能带来什么?以及从哪里着手开始?那么就请继续往下阅读。

TL;DR:选择一个你感兴趣的领域,学习其基础知识,开始创建真实、小型的项目。坚持不断地练习、练习…

免责声明:我写这篇文章的初衷是——如果我是一名新手,想要了解编程是否值得学习?如果值得,从哪里开始?要学什么?那么这篇文章就是为我量身定制的。作者个人的编程经验主要集中在开发web应用程序方面。

什么是编程?


编程是一个与机器沟通的过程,帮助我们向机器解释其在特定情况下应该做什么,不应该做什么。看起来就像是在用某种奇怪的语言和机器对话,不知为何机器也确实能听懂这门语言。而且,其他懂这门语言的人同样也可以读懂你给机器的指令。这样的语言有很多,有些程序员会说好几种。

小结:编程就是告诉机器该做什么。

我们可以做什么呢?


通过管理机器,我们可以创建出有趣、复杂的程序/系统,简化日常任务。或者,也可以让事情变得更有趣。所有的电子产品都是通过编程来帮助我们完成日常工作的。当有人走近时会自行点亮的自动灯泡?靠的就是编程!我们甚至可以在机器中编写魔法世界。比如网站、或者视频游戏。要想通过编程为生活带来便利,除了物理定律和技术进步,我们还需要借助想象力和其他技能。

此时此刻,有数十亿台机器正整装待发,准备接受指令。你的智能手机正等着你打开浏览器搜索“如何开始编程”;你的Wi-Fi路由器正等着处理这样的网络请求,它会询问互联网上的其他机器(也称为服务器)是否有相关的信息;这些服务器会处理请求并将信息发回。编程使所有这些机器能够共同完成一组特定的任务。

最终,会有数十亿台机器等着我们在云中给它们分派有用的工作!想象一下,在如此庞大数量的计算机基础上,我们可以建立什么样的系统。

下面,让我回归到最简单的问题上来。那么,作为一名程序员,我们能做什么呢?

  • 创建机器人。获取细节、进行组装、为机器人编程。这不仅涉及传统意义上的机器人,还涉及到所有可以进行编程的设备。比如,智能家居设备。这里有无限的想象空间及可能性。

  • 创建移动应用程序。类似于我们每天在智能手机上使用的那些App。

  • 创建web页面。复杂的应用程序或网站,比如个人博客,等等。这一点在下面会有详细介绍。

  • 等等…

程序员的工作是什么?


下面,我将介绍一下我所做的工作——网络应用程序相关工作。

谈谈“为什么”?

有些人或公司会对网页的创建和维护感兴趣,所有人都可以通过互联网访问这些网页。由于网页可以展示人们在现实世界中所做的业务,因此企业往往也会需要一个自己的业务网站。这样一来,搜索此类业务的人就可以看到他们的网页、阅读有用的信息,并决定是否要为该公司提供的服务付费。

有些企业会在网上销售产品。因此,他们需要一个能够处理客户请求、并销售产品的web网页。

由此看来,创建网页(如果你想的话,也可以创建应用程序)的市场需求是非常巨大的。

企业需要网站,好的!然后呢?

他们可能会联系那些能够帮忙创建网站的公司。我们称它们为数字代理机构。他们具备相关的专业知识和技术,企业需要网站,而此类机构则通过创建所需网站来盈利。

数字代理机构需要程序员来完成这些事情:他们知道该如何构建网站,并最终完成构建。总的来说,就这么简单。

还有一些其他类似的机构,它们通过出售程序员的工作时间(而不是网站)来盈利。其中一些按项目收费,包括程序员的工作、测试、收集需求、管理人员等等。

有的产品公司不出售员工的工作时间,它们依靠打造具有价值的产品来盈利。这些产品本身就已经是一项有利可图(也可能不是)的业务了。

程序员每天都做些什么?


业务侧管理会告诉开发人员他们下一步想要什么。工程师们会讨论计划——将如何实现业务的愿望,需要额外考虑哪些方面,等等。此后,我们就会得到一个“待办列表”,上面包含了某个特定项目的所有任务。每个工程师领一个任务,然后就可以开始工作了。

虽然上述表达简化了程序员每天需要面对的琐碎工作,但也反映了实际工作的大概流程。

任务


如果你是新手的话,一般都会做一些相对简单的任务。经验丰富的前辈同事也都希望你在遇到问题时能多向他们提问。随着你积累的经验越来越多,你会逐渐参与到更复杂的任务中去,相应地也会承担更多的责任。

根据项目的不同,程序员每天的任务也有很大的差异,但大多数任务中都会包含实际的编码工作。而你需要通过特定的方式来完成相应的工作。在处理web应用程序时,程序员分为以下几类:

前端开发人员。当我们打开一个网站时,第一眼看到的就是他们做的东西。那些漂亮的的块、文本、模态框、排列整齐的图像、页面上的动画——都是由他们负责完成的。他们最起码要了解HTML和CSS来设计静态页面。HTML是一种标记语言,可以告诉浏览器把东西放在哪里。例如,我想在网页顶部放置一个导航菜单,然后在下面放两张图片,并在最底部呈现文本“Sergiy的网站”。所有这些都可以转换成HTML,这样浏览器就可以准确地表达你的愿望了。

CSS是一种样式语言,能够赋予原始HTML元素好看的外观。它可以为文本或块设置颜色、大小、宽度、高度、等等。借助HTML和CSS,我们可以创建静态网站。所谓静态,指的是不需要额外逻辑操作,如处理按钮点击、在鼠标双击特定元素时做出反应,等等。

Web应用程序是具有额外逻辑和复杂性的web页面。在互联网上非常常见。我们买东西的网店就是一个web应用程序,因为它会处理:我们选择商品、将商品添加到购物车、打开模态框、询问收货地址,等等的逻辑。这类网站要求前端开发人员掌握一门编程语言,因为此类指令是无法通过HTML或CSS编写的。最常用的编程语言是Javascript。

总而言之,前端开发人员负责创建网站的视觉部分,同时,他们也会建立一个逻辑,描述视觉部分应该如何呈现。除此之外,网站还有其他部分吗?当然,还有后端(服务器)部分。

后端开发人员。他们负责编写逻辑,用于传输、验证、清理来自前端(可视化)部分的数据,将数据放入某个存储区,然后进行检索。服务器负责管理数据。如果前端(我们称之为FE)部分也能有逻辑的话,我们为什么还要有服务器呢? 因为FE受限于浏览器环境,所以我们无法在前端实现所有事情。

服务器端(后端,BE)开发人员负责会为FE或其他服务器编写API。API是什么?让我们看看维基百科是怎么说的:

应用程序编程接口(Application Programming Interface),实现两个应用程序相互通信的软件中介。

它就像人类的嘴巴和耳朵:我用嘴巴说——你用耳朵听,反之亦然。API就是这样一种信息交换的方式。

举一个更实际的例子,让我们回想一下线上购物网站。当我们想要从上面买东西时,FE会收集我们的数据,然后将其发送到服务器,验证数据是否有效,在数据库中检索我们的身份(是否为注册用户?是否有订阅?),然后与银行的服务器对话,如果有付款的话,银行服务器会处理付款。经过这一系列的检查和操作后,服务器会回答FE说:客户已经支付了产品,我们在网站上给他发一条感谢消息吧。

因此,FE通过提供的API与BE进行对话,它们交换信息,协同工作。有的程序员能够胜任FE和BE两部分的工作。

**全栈忍者。**他们具备处理FE和BE所需的一切技能。因此,他们可以独自完成web应用程序的创建。

还有一些移动开发者,我们将在下面的章节中进行介绍。

开始编写代码需要学习哪些东西


练习、练习、练习。

在了解了程序员的工作类型后,也许你已经有了自己想要选择的方向:FE、BE、移动应用程序。如果还没确定的话,也没关系。你要做的只是积累更多的经验,然后自然会找到自己的心之所向。

不管你选择的是哪条路,你都应该开始着手构建一个真正的项目。这里所说的项目并不是指亚马逊快递系统那种大型项目。你编写的任何代码都可以被视为是一个项目。你可以先了解一些基本的理论,比如目标编程语言知识、或者计算机科学的基础知识。如果你暂时还不具备基础知识的话也没关系,先着手去创造一些实际的事物吧。但是,在没有理论基础做支撑的话,我们可能会发现自己并不了解在构建时应该注意些什么。因此,我们应该尽量避免这种情况。

今天只要你给我的文章点赞,我私藏的网安学习资料一样免费共享给你们,来看看有哪些东西。

1.学习路线图

攻击和防守要学的东西也不少,具体要学的东西我都写在了上面的路线图,如果你能学完它们,你去就业和接私活完全没有问题。

2.视频教程

网上虽然也有很多的学习资源,但基本上都残缺不全的,这是我自己录的网安视频教程,上面路线图的每一个知识点,我都有配套的视频讲解。

内容涵盖了网络安全法学习、网络安全运营等保测评、渗透测试基础、漏洞详解、计算机基础知识等,都是网络安全入门必知必会的学习内容。

(都打包成一块的了,不能一一展开,总共300多集)

因篇幅有限,仅展示部分资料,需要点击下方链接即可前往获取

CSDN大礼包:《黑客&网络安全入门&进阶学习资源包》免费分享

3.技术文档和电子书

技术文档也是我自己整理的,包括我参加大型网安行动、CTF和挖SRC漏洞的经验和技术要点,电子书也有200多本,由于内容的敏感性,我就不一一展示了。

因篇幅有限,仅展示部分资料,需要点击下方链接即可前往获取

CSDN大礼包:《黑客&网络安全入门&进阶学习资源包》免费分享

4.工具包、面试题和源码

“工欲善其事必先利其器”我为大家总结出了最受欢迎的几十款款黑客工具。涉及范围主要集中在 信息收集、Android黑客工具、自动化工具、网络钓鱼等,感兴趣的同学不容错过。

还有我视频里讲的案例源码和对应的工具包,需要的话也可以拿走。

因篇幅有限,仅展示部分资料,需要点击下方链接即可前往获取

CSDN大礼包:《黑客&网络安全入门&进阶学习资源包》免费分享

最后就是我这几年整理的网安方面的面试题,如果你是要找网安方面的工作,它们绝对能帮你大忙。

这些题目都是大家在面试深信服、奇安信、腾讯或者其它大厂面试时经常遇到的,如果大家有好的题目或者好的见解欢迎分享。

参考解析:深信服官网、奇安信官网、Freebuf、csdn等

内容特点:条理清晰,含图像化表示更加易懂。

内容概要:包括 内网、操作系统、协议、渗透测试、安服、漏洞、注入、XSS、CSRF、SSRF、文件上传、文件下载、文件包含、XXE、逻辑漏洞、工具、SQLmap、NMAP、BP、MSF…

因篇幅有限,仅展示部分资料,需要点击下方链接即可前往获取

CSDN大礼包:《黑客&网络安全入门&进阶学习资源包》免费分享

  • 11
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值