0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

学习编程语言是在学什么

C语言编程学习基地 来源:博客园 作者:锅叔 2022-04-28 11:18 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

“想入门编程,应该学那种语言?” 这类问题在五湖四海,世界各地,应当都是比较常见的。给出的回答呢。

有的会直接告诉你去学Python

有的呢会给一些比喻,说编程语言就像画家手里的笔,有毛笔,钢笔……;

有的会给出一个技术栈的图表,告诉你如果你要做XXX,那就学XXX,如果做XXX就学XXXX;

感觉呢这些建议,也都不错,但是通常都比较简略,结果明确,但缘由一般不会展开太多解释。纯新手可能似懂非懂,将信将疑。

自上而下,由整体到具体的理解一个事物,效率往往比从具体到整体要高,更容易明白自己所处的位置, 更容易入门。

可惜,对于程序员在开发领域归纳总结,融汇贯通来说, 可能是十几,二十年后的事情了。所以在分析编程语言优劣,或者选一个语言写具体的Hello World之前, 我们最好对“编程语言”有一个更整体全面的了解。

一、学习编程语言是在学什么

百度百科——编程语言(programming language)可以简单的理解为一种计算机和人都能识别的语言。一种计算机语言让程序员能够准确地定义计算机所需要使用的数据,并精确地定义在不同情况下所应当采取的行动。

维基百科——编程语言是一种规则, 这种规则,可以把文字, 或者图形元素(可视化编程语言)转化为机器码。编程语言是一种计算机语言,用于在计算机上实现各种算法

百度的定义显然说了啥但好像又啥都没说。-_-|| 。维基百科的则准确了很多。编程其实就是把你写的一段文字(代码)按照特定的规则,

转换成机器码(机器能够运行的指令),用于在计算机上实现算法(如显示2个输入数字中最大的)。你要学习的其实就是这种规则,比如当我需要在屏幕上显示

Hellow World时。按照不同语言的规则,我需要这样写出这样的文字。

c语言:printf(" hello world!");

php语言:echo"hello world!";

java语言:System.out.println("Hello World!");

看上去有些差别,但又有些相似。实际上目前主流的高级语言如Java ,C#,javascript,Python他们的基础语法规则是非常近似的。无论先学哪个入门,后面的切换成本,基本是几小时搞定。当你学会一门语言,除了学会了具体关键字,语法之外,更主要的是你会沉淀下来一种对编程语言模式的理解。当你理解了一种语言中的 变量,函数,控制结构(顺序,分支,循环),迁移其他语言时,你会发现在其他语言中,这些概念也是存在且完全适用的。

伪代码是一种脱离具体语言的,体现编程思维的描述方式, 相同层次的语言,编程思维是共通的。如显示2个输入数字中最大的问题的编程思路。

变量A等于输入的第一个数字

变量B等于收入的第二个数字

如果 变量A大于 变量B

屏幕显示变量A

否则

屏幕显示变量B

上面的算法思想, 在各种语言中都是可以实现的。仅仅变量定义的方式,判断分支的书写方式略有差别。所以,对于入门来说,学习一门编程语言,通常都狭义的指编程语言本身(基本不涉及第三方类库框架等), 你所学到的语法细节切换成本是很低的,各个语言差不太多,而真正沉淀的是你在编写过程中逐渐熟悉领会的,编程思路。即组合使用,变量,函数,控制结构(如果/那么/循环)等要素,解决具体的算法问题的能力。

二、IDE与编译原理

在纠结良久终于选定了学哪一门语言之后,可能开始接触到的第一个东西是IDE,例如学Python可能是用PyCharm,我之前学Basic用的是Visual Basic。IDE的含义是“集成开发环境”, 名字虽然很准确,但当时还是小白的我其实是非常困惑的,压根搞不清楚IDE与编程语言之间的关系。也搞不清楚,写完代码后在IDE中一点那个绿色的小三角(运行)过程中到底发生了什么。IDE可以方便程序的开发,但是对于新手会影响他对编程语言的理解认识,很难理解IDE的确实含义,“集成开发环境”到底集成了什么。

