答编程为何不用中文?兼谈如何学习编程

相关文章, 中文编程兴起的必然性 -- 欢迎看评论,与做者作了一些交流.javascript

[摘要] 知乎上有个问题编程为何不用中文? 有点意思, 我把回复单独整理后, 写在这了: 编程语言是个符号系统, 可否普遍使用要看使用人员基数php

_java

0. 概述

题主是一个挺"有趣"的程序员, 独立思考, 提出疑问也有意思, 只是问题自己的表达, 比较可能是在陈述一个事实, 以及题主的思考:python

  1. 编程开发语言( 强调可读性) 当前不多用中文表述.c++

  2. 题主认为: 中文对于咱们中文母语的开发者, 更直观明了啊......git

我我的呢, 不太谦虚的说, 是平面设计者, 自由职业程序开发者, 同时很是喜欢音乐(有个音乐培训小机构), 在这一基础上陈述一下我的观点程序员

1. 编程语言是一个符号系统

就像音乐的曲谱, 音乐家们写出曲谱, 演奏家们按谱演奏出音乐家所表达的音乐. 注: 音乐是一个不一样强弱的声音(包含休止), 以时间长短构成的声音序列.github

程序员们以某种现代计算机开发语言, 写出程序源代码, 表达了本身想让计算机以及计算机构成的网络, 相关的工做网元如打印机, 去执行程序但愿实施的某些工做或任务, 这些程序源代码, 最终转化为二进制 CPU 执行指令序列, 交由计算机( 们.....) 去执行golang

演奏人或电声音设备演奏的声音序列 <----> 音乐符号集 <---> 曲谱 ( 音符构成的表达符号序列)算法

可执行的 CPU/GPU 二进制指令序列 <---> 开发语言指令符号集 <---> 程序源码( 开发语言符号系统构成的源代码序列)

JAVA 语言的符号系统转换, 以下:

某CPU/GPU 二进制指令序列 <---> 汇编语言<---> java中间码< ---> Java 符号指令集 <-----> java 程序源代码集合( 与数据)

现代音乐的五线谱:

演奏人或电声音设备演奏的声音序列: 音乐 <-------> 五线谱定义的音符<-------> 国际标准通用五线曲谱

由于历史发展缘由, 编程语言的符号系统, 也一直在发生变化, 但整体变化就两个方向:

  1. 让人更容易读, 更轻松而有效率地去表达, 符号系统构成准确/科学/精练
  2. 符号系统转化后的二进制代码序列, 被CPU/GPU 执行起来准确而有效率

2. 因为历史与文化变迁, 现代开发语言一直在新增/消退, 及快速进化发展

这就很少说了, rust 与 golang 的出现及持续普及, typescript 增强了 javascript, 而 wasm 是 java 中间码思想在浏览器内嵌语言的华丽重生..............以及 LLVM 的持续获得重视与普遍使用

cpu 指令集 <----->( 汇编语言---------> LLVM.........) <----> 高级开发语言 ( 强调易读, 强调效率, 强调安全性,强调多态抽象智能........ )

高级开发语言, 有 js / java / c / c++ ................. 固然能够有中文编程语言

3. 影响现代编程语言的因素, 只有两个因数, 人员基数及使用领域

有些领域开发语言, 是某领域的特殊须要, 但也有人员基数在主导, 好比生物基因研究领域, perl 依然是主力, 而机器学习, python 占有一席之地, 对于数据抽取, sql 是固然的皇者

而通用编程语言, 主要是人员基数在起决定做用, 比较 erlang / haskell 与 java / php 的使用人员基数就知道了

注意, 走的人多了, 没有路的地方, 也就成了路.

那么, 影响中文成为编程语言的因素, 只有一个,有多少人在用或将会使用?

因此, 若是让中文成为使用人多的开发语言, 第一个问题, 用中文表示的符号系统(假设完美的定义出来了) , 真的好到能让不少人承认并使用吗?

对比:

int var1, var2, var3,var4

if var1 == var2 then var4=var3

中文?

天然数 变量一, 变量二, 变量三, 变量四 若是 变量一 等于 变量二 那么 变量三 赋值给 变量四

示例参见 juejin.im/post/5d48f1…

