学编程:究竟要学什么编程

网络编程 2023-05-12 07:17www.168986.cn编程入门
Java,python,还是C++,这些都是编程语言,你可以理解成和计算机交流的一系列的语法规则集合,不同的语言有不同的语法规则。
学编程,当然要学语言;但以语法学习为导向,必然会带来这么些问题:
记不住:把学习当做一种“背诵/记忆”,所以学了后面的忘了前面的
抓不住重点:纠缠/窃喜于一些生僻的、晦涩的、根本不常用的语法,类似于“茴香豆的茴字有几种写法”的那种。尤其是一些比较“垃圾”的语言,是的,点名批评JavaScript,(奸笑.jpg
迷茫:学完了所有语法,也不知道能干嘛,做个网站,游戏,还是APP?都不会,甚至方向错误。顺口问一下:你为什么要学Java?懵逼不?
视野狭窄:喜欢搞语言崇拜,玩鄙视链,打口水战,争论“PHP是世界上最好的语言”……
我们圈子里面有一句话:语言只是工具。啥意思?工具是帮助你完成工作的,你的目的是完成工作。你要完成工作,当然需要工具,但只有工具是不够的。
用钓鱼做个类比: 你要钓鱼,鱼竿就是工具。你当然要会用鱼竿,会挂钓饵会抛竿;但要想钓到鱼,仅仅是会用鱼竿是不行的,你的钓鱼技术不是由你会用多少种鱼竿,你用的鱼竿流弊不流弊决定的。是不是这样?另外,钓什么鱼用什么竿,鱼竿本身有没有高下优劣之分呀?没有的嘛!如果几种鱼竿都可以,那其实就是一个顺手不顺手的问题,有可能这个钓鱼佬用这种鱼竿顺手,那个钓鱼佬用那种鱼竿顺手,很多时候是一个主观感受的问题。
套用到编程语言,程序员要想完成工作(专业的说法叫做:实现功能):
仅仅会某一门编程语言是不够的
实现不同的功能,可能需要不同的编程语言
决定程序员水平的,既不是程序员会多少种编程语言,也不是他是不是“精通”某一种编程语言
(市场认可的主流)编程语言,只有分工(适用场景)的不同,没有高低优劣之分
多种编程语言都能实现的功能,程序员选择通常考虑的就是“顺手不顺手”而已
所以,再进一步的类比推导:你要学什么编程语言,首先要确定你想钓什么鱼,是不是?
你点头,然后又懵了,有哪些“鱼”呢?
学习内容
这些问题就显得“专业”一些了:
所谓的“IT”(挨踢)行业究竟是什么行业?和“互联网”行业有什么关系?
我“学计算机的”和“学编程的”究竟有什么区别?
计算机科学(Computer Science)和软件工程(Software Engineer) 啥区别?
人工智能(AI)、大数据、物联网(工业2.0)……这些又是什么鬼?
……
回答这些问题,就需要一个最起码的基础。耐心一点,飞哥从大到小,按分类给你讲:(超级干货,建议自备饮用水,以免噎着,^_^)
硬件 vs 软件
硬件:看得见摸得着的都属于硬件。比如一台电脑,就包括:显示器(屏幕),键盘鼠标,还有里面藏着的CPU、内存、磁盘、网卡等等。此外还有各种网络设备:网线、交换机、路由器……
软件:看不见摸不着的,以信息、代码、程序等形式存在,运行在计算机硬件上的东西。比如:电脑上都要安装的操作系统,QQ或者微信,浏览器打开的网站……
我们学编程,当然就是学软件了,修电脑接网线的事,理论上(是的,只是理论上)是不归我们管的。
科学 vs 工程
飞哥的大白话解释:
科学,是在未知领域进行突破,获得新知识、新技术、新发明。工作成果主要表现就是模型或者论文。
工程,就是利用现有的技术和资源,解决具体的问题。工作成果,硬件的话,就是芯片、电脑;软件的话,就是程序、应用……
所以,童靴们知道“计算机科学”和“软件工程”的区别了吧?
要想走计算机科学这条路,几乎就只有考大学考研考博了;
但如果想走软件工程这条路,参加培训甚至自学都是可以的。
应用开发
在软件工程领域之中,又可以细分。
一般我们把直接面向“终端用户”的软件称之为应用。
这里的终端用户:
可以面向普通用户,比如游戏、微信、一起帮……;
也可以面向专业人员,比如Office、PhotoShop、CAD、数据库(哦豁?利用应用做应用)……
但不应该是程序开发人员。
为开发人员使用的是软件,一般被称之为:框架/类库/中间件……
所以,各种软件的调用顺序大致如下:
越接近硬件的就越底层。
粗浅的理解:越是底层越难,在程序员的世界里,就更流弊。所以,这个段子不是程序员get不到笑点:
相亲被鄙视,你什么时候升到中高层?
但是,这里也有一个常见的误解:越底层工资越高。
其实不一定!至少我知道的,底层到硬件了,工资真的可怜。你的工资收入不一定是和工作的难易程度挂钩的,我看到过一种说法,离钱越近的行业工资越高,比如说互联网。别说,还真有那么点道理。
有无数据库支撑
应用中又还可以按其是否需要数据库支撑,划分为:
IT信息化应用:这个稍稍有点抽象。简单的理解,它其实就是把现实生活中的数据搬到计算机里面处理。比如淘宝,可以看成一个“线上大商店”,只不过这个商店里面不放具体的商品,而是展示商品的信息,比如名称、图片、价格、销售情况等等。整个淘宝,本质上是“信息的应用管理”,或者更专业的说法,就是数据的:
增:增加数据,比如发布一件商品,一条好评,是不是就增加了一条商品/好评数据?
删:删除数据,比如货物下架,删差评
改:修改数据,比如改价格,更换图片
查:查找数据,比如找到某种商品
的过程。背后通常都需要专门的数据处理软件“数据库”的支持。现在无数的应用基本上都属于这一类。
系统应用:其核心业务不是数据的增删改查,背后也不需要大型数据库支持。典型的就是
工具类软件,比如文字处理软件WPS,绘图软件Photoshop或者CAD…… 以及,
各种游戏
Web开发
计算机上运行的软件,还可以按是否需要联网分为:
单机程序:在当前电脑上独立运行,比如:WPS、PhotoShop、单机小游戏(扫雷)
联网程序:需要通过网络连接到服务器才能正常运行,比如:QQ、哔哩哔哩、知乎,这类软件又被分为两种架构:
C/S(Client/Server):客户端/服务器,表现为用户需要下载一个软件安装在自己电脑上,然后通过这个软件联网(和服务器相连),比如:QQ
B/S(Browser/Server):浏览器/服务器,表现为用户直接打开浏览器(比如:IE/Chrome/360浏览器),输入网址,和服务器相连,比如:一起帮
广义上,所有需要联网的程序开发都可以称之为Web开发,但一般我们会认为B/S架构的、基于浏览器的项目才是Web开发(实际上目前B/S架构也占绝对份额)。
 

Copyright © 2016-2025 www.168986.cn 狼蚁网络 版权所有 Power by

长沙网络推广|微博营销|长沙seo优化|视频营销|长沙网络营销|微信营销|长沙网站建设|口碑营销|软文营销