[编程开发] 无任何编程基础的人,该怎么入门编程?

[复制链接]
踏雪的剑 发表于 2024-1-25 17:51:43|来自:南非 | 显示全部楼层 |阅读模式
想学习编程.
谢谢各位知友的回答,但小弟是一名初中生,有些答案对于初中生不太适用。(当然写给高中生大学生 关于如何系统的学习编程 也很好 感谢各位的耐心回答)
之前的问题为:无任何编程基础的人,该怎么系统地学习编程
全部回复7 显示全部楼层
沈浪 发表于 2024-1-25 17:52:06|来自:南非 | 显示全部楼层
无任何基础的人,该怎么入门编程?
答案是:开始编 (-:
我是计算机科学与技术专业本科,软件工程硕士,做过 3 年大学专职老师,教授过 C++ 面向对象程序设计,网络工程与管理这两门计算机学科的核心课。我想开始学编程最重要的就是 —— 开始。无论什么语言,无论什么目的,开始之后逐步选择自己的路径,塑造自己的编程能力,甚至是把编程当成职业。我有几个观点和大家分享。
意义:

编程最有价值的地方就是:看到机器做了一些有用的事儿,并让我们取得了伟大胜利。
如果你是初中生、高中生、大学生,我想你可能不会很快的体会计算机能帮你取得什么伟大胜利,但赢取一个个的小胜利是能保持学习动力的关键。
类别:




我在 2022 年开年大课上分享的内容 - 编程能做什么?

你是哪类?________________
你想学编程干嘛用?________________
回答这两个问题,可以帮助你确定学编程的宏观目标,然后才好选择书籍、路径、积累成就的方法。
非职业的“入门”:




以解决问题为导向 —— 及时、场景、沟通

如果你不准备以编程为职业,那么我的观点是,你学编程的姿势要对 —— 用数据分析或者是数据科学的姿势学习编程。我解释一下。
一般姿势:学编程都是从 “Hello World” 开始学在屏幕上打印你想要的信息,然后是如何通过键盘给程序输入信息,这样你就知道了如何与计算机进行交互。然后就开始进入越来越烧脑的学习路径,变量、循环、条件、函数……通常在学习函数的时候,从入门到放弃就会成为现实。
数据姿势:开始也要学 “Hello World”,然后学习编程的逻辑不是上面的烧脑路径,而是如何在计算机里组织和操作越来越复杂的数据的学习路径。基于数据的学习路径,能够让你积累一个个的小胜利,因为数据最能和现实生活联系起来,无论你是什么专业、什么背景,处理数据在今天已经成为刚需了。数字化是未来唯一的确定性,大家都听过这句话吧。那么学编程的路径就会是:单一变量的数据,只能存储一个数值、一个字符串;一组数据,例如数组、列表,可以存储一个数学上的数列,存储一组字符串等等;一个数据字典,由索引和数值的对应关系组成的数据类型,例如 A 对应足球,B 对应篮球;一个数据框,由行、列结构组成的数据类型,例如电子表格、关系型数据库里的数据等等;非结构化的对象数据,一个数据对象可以有很多属性,总和运用各种数据类型来组装对象的属性,对现实世界的事物进行抽象。这些基本的数据类型学习完成以后,再开始学习数据的列计算(这时会使用到循环)、面向统计的科学计算(各种开源的工具包)、把数据可视化(美不胜收的成就感)。如果你还能坚持,还有不断的成就感,就开始研究机器学习吧,训练模型,结合你的专业,就进入人工智能的门会水到渠成。
自动化姿势:把重复的事情自动化,让无聊变有趣,其实本质上也是数据驱动的自动化,你只要能用数据驱动计算机干活,执行特定的指令,自动化很容易实现,因为操作 Excel、Word、网页爬虫这些特定的指令有非常多的开源库可以给你赋能。
用数据姿势学编程,能让你快速积累成就感,而不像传统学习编程的方式死磕循环、递归、条件、函数这些抽象难理解的东西。



怎么选语言?

作为初学者,选这些语言都可以,但我还是强烈建议选择 Python !原因如下。



Python 的工具箱最适合数据姿势

上面这张图,你可以发现,学习 Python 可以让你连接所有类型的数据源、编写代码、运行代码、为大数据编写代码、实现算法、展示可视化数据结果、和世界分享你的数据产品,任何一门其他的语言都不能同事帮你完成这些事情。
职业的“入门”:

职业的入门要复杂很多,因为你以后要靠编程养活自己,那我劝你在编程这件事情上,终身学习!



职业的路径

我不想冒犯任何人,但职业的编程人,都会从 Coder 开始,然后成为 Engineer。国家在工程教育领域做了非常大的投入,一名工程师的长期职业发展目标是:运用原理来解决复杂问题,而且要考虑人文、可持续发展、成本效率。所以如果你要是想把编程作为职业,我的建议是,大量编程和调试训练(成为合格的 Coder),数据结构与算法训练(成为合格的 Programmer),各种设备端的交互体验(PC、手机、各种盒子等等的人机交互设计,成为合格的开发者),综合运用计算机科学解决问题(需求、汇报、预算、成本、未来可能还要考虑碳排放问题,成为合格的工程师)。
如果你想开发芯片上的软件、开发一门新的编程语言、开发一个操作系统,你必须是工程师!
职业的编程人员有很多种类,我这里列举了 15 种。



以编程为职业有很宽阔的职业选择

我觉得未来最酷的职业软件工程师 —— 可能是 “大前端” ,这个方向的需求量非常大,在这个 Web 2.0 向 Web 3.0 迁移的元宇宙高潮期,这个方向肯定有前途。



大前端都能干啥

未来最千金难求的职业软件工程师 —— 一定是 AI 算法工程师、数据科学家,需求量不会像 Web 这么大,人类的伟大胜利的担子会在他们的身上 (-;



了不起的数据科学

编程有 18 层 “地狱”,规划好自己的学习路径,我的建议是你给自己用下面这张表规划自己的学习。


这张图是我在 2014 年给自己画的,橘黄色的是我明白点儿会用的,粗体的是我比较熟悉的,黑色的是我想积累的。
如果这些没有吓到你,希望成为职业的软件工程师,那么从 13 层和 15 层开始入手吧,13 层选择 C++,15 层选择 HTML,这是我的建议。
推荐:



可以买一本我的书看看,不学编程也可以涉猎一些编程思维,像计算机科学家一样去思考。就像乔布斯说过的,学习编程是为了学习如何去思考。计算思维能够帮助我们处理复杂的问题,它有四个基石:

  • 分解思维:
    将复杂的问题拆解成更简单、容易解决的小问题。
  • 模式识别:
    找出不同问题的共同点,从而举一反三。
  • 抽象化:
    只关注关键信息,忽略不相关的细节,找出问题的核心。
  • 算法:
    制订分步解决问题的方案,或解决问题需要遵循的规则。
下一步:

“非职业“ 的选手们:安装 Anaconda,开始编程!你可以来开课吧参加 python 趣味挑战赛,练习编程就像玩密室逃脱。
”职业“ 的选手们:买一台 Macbook Pro,开始编程!围绕数据结构和算法积累你的专业纵深。
结论:

今天我们讨论了怎么入门编程,我想任何人都不会太老以至于无法再学习编程了,无论你有多老、多年轻。非职业的编程者 —— 从 Python 开始,职业的编程者 —— 从 C++ 和 HTML 开始。选对自己的学习姿势也很重要,非职业的编程者 —— 用数据的姿势学编程,职业的编程者 —— 用大量编程训练自己。
祝你好运!评论?
Ryun 发表于 2024-1-25 17:52:31|来自:南非 | 显示全部楼层
我是科班毕业,但学校里什么都没教会,编程都是我自学的
现在工作近十年,辗转几个大厂,也算活出来个模样,这里把我的经验告诉你
学好计算机只需要两步:
第一:选一门语言学习
其次:学好四大基础课
一、语言的选择

目前而言,linux C++服务端开发、Java后端开发、web前端开发,就业岗位都很多,都是不错的方向。
我曾经整理过linux C++服务端的学习路线图,这里分享给大家
这里需要注意的是,这条路线图是Linux C++从入门到架构师的完整路径,如果单纯找工作,学完第三步:征服linux就已经超过了90%的毕业生。
包括计算机基础(组成原理、计算机网络、操作系统、编译原理、数据结构、算法、设计模式)、开发环境及编译器的使用、第一阶段(C++入门)、第二阶段(C++进阶)、第三阶段(征服Linux)、第四阶段(高级进阶)、第五阶段(架构师)及近五十个优秀开源工程汇总、及程序员所需具备的软技能。


这份路线图是绝对是每个C++工程师的必备经典,大家可以根据自己的能力水平,根据路线图去看自己还需要补齐哪些知识,并且向高级进阶时,又需要哪些知识点。
这份路线图,是我跟两个大厂朋友共同完成的,为了不给大家造成误导,连续勘校了一个月。大家帮我点个赞吧。
我把所有子主题、子子主题都缩了进去,再给大家看一下详细主题


需要高清无水印思维导图源文件的小伙伴,可以点击这里获取:
linux C++技术路图及推荐学习资料下载初学,一定要跟着视频学,可以减轻很大的负担,也可以走很多的弯路。

视频强推侯捷老师的C++面向对象程序设计,我当前入门C++就是跟着侯老师学的,讲的非常仔细,现在候老师在B站上开源他的讲课视频,大家可以去看:


候捷-C++面向对象高级开发(上)_哔哩哔哩_bilibili候捷-C++面向对象高级开发(下)_哔哩哔哩_bilibili但候老师的课,一如即往的每节都非常长,短的也要三十分钟……着实很难坚持。
对于定不住的同学,可以看小甲鱼的《C++快速入门》,每个视频十分钟左右,共49集,看完以后,再看候老师的课会轻松很多。


【C++语法】《C++快速入门》_哔哩哔哩_bilibili配置书籍首推《C++ Primer》
本书是久负盛名的C++经典教程,其内容是C++大师Stanley B. Lippman丰富的实践经验和C++标准委员会原负责人Josée Lajoie对C++标准深入理解的完美结合,已经帮助全球无数程序员学会了C++。


《Effective C++:改善程序与设计的55个具体做法》(中文版)
一共组织55个准则,每一条准则描述一个编写出更好的C++的方式。每一个条款的背后都有具体范例支撑,教你怎样才能写出优雅的C++代码。这里也是很多关于C++方面面试问题的出处。


这些内容看完,C++已经入门了,接下来就进阶的内容了。
C++进阶
有关STL标准库的使用是比较难的,同样推荐大家以视频入手。
再次感谢侯捷老师,他录制了46集的系列视频讲解了《C++ STL标准库和 C++ 泛型编程》


【高清完整版】侯捷-C++ STL标准库和 C++ 泛型编程_哔哩哔哩_bilibili配置书籍推荐《C++ 标准程序库》
这本书给我感觉就是既适合初期入门,又适合当字典用,因为里面的内容比较多,好多第一次记不住。
所以也可以大致看一遍,以后用时再具体记,这样根据实际去学习我个人觉得效果会更好。


《STL源码剖析》
学习编程的人都知道,阅读、剖析名家代码乃是提高水平的捷径。源码之前,了无秘密。大师们的缜密思维、经验结晶、技术思路、独到风格,都原原本本体现在源码之中。在你仔细推敲之中,迷惑不解之时,恍然大悟之际,你的经验、思维、视野、知识乃至技术品位都会获得快速的成长。


这些内容学完以后,基本上具有了工作两年的水平,别说校招,就是社招找工作都是非常简单的。

为了方便大家,我把以上推荐的所有书籍、工程文件、开源工程地址,都已经整理好了,需要的同学可以去下载。
linux C++技术路图及推荐学习资料下载接下来是计算机四大基础课的学习。


  • 数据结构与算法,
  • 计算机操作系统,
  • 计算机网络,
  • 计算机组成原理。
这几门科目,是考研408科目,也是校招必考内容。无论是新入校园的萌新,还是工作多年的老鸟。都离不开这几门知识点。
有些同学上学时候不好好学,到进阶的时候,就出现问题了
出来混总是需要还的!

无论学习什么,最关键是要找一个风评还不错的课程,就从头到尾学一遍,千万别东学一点,西来一些的。这样的效果肯定不会太好。
这里给大家推荐一些我看过的,比较认可的课程,跟着学即可。
数据结构与算法

关于数据结构,我想说的是,它是这四大件中最简单、最基础的一个。离开了数据结构,几乎任何的程序都会失效,所以在讨论数据结构的时候,常常要把算法也连带着说一说。
要单纯地掌握常见的数据结构,就如同拆解一个个精妙的仪器件一样有趣和简单。正因为数据结构这个东西在程序中的作用,和仪器部件特别相像,不同的数据结构有着不同的特性,因此要想学好数据结构,图解是必备武器!
这里强推中国大学上,浙江大学的开设的《数据结构》课程,涵盖了常用的数据结构和算法。


数据结构_浙江大学_中国大学MOOC(慕课)辅以教材参考书,强推《大话数据结构》,光看封面你就知道这本书的风格了
没错,这就是大名鼎鼎的《大话设计模式》的作者出的,绝对顶。


算法课常常和数据结构课放在一起,在有些高校中,会存在“数据结构与算法”和“算法设计与分析”这样的两门课。
但很多同学搞不明白,数据结构与算法有什么区别,甚至有些同学以为数据结构中就包含了算法。
其实,是字面意思就能知道个大概,数据结构主要讲解数据的组织形式,换句话说,我就是我们要怎样把这些数据存储起来,所以有列表、堆、栈、树、图,这是数据结构的重点。
算法,则注重的是思想,比如列表里的元素怎么排序、怎么在当前的存储结构中找到最大的数和最小的数?等等,说白了就是解决现实中问题的思想。所以才会有分治思想、贪心思想、动态规划这三大算法。
学习算法的套路很简单,多看、多写、多上机,既然是思想的集合,看得多了,自然无师自通。
至于刷题,很多同学都知道要刷LeetCode。
LeetCode题库:(2123题)
题库 - 力扣 (LeetCode)总共两千多道题,而且有些题,非常难,就算每天10题,也至少刷半年。这显然不适合绝大部分同学。
所以,我们要找到最核心、最重要的题集,即可
比如,如果时间紧张,可以先刷《程序员面试宝典》里的题目,总共109题。
《程序员面试宝典》刷完以后,有时间,可以再刷《剑指offfer》的题目,共75题。
《剑指offer》因为这两本书,都是面向面试的高频题汇总,自然有很多题目是重合的。这也正能说明这两本书的重要性。
当然,我也有一本谷歌师兄总结的高频面试算法习题集,包含了常见的数据结构和算法汇总,无论是排版还是内容,都是非常棒。  




Star 7K+! 谷歌师兄的刷题笔记火了!具体地,我也专门写过一篇如何学习算法的文章,五天破千赞,有兴趣的同学可以去仔细研究。
为什么有人说弄懂了《算法导论》的 90%,就超越了 90%的程序员?计算机操作系统  

无论你学习什么语言,都避免不了和操作系统打交道。所有语言的最后执行,都是靠操作系统。
比如,你用C++可以使用new创建一个变量来存储数据,也可以通过malloc创建一块空间。
但你真的知道他们的区别吗?无论用什么操作符来操控程序,最终真正分配内存空间的其实还是操作系统,所以,想真正了解他们的区别,就必须深入操作系统内部原理。
这就是为什么,我们学习语言时比较简单,而真正深入起来,却很多地方不懂的原因。
操作系统是程序员进阶必会的基础知识。
刚开始学操作系统,不建议闷头看书。相信我,用不了几分钟,你就会打瞌睡。学不了一星期,你就想打退堂鼓。
这里推荐B站清华大学的操作系统课程。这是我见过最简单易懂的操作系统课程了。


【清华大学】操作系统 陈渝 全113讲(上)_哔哩哔哩_bilibili【清华大学】操作系统 陈渝 全113讲(下)_哔哩哔哩_bilibili在看视频的同时,如果你还想要教材,在看上部分时,可以搭配《操作系统导论》辅助入门,在看到具体的操作系统理论时,可以搭配业界经典《现代操作系统》深入学习。这样相比直接啃书会容易很多。


计算机网络:

计算机网络,提供的是管道服务,像自来水管一样单纯,发送方Bob向管道里注入一吨液体,接收方Alice就接收到整整一吨液体,不多一滴也不少一滴。当然这是完美的理想,而现实往往并不是这样的。



真实的情况是这样的:Bob与Alice之间自来水管,每隔几公里都有一个蓄水池(增压泵),这个蓄水池有若干个进水管,也有若干个出水管,如果进入管的整体流速 > 出水管的整体流速,那么这两者的流量差就会被临时缓存在蓄水池里。稍后如果进入管的整体流速 < 出水管的整体流速,那么蓄水池里的水就可以乘机流走。
但是如果进入管的整体流速 > 出水管的整体流速一直持续,多出来的水蓄水池容不下了,多出来的水就溢出了。这溢出的水是永远都无法到达目的地的,对吗?
这个蓄水池有一个专业的名字:路由器,由于蓄水池无法补偿溢出的水,自然就需要有一个流量补偿机制,来补偿流量丢失,那么谁来补偿呢?
肯定不能网络来补偿,网络一直以无状态(Stateless)为首要目标,如果让网络来补偿流量,自然就需要网络来记忆状态,这点是难以接受的!
最终流量补偿机制的重担就落在了流量发送方Bob的身上,实现这个流量补偿机制的代码赫赫有名,它的名字就是TCP!
TCP大佬实现流量补偿机制,其实很简单,就一句话:确认机制!
一旦流量到达接收方,需要接收方Alice明确确认到达,否则TCP大佬会周期性使用流量补偿(重传)机制。
所以TCP是一个需要记忆状态(State)的代码,它本质是Stateful的!
从上面的例子也可以看出,计算机网络相比操作系统好学非常多,因为计算机网络不抽象,在现实生活中,都能找得到例子。而且,如果我们想知道网络中的细节,完全可以通过抓包来分析。
课程推荐哈工大的计算机网络系列课程:



哈尔滨工业大学 计算机网络_哔哩哔哩_bilibili这里需要说明的是,计算机网络中的细节非常多,李老师讲的也很全面。但这些细节是无需关注的,比如Http协议的错误码分类,我们记不住,而且记住也没任何意义,知道有这个玩意即可,需要的时候,百度一下,它不香吗?(如果考研用,当我没说,考研考……)
关于计算机网络,我们真正需要了解的是osi 7层协议和Tcp四层协议的产生原因和具体使用场景,就足够了。
关于图书,绝大部分高校都用的谢希仁的《计算机网络》,这本书讲的很好,很浅显易懂,它也是考研408的常用教材


计算机组成原理

组成原理应该是所有课程里最难的课了,它是一门衔接数电和汇编的一门课。整个课程的核心就是使用数字逻辑电路和触发器搭建一个可以运行汇编指令的机器.
单纯看书、看视频的学习,会极其枯燥,必须搭配实验性小游戏,才更容易理解并坚持下去。
如果你需要提前感受一下可以去玩一个叫人力资源机器的游戏.代码区就是ROM,中间箱子是寄存器,两边输入和输出的会和并到一起装到RAM,小人就是运算器.




这篇文章里有这个游戏的简介和玩法:
人力资源机器:Human Resource Machine你可以从这个游戏做为一个开始。
再回来问题上来,我们先推荐学习资料,最后再推荐一些实验性游戏。
视频首推卡内基梅隆大学的《深入理解计算机系统》系列课程,英语不好?没关系,有中英文字幕,看完这套视频,不仅能学到知识,指不定六级顺带也给过了。


【精校中英字幕】2015 CMU 15-213 CSAPP 深入理解计算机系统 课程视频_哔哩哔哩_bilibili配套教材建议选用《深入理解计算机系统》,这个视频应该也是用的这个教材。


组成原理游戏推荐:
Oxygen Not Included 里面的逻辑电路相关的内容可以提供具体案例,提高对逻辑门的感性认知.同时可以衍生出很多机制相关的思考,比如 具体的问题转化为数理逻辑,小人作业并发冲突,随机地图生成,权限管理,复杂功能分区规划等等.

  • Human Resource Machine 这个可以最直观的展示指令和运算的关系,上文也说过了和组原大作业有千丝万缕的联系.另外通过关卡提供了较为平稳的曲线,可以提前规避因为理解力不足带来的挫败感. 这个游戏还有一个多线程版本:7 Billion Humans=
  • Opus Magnum 前置知识要求低,极为艺术的逻辑呈现,完成之后真的会有炼金一般的快感.
  • Silicon Zeroes 一次性解决触发器!!!
  • TIS-100 汇编王中王
把这些内容学会,通过校招笔试,完全不是问题。

但校招不光有笔试,还有面试环节,面试考的就是项目实战能力了。
有关校招的内容非常多,这里我就不一一列举了。我把我这些年的所知所得,整理成了一本书,开源到github上了。相信会对大家很有帮助,大家可以去看.
目前还在持续更新,欢迎大家star。
地址:https://github.com/harvic/FightingCoder


好了,这篇就到这了,希望大家毕业都能找到好工作。
我是 @启舰 ,原创不易,帮我点个赞吧。


本人所有文章皆为原创,著作权归@启舰 所有,未经授权,转载必究
ouyang2008 发表于 2024-1-25 17:53:16|来自:南非 | 显示全部楼层
我就推荐两个对于小白学习编程神器一般的网站吧!绝对好用!!!
「实践是学习编程的关键!」 但是,有很多时候我们并没有太大必要去自己搭建环境,特别是一些比较复杂的环境。
比如说我们就是想简单学习和了解一下Linux的基本命令,那就没太大必要把自己的电脑换成 Linux 了。整个虚拟机是解决办法,但是对内存消耗比较严重,还要占内存空间。再比如说,你是编程初学者,想实际感受一下编程,看看自己是否合适。这个时候,你如果有一个现成的环境使用一定也是事半功倍的!
不过,这个只是针对学习编程来说,如果想要在编程路上走得更远,就不要怕搭建环境麻烦。 下面推荐两个网站,提供了现成的环境帮助你学习编程!
「真的是非常非常赞!好东西当然要分享出来啦!」
实验楼

实验楼属于国内做的比较好的一个学习编程的网站。在这里学习任何编程课程,都以实践为主。 比如说,我们想要学习 Linux的话,我们在网站主页找到了 Linux基础入门并点进去学习。  


进入之后的学习页面如下图所示,页面右侧是在线Linux环境,左侧是讲解。  


你可以按照左侧的讲解,在右侧提供的 在线Linux环境中实践一下!
katacoda

Katacoda 的话主要是提供了很多开箱即用的实时交互式的环境,比如Linux、Docker、K8s、Go、R、Jenkins、Tensorflow、等等。  


只需要一个浏览器,你就可以学习到很多你想学习的技术。非常方便! 并且,这个网站还支持自定义我们的环境以满足你的其他需求。 一经问世,这个网站便收获了无数好评。国外的一些老哥们对这个网站的评价如下:  


比如说,咱们要去学习 Docker的话,我们就直接在网站专业找到 Docker 的教程,然后点击进入即可!  


进入之后,你会发现很多不同的章节,我们选择第一个章节:“What is a container?”进行学习。 学习页面如下图所示,页面右侧是在线环境,左侧是讲解。 并且,你点击左侧讲解对应的命令即可在右边的环境中自动执行。不过,如果你是以学习为目的的话,还是建议手动把这些命令都敲一遍。  


除了在线学习各种技术这个功能很赞之外,这个网站在登录方式上也非常友好,支持Github、Google等第三方登录。无需额外注册,即可轻松登录!  


图解计算机基础Github掘金计划 致力于发掘 Github 和 Gitee 上优质的开源项目。欢迎各位看官老爷关注一波~ 原创不易,若有帮助,还请各位看官老爷给个赞。

jnwlw 发表于 2024-1-25 17:54:12|来自:南非 | 显示全部楼层
学做菜不需要从分子化学学起

同样,系统学习编程不需要从计算机体系结构学起,跟你什么学历没关系,大学毕业的,在职转行的,都不需要,编程就是编程,“编”才是核心能力,学工具,学语言,学实际开发,不是算法理论,软件工程对你来说太遥远的东西。
选一个平台

你想干嘛?Web,Mobile,后台  ... ?去做点功课,去拉钩网上分析一些职位,选一个平台投资,别妄想一下子都学,那样必然信息过载。
选好平台,自然知道语言

选了平台,自然知道平台主流语言,选定平台语言,学习就可以开始了,学编程不需要什么特别的准备,也就是一台电脑,能上网,买本书。
不要一上来就搜集资料,搜集再多毛用没有,你会信息过载,自暴自弃,用好一本书即可,入门了可以慢慢用多点资料。
选择平台和语言的建议

在php,python,javascript等动态语言里选,而不是c,c++,Java,初学编程的难度降一个等级,而且应用同样广泛。
准备一年时间

你未必需要一年,但准备好长点得时间,因为你最好慢慢来,欲速则不达。
利用互联网资源

问问题的地方很多,segmentfault等,搜一搜,问问题谦虚点,描述好问题,不要偷懒,不然初学者容易被怼。
找个老师带你,你有钱选个班也行,但要仔细选

不要交智商税,不要相信3个月包练成九阳神功这种鬼话,最起码半年以上的,才有用。
Korwah 发表于 2024-1-25 17:54:51|来自:南非 | 显示全部楼层
【置顶:建议你学习C/C++,这样可以参加NOIP(全国青少年信息学奥林匹克竞赛),另外,需要C/C++软件的可以看这里《C/C++开发和学习人员必备工具下载集合 - 编程少年》】
最近一直在思考怎么样快速掌握一门编程语言基础,究竟哪些是入门编程语言的最少必要知识。
在重新学习了python, javascript之后,我发现掌握基础编程概念后,使用如下套路可快速入门新的编程语言
PS: 当然只是入门。如果你以为快速就能成为高手,抱歉我不知道,至少现在我还没有发掘出这个秘诀。
那究竟是怎么做呢?好了,不卖关子了,让我细细道来。
运行环境

这是我认为我的套路中最接地气,也是大部分小白以及初入门朋友迫切想要学习的内容。
计算机科学虽然可以复杂到能战胜柯洁,但是总体而言也算是一门实践学科。就好像我一直说的例子,最简单的一个程序只有这么几行代码。


作为一个成年人,虽然可以脑补出最后的运行结果。但是这种效果还是比不上让一个初学者亲自输入代码,编译,并执行后得到正确结果时对他大脑的刺激。 你可能不知道,哪怕是现在的我,当我编译运行后看到复杂代码执行的结果和我自己想象的结果一样时会还是很兴奋。一般此时我会脱口而出:“艹,牛逼!”。
根据我的经验,网络上多的是各种语言的语法描述,告诉你要怎么写,少的是真实的告诉你怎么把你写好的代码运行起来。通常我们可能会看到某些点滴的描述,作为有经验的人或许能够把他们拼凑起来,但是对于小白那简直就是灾难。天下代码一大抄,但是对于小白抄完了也不知道怎么跑。
我不知道有多少人会因为没有办法执行自己的代码而放弃学习编程。
不仅是小白,哪怕对我这种老司机也会遇到这样的困难。在刚开始接触js的时候连简单的console.log()也不清楚在哪里观察结果。因为js通常使用在网页前端的交互,但是在页面上我怎么观察输出?怎么调取某些函数?怎么观察变量的改变?这种感觉就像是你明明知道某个东西放在哪了,但是却怎么也找不到。
之所以这部分的资料很少,我认为有两个原因:

  • 对知道的人来讲,这不是秘密
  • 太过细碎,没有人乐意去总结
从这个层面看,编程也是一门手艺活。
所以最好的方法是跟着前人把这些步骤走一遍。找个这方面的老手,也还不一定是要高手,让他带着你走,你模仿一遍就自然知道了。
语言语法

很多学习语言的朋友都讨厌学习语言语法,当然了其实我以前也讨厌的。觉得这种东西枯燥乏味,而且翻来翻去也没什么花样。但是我现在对此有了改变,因为我们越是躲避的东西,到时候越是会拖住我们。
好消息是:
高级语言的语法基本大同小异
我基本列举一些众多高级语言通用的语法:

  • 循环语句
  • 判断语句
  • 类的继承
  • 函数定义
  • 构造函数
  • 析构函数
所以当我们掌握了一门编程语言之后,想要入门新语言的语法,重点就是把这门新语言的语法特殊点记录下来。这么看来,对语法的学习其实花不了多少时间。
当然,这里我要补充一下对一些语言中神奇语法的学习。
比如说python中的lambda,ruby自动扩充函数名,js的语法糖,这些神奇的语法怎么办?(听不懂?没事儿,听不懂就跳到下面一节吧~)
先不学,用到的时候再去突破
首先不用这些神奇的语法一样能够实现基本的功能。这些神奇的语法出现更多的是为了锦上添花,让程序代码更少,书写更符合人类的习惯,或者是实现一些原本不容易实现的功能。
不过我们要注意的是,在入门阶段我们的目标是“入门”,而不是玩出高级花样。这些特殊的语法确实在实践中有它的优点和好玩的地方,然而不懂这些高级语法并不影响入门。如果我们一味钻研这些语法,而且自己没有一定计算机基础,又没有比较资深的人士讲解,往往会使我们陷入这些精妙语法的细节,而忽略了最基本的执行原理。
尤其对于初学者来说,可以去领略一下这些语法的优美之处,但是重点还是要放在基本概念之上。
数据类型

这部分的内容我如何强调都不为过,用一句洋气的英文:
Last but not least
甚至我最近领悟到了一个道理
数据是编程活动的核心
对数据的理解讲贯穿于一个软件工程师生命的各个环节,哪怕他已经是一个经验丰富的高级工程师,他的关键工作依然是对数据的空间维度和时间维度进行处理。对于这个道理,我想我会用另一篇文章进行阐述。
本文继续回到入门的环节,所以这里只涉及语言自带的数据类型,不包含各种库衍生的数据类型,更不包含应对复杂现实世界而创造的数据类型。因为不论是多么复杂的数据类型,都是在其基本数据类型上变化而来。
对基本数据类型的理解,是入门的标志,也是深入的基础
有的语言的基本数据类型非常简单,而有的则稍微复杂一些。其中最为常见的类型有

  • 整数型
  • 字符型
  • 列表
  • 元组
  • 字典
所以当你能总结出这几个类型的使用方式,也就基本入门了这个语言数据类型了。在这个基础上,就可以编写简单的程序了。
这一切的基础

一天入门编程语言的套路已经讲完了,但是真的做到这一切需要一个前提
懂得计算机运行原理
其实这一切都归结到两个计算机领域的经典概念:

  • 图灵机
  • 冯诺依曼架构
在学校的时候一直听说这两个概念,但是从来都没有觉得这两个经典概念有多少重要,总是觉得不就是这样么?还要说么?
但是当自己开始认真思考入门编程的教学,思考究竟什么是编程学习的核心,什么样的概念是计算机领域的元知识,学习完了之后大家能够获得自我成长的造血功能,而不是每次都需要从头学起,那么计算机的运行原理则是编程入门学习中最重要的元知识了。
Evaxzf 发表于 2024-1-30 23:42:10|来自:南非 | 显示全部楼层

Как создать новую тему jinriwenda.com ??

Ryun ??? 2024-1-25 17:52
??????,??????????,????????
???????,??????,???????? ...

Как ответить в тему?  
Что я делаю не так?  
Прошу помочь.  
С уважением.
Serzxic 发表于 2024-1-31 17:49:19|来自:南非 | 显示全部楼层

How to change my password in my profile at jinriwenda.com ??

Is there a moderator, do you need your help changing my password?  
What am I doing wrong?  
Please help.  
Thank you.

快速回帖

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

联系客服 关注微信 下载APP 返回顶部 返回列表