注: 该示例被标注 用中文命名API的意义和途径

来, 咱们来构建一个中文开发语言的符号系统 come on.......................................

你们一块儿来努力 .........

4. 关于中文做为编程语言

相关:

或许有人想翻翻个人"黑"历史 ( 自嘲地笑.......... ) 就知道, 我是最先 perlchina 组建者之一. perl 是优秀的开发语言, 自1999到2005年, 用了6年,最终放弃了, 由于 perl 很是优秀, 但部分语法有点晦涩难读.

java 也是我之前经常使用的开发语言, 符号系统完整而精确, 表达力一流, 看看 java 的泛型, 漂亮啊............ 但 java 的 OOP 被某些 OOPer 过份的强调可重用性而让代码层层嵌套, 因此, 我的不喜欢用 java 的某些 framework 们但又不得认可 java 的规范与优秀

固然, 用过 python , 在用 javascript / typescript , 在用 haskell , 在用 plpgsql..........

但 go 语言出现了, 我转到了 go , 由于 go 语言的符号系统, 简明直白, 难有歧义, 并且使用 go 的同道者一直在增加.

纵观计算机的历史发展, 英语有先发优点, 英语作为国际通用语言, 使用人数很多, 英语成为编程语言符号系统, 有历史与人员基础两大缘由

因此, 想要中文成为某种高级编程语言, 须要用中文编写一个符号系统, 下接 llvm , 上编译中文编程代码....... 我的认为挺有意义, 但没什么建议

而未来的历史, 由咱们去创造, 题主与支持中文编程的朋友们, 期待中文编程语言的普遍普及.


多说几句, 中文编程, 这东西只对一个市场有好处, 那就编程培训市场, 尤为是青少儿编程培训市场.

以我的见解, 青少儿学习编程, 绝大多数是浪费时间: 孩子还在学习事物并培养逻辑思惟, 而且在学习国语与英文( 这已是两个符号庞大系统)的时段, 对语言表达差得远........ 这时培训另一个全新的符号系统(编程语言) , 能学到什么.................... 学出来了也是码农, 而不是问题终结者这样的程序员.


_

_

( 注: golang 有 google 大厂与三位计算机大神背书, 发展了10年...........如今这个样子, 依然有人不看好, 呵呵) .

_

_

5. 关于学习编程, 以及其余

关于如何编程, 我认为,

1.学习某种编程语言的符号系统, 以及这种编程语言附带的定义问题, 解决问题的哲学, 以及这种语言一些约定俗成的"习惯", "规范", "范式", "模式"....... 套路

  1. 本身要精于发现问题, 定义问题的内涵与外延 ( 边界) , 精肯定义解决问题的方法(算法)与步骤.......
  2. 学会用你学的这种编程语言, 转化, 表达成为解决问题或指派计算机(们....) 去干活的编程源代码.........

因此, 实现编程, 你有须要,

  1. 了解事物自己, 好比, 了解行业基础, 了解业务场景, 了解业务流程, 了解业务过程当中各细分过程的各数据以及数据处理方式与限制条件( 边界)
  2. 用编程语言去表达, 你了解的事物与解决流程

最后, 只要精通一种编程语言( 解决问题的方法, 以及用程序语言表达) , 其余编程语言基本只要熟悉特有的符号系统与"套路", 基本是能够用了 (固然, 用好, 还得多码多用............)

_

_

“Any fool can write code that a computer can understand. Good programmers write code that humans can understand.”

---------------Martin Fowler

最后, 祝你们码钱愉快.........

ps: 编程不为挣钱, 纯为兴趣爱好? 嗯哼, 偶表示不太相信..........吼哈............

_

_

_

关于我

网名 tsingson (三明智, 江湖人称3爷)

原 ustarcom IPTV/OTT 事业部播控产品线技术架构湿/解决方案工程湿角色(8年), 自由职业者,

喜欢音乐(口琴,是第三/四/五届广东国际口琴嘉年华的主策划人之一), 摄影与越野,

喜欢 golang 语言 (商用项目中主要用 postgres + golang )

_

_ tsingson 写于中国深圳 小罗号口琴音乐中心, 2019/08/05

相关文章
相关标签/搜索