5832c6de-bef0-11ec-9e50-dac502259ad0.png

——上面是Python的 Hello World。IDE为PyCharm

IDE大概集成这样几种东西。

1.文本编辑器是一个用于编写文本的工具,像上图写print Hello World 的地方。编程其实就是在编写一段文字,保存成一个文件。常见的简单文本编辑器比如windows中的记事本,也是一个文本编辑器。理论上记事本完全可以用来编程,但IDE中的文本编辑器会提供很多额外功能,如文本着色,智能提示(敲pr会自动提示 print),这些快捷功能是语言相关的。当然也会提供文本编辑器的常见功能, 保存,查找,替换等。

2.编译器连接器 对于非脚本语言(最终生成独立的可执行程序)如C,编写好的程序文件是无法被运行的。例如在windows中,系统层次,典型的可执行文件扩展名为EXE,这是一种特定的文件格式PE文件格式。编译器与连接器的作用是,将编写好的程序文件最终转化为EXE文件。编译器针对不同的CPU将程序文件,编译为对应的CPU指令。链接器是平台相关的,将编译后的中间文件组装成约定格式,如 Windows ExE。

3.解释器对于脚本语言,解释器能够直接执行,文编编辑器编写完成的程序文件。如点击上图的运行。实际是运行了python ./a.py其中的 python 可以理解为解释器。

4.调试器为你提供了一个可视化的调试器,你可以直接点击按钮,进行调试操作,而不是在黑洞洞的命令行上敲命令。

5849f7e6-bef0-11ec-9e50-dac502259ad0.png

——gdb 调试界面

5.其他工具插件通常会具有集成其他插件的能力,如集成版本管理。可以直接把你的代码上传云端,进行版本控制。或者统计分析,写了多少代码,是否编写规范等。

通过以上对IDE 的介绍可以看出, 编程语言是一种规则,准确的说是一种规范。举例来说其中可能存在一条,

当你写了一行printf(hello),之后就在屏幕上显示hello。所以规则是稳定不变的。而你过程中要到的工具,IDE的各个组成部分都是可以替换的。只要编译器符合语言的标准规范即可,因此会有多种编译器存在,其性能特点可能会有一些差异。

三、广义的编程语言

想入行的同学经常会说,我想学Java 该怎么学, 我想学Python该怎么学。这其实通常来说不太准确。狭义来说,你只需要花几天,老手可能是几小时几十分钟,去看下这个语言的语法规则,如何定义变量,如何写判断,循环,如何调用方法。然后做一些算法问题练习,比如对10个数字排排序。写个猜数字的游戏,基本就算学会了。但这可能跟你的期望不一致,你说的学Java 可能是觉得你学会了Java 就可以写出一个像WOW那样的游戏 :-),或者像QQ那样的聊天工具,或者像淘宝那样的网站,而学会了语言之后你仍然会觉得无从下手,只会在命令行控制台中做点简单的输入输出。那么这中间的gap究竟在哪里呢?是因为:

5861d154-bef0-11ec-9e50-dac502259ad0.png

——图片来源于知乎回答“互联网”技术栈

就是说,要规范专业的做一个能支持一定访问量的互联网站点(如淘宝),会涉及上面大部分的技术内容。这远超“编程语言”定义的范围。其中很大一部分是语言无关的,例如运维,工具,中间件中的分支内容。其中后端中的语言分支之下是语言相关的,而前端中如果不考虑移动端Android Ios, 对于Web来说其实只有HTML,CSS,Javascript三种语言,angularjs以及VUE,属于属于Javasciprt语言中的不同框架,但差异较大。

综合以上涉及的语言类型主要分为以下几类

命令式

关注步骤细节, 如查询一堆数字中最大的一个, 需要写循环、判断、 定义变量进行比较,最终得到结果。计算机的算法过程完全由你定义。通常学习的Java javascrfipt PHP C都可以理解为这一类语言。

