众所周知在快速发展的信息时代 , 程序员是极具优势的工作 , 不仅很少被社会琐事烦扰,还能拥有极高报酬 。可是作为一个零基础的初学者该怎么成为一名合格的程序员呢?那么下面就让我分析一下初学者该怎么学习编程 。
编程语言
要当程序员,肯定是要从学习一门编程语言开始 。这是HelloGitHub给出的2022年5月编程语言排行榜:【初学者不知道怎么学编程?那么你一定要收藏这篇文章 程序员自学怎么入门】可以从这个排行榜中清楚地看到哪些是热门语言,我整理了一下对于各种语言的看法,但是具体怎么选择就看你自己的需求啦:
- Python:它很适合初学者,简单易学,并且和人工智能关系密切 。目前主要应用于web开发、应用开发、大数据、数据挖掘、科学计算、机器学习、人工智能、运维、自然语言处理等等 。
- Java:相对于C也是比较简单的语言 , 不过它的学习难度肯定比Python大,在这三个语言中难度中等,、目前主要应用于安卓和 IOS 的应用开发、视频游戏开发、桌面GUI、软件开发等等 。
- C:难度最大,主要应用在操作系统、嵌入式领域和服务器领域 。应用范围广,薪资待遇高 。C++ 是 C 语言的一个超集,既有指针又有对象使它成为最复杂的语言 。几乎所有现代编程语言都由C/C++发展而来 , 因此了解C/C++非常有利于快速掌握其他各类编程语言;
- JavaScript: JavaScript 是一种动态类型、弱类型、基于原型的直译式脚本语言 , 也是使用频率最高的给 HTML 网页增加动态功能的语言 。作为脚本语言,JavaScript 可立即运行而无需等待服务器响应 , 速度非常出色,并且它是动态类型语言,学习难度低 。
算法和数据结构
作为初学者,当你把编程语言学到一定程度后,接下来就是编程的通用技能了:基本的算法和数据结构 。你可能会说,你以后想找的工作很简单,和算法这一块儿关系并不大,有基本的知识就够了;但要知道的是,这东西就好比地基,你之后的一切工作都将在这基础上开展,如果不会以后进入工作了将花费大量的时间精力和金钱在上面 。
在我看来 , 这些是必须要掌握的:
10个算法:二分查找、递归、排序、搜索、哈希算法、分治算法、回溯算法、贪心算法、动态规划、字符串匹配算法 。
10个数据结构:栈、数组、链表、队列、堆、跳表、图、Trie 树、散列表、二叉树;
千万不要小瞧这它们,每一个展开了去细学,怎么都得要一年半载;想想办法把这些吃透,起码以后再看见这些问题不用翻书,然后你就可以进一步向更深的层次进发,去思考这些问题:
编程框架是如何运转起来的?
主流的编程框架和设计模式存在怎样的共通模式呢?
List、Hash、key各自的应用场景和共通之处?
......
每一个问题都是一座大山,当你想明白并且拿出可行的解决方案,你的技术相比以往就会提升一个Level 。
实操
“实践出真知” , 这话放在编程的学习中,显得尤为合适 。网上有一句比较流行的话 , “我的眼睛和大脑都会了,但是手不会 。”学习编程的过程中也容易出现这些问题;可能你通过看书、看视频突然get到了某一个点,但是并没有去实操 , 在不久后重新遇到相关的问题,全部忘记也是正常的 。
所以,寻找实操性较高的个人项目,提升阅读和编译速度 , 是学习编程的不二之选 。GitHub上有几个有趣的项目,可以参考一下:
- lllyasviel/style2paints 这是一个能够根据用户自定义的颜色给线稿上色的工具 。在这里,以ABCD这种格式呈现一些结果 。你只需要上传你的的草图,选择一种样式,然后放置光源 。就可以实现AI上色当结果在没有任何人为颜色校正的情况下立即获得时 , 我们将此结果视为全自动结果 。当结果需要一些颜色校正时,人类可以很容易地在画布上放置一些颜色提示,以指导AI着色过程 。
- seq2seq-couplet 这是一个使用 seq2seq 模型来进行对联(对对联)的项目 。
- MisterBooo/LeetCodeAnimation 为了帮助大家更好的入门学习算法 , 经过半年的积累,创作者给大家整理了《剑指 Offer》系列的四十道题目,都是算法面试的高频题目,每一道题目都提供详细的分析、精美的配图、易于理解的动画视频,适合那些第一次刷题的同学 , 当然,也适合重复刷题的老手再次学习巩固基础 。