结构化查询——声明式

多用于结构化数据库查询(“数据库”是为了解决程序存储,查询数据问题,想象一个图书管理程序),SQL语言。取得最大数字如下, 你并不需要关心它的具体算法。

SELECTmax(num)FROMtable

标记语言

HTML,XML,CSS等属于标记语言,用于定义布局,没有逻辑。严格来说不属于编程语言。如HTML标记语言规定

表示一个表格 ,其中的表示表格的一行,编写人按照HTML的标准编写,浏览器按照HTML的标准处理渲染, 最终就会在屏幕上显示一个表格。

回到写一个淘宝上,淘宝需要有web页面,所以你要学习HTMLCSS,JS,需要有数据库存储商品, 所以需要学习数据库工具如MYSQL,并能够编程使用他,能够增删改查数据。需要有后台服务器,用于给页面提供动态内容, 动态的生成HTML,所以需要学习Web服务器如何编写,可以选择的语言有很多, 如果选择了一种如Java, 也不需要从头造轮子, 那就要接着学习Java 的Web框架,如Spring。如果你选择用PHP语言写Web服务器, 那就无法使用Java 的Spring框架了。对应的PHP也会有自己的Web框架。所以特定语言第三方框架的学习成本才是切换语言的最主要成本。

总结

如果你是想入门学一门语言,那具体学哪种其实真的不算是个重大抉择,主要是为了建立编程思想。

如果你是想进行特定领域的开发, 那你一定要首先搞清楚技术栈, 在该领域中使用的主流语言,工具。然后针对性的学习。如果你志向于开发游戏客户端,那学习互联网的技术栈,就是南辕北辙了。

先到这里, 希望对初入门的同学能有所帮助!

原文标题:想入门编程,应该学那种语言?

文章出处:【微信公众号:C语言编程学习基地】欢迎添加关注!文章转载请注明出处。

审核编辑:汤梓红
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • IDE
    IDE
    +关注

    关注

    0

    文章

    368

    浏览量

    49218
  • 编程语言
    +关注

    关注

    10

    文章

    1965

    浏览量

    39883
  • python
    +关注

    关注

    58

    文章

    4888

    浏览量

    90320

原文标题:想入门编程,应该学那种语言?

文章出处:【微信号:cyuyanxuexi,微信公众号:C语言编程学习基地】欢迎添加关注!文章转载请注明出处。

收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    手把手教你学51单片机-C语言

    更多信息),手把手地带领大家来学习单片机技术,给单片机初学者带来福音,让大家一步一个脚印的掌握单片机技术。 《手把手教你学51单片机-C语言版》(第3版)这本书除了讲解简单的实验和编程语法、由浅入深
    发表于 03-05 11:47

    学习单片机快速方法

    使用开发软件,比如KEIL。建议大家用C言语编程,汇编语言有时间可以学习一下。 毕竟C语言一目了然,移植性较好。虽然汇编效率高,但是难懂。况且现在单片机集成度越来越高,不必要那么高效
    发表于 01-14 07:42

    如何调试和编程CW32F030C8T7?支持哪些调试工具和编程语言

    了解如何调试和编程CW32F030C8T7是开发过程中的重要环节。它支持哪些调试工具(如JTAG、串口调试等)和编程语言(如C、C++等)?如何设置和使用这些工具来加速开发过程?
    发表于 12-05 06:48

    为什么单片机还在用C语言编程

    最适合单片机开发的编程语言实在太过晦涩难懂,学习起来非常的不方便,并且每一种单片机的汇编指令有很大区别,所以想把一个程序从这种单片机移植到另一种单片机简直是痴心妄想,重新写一遍程序还来得轻松,时间还快
    发表于 11-28 07:37

    C语言编程技巧

    设计,分层开发代码,便于理解和维护。 ‌8、避免使用GOTO语句‌:尽管GOTO语句在某些情况下仍然有用,但现代编程更倾向于使用函数和循环控制结构,以提高代码的可读性和维护性。 ‌9、利用C语言的灵活性
    发表于 11-27 06:46

    开源鸿蒙技术大会2025丨编译器与编程语言分论坛:语言驱动系统创新,编译赋能生态繁荣

    在万物智联的时代背景下,操作系统底层能力的构建离不开编程语言与编译器的关键支撑。作为开源鸿蒙生态的核心技术,语言设计与编译器、虚拟机实现的进步直接关系到开发效率、运行性能与系统安全。本次分论坛聚焦
    的头像 发表于 11-20 17:24 1177次阅读
    开源鸿蒙技术大会2025丨编译器与<b class='flag-5'>编程</b><b class='flag-5'>语言</b>分论坛:<b class='flag-5'>语言</b>驱动系统创新,编译赋能生态繁荣

    2025年最佳的嵌入式编程语言有哪些呢?

    嵌入式系统是现代科技不可或缺的一部分。它们存在于家用电器、汽车、住宅、医院、商店等各个领域。它们与我们的社会紧密相连。选择合适的语言来构建嵌入式系统对于成功至关重要。那么,2025年最佳的嵌入式编程
    的头像 发表于 11-14 10:27 1796次阅读
    2025年最佳的嵌入式<b class='flag-5'>编程</b><b class='flag-5'>语言</b>有哪些呢?

    一文了解Mojo编程语言

    Mojo 是一种由 Modular AI 公司开发的编程语言,旨在将 Python 的易用性与 C 语言的高性能相结合,特别适合人工智能(AI)、高性能计算(HPC)和系统级编程场景。
    发表于 11-07 05:59

    Linux 编程语言盘点:从内核到AI的全栈选择

    在工控圈和嵌入式圈里,有一个常年被讨论的问题:  “在 Linux 上,到底该用什么语言编程?” 有人坚信:C 才是真正的工业语言。有人反驳:Python 才是效率王者。还有人推崇 Go、Rust
    的头像 发表于 11-06 17:05 790次阅读

    开发单片机需要学习什么?软件编程的 4 个关键层次

                        开发单片机需要学习什么?软件编程的 4 个关键层次 单片机的 “智能” 全靠软件实现,编程技能需从基础语法逐步进阶到复杂逻辑,每个层次对应不同的开发需求
    的头像 发表于 08-25 11:32 1089次阅读

    在学习D13的芯片配置,为什么我vscode,一堆爆红,看着好烦,有没有解决办法

    在学习D13的芯片配置,为什么我vscode,一堆爆红,看着好烦,有没有解决办法
    发表于 08-22 20:02

    ARM入门学习方法分享

    )架构。学习ARM的开始可以从学习RISC和CISC架构的基础知识开始。 二、学习汇编语言:ARM架构的核心是汇编语言
    发表于 07-23 10:21

    梯形图语言补充编程说明书

    电子发烧友网站提供《梯形图语言补充编程说明书.pdf》资料免费下载
    发表于 07-09 14:14 3次下载

    C语言精彩编程百例-364页

    和低级语言的优点,因此,在工程计算及应用程序开发中得到了广泛的应用。 众所周知,学习新的程序设计语言的最佳途径是编写程序,而本书正是通过了对100个典型实例的分析和讲解,来帮助读者掌握这门语言
    发表于 06-13 17:28

    零基础学习LuatOS编程:快速上手开发实战教程!

    无论你是刚接触物联网编程的新手,还是希望拓展技能的技术爱好者,本教程将为零基础的读者提供一条清晰的LuatOS学习路径。从安装开发工具到编写第一个程序,我们将通过实例讲解核心概念,助你快速实现从理论
    的头像 发表于 06-13 17:27 757次阅读
    零基础<b class='flag-5'>学习</b>LuatOS<b class='flag-5'>编程</b>:快速上手开发实战教程!