本文关键字:shell language,debuginbuilt+google oriented programming practise+drive。programming:dgv programming,限制源码规模。,Debug appliance inbuilt

在《软件即抽象》中我们讲到编程的本质是用抽象来构建图灵完备的概念体系,语言本身提供有限抽象,还负责映射无限的问题域抽象到有限的平台抽象域(各种语言在平台已实现了的lib,runtime,api,binary interface可开发件,对于云,只有api/api stub,无平台依赖),然而当代编程还停留在传统阶段,其过程和方法,依然是编码和调试以及维护,这导致了现在的编程依然很原始:

1,来说点抽象和科学层面的,由于组成编程的抽象本身是巨大的,同时要整合进语言平台问题和设计,所以编程复杂性始终无法脱离对其对那个工程规模级别知识库的东西进行背书,虽然编程语言编程工具和各种中间件越来越抽象,极大谈化了一部分抽象,编译器作为语言实现,虽然有宽松的repl和越来越强大的各种动态语言能力和运行时设施解放编译期检查,但始终只接受那些编译通过了的每一条语言元素。虽然有标准化但编程的软硬平台生态一向很破碎各自为政变动频繁这导致其附属开发也破碎,而且编程中很多部件和高层概念依赖很专业的东西构建,这些依然无法做到彻底抛弃和替换,使得人们难入阶即使入阶后依然不能举一反三(提供工具级和外来辅助手段降低编程入阶的专业度难度只能做到有限的效果。如果仅仅这样,后面遇到的曲线照样会陡峭。并没有越过曲线就一马平穿的道理,抽象依然存在)。

2,来说点具体和艺术层面的,对于具体实践中的编程编码和调试的难度也来自于组成编程各部件的固有复杂性,调试是驱动编程循环的,但语言基于数学和形式理论和图灵完备结果,平台最终是冯氏的内存加指令(大部分调试需要进入内存反工程,这影响我们不可能在一个更高的阶层上调试),平台加APP加语言运行时构成的那个内存中的巨大复杂运行时的追踪,从问题域映射到方案域一条路径上的所有细节,从搭建环境开始这条路径从开始到能看到结果很长,才能完成一次调试编码循环(devops正是为了解决这类问题,使得部分前置调试过程自动化,使得能看到结果的路径超短,不过这也是权宜。),足于把普通水平和没有耐心的人排除在外。

编程文科属性还是理科属性强一点?答案显然是后者,虽然编程语言有词法,语法,有点像作文,但实际上,跨过这些文法属性,属于理科的实验部分的属性还是比较强占比比较大,在编程中,需要不断调试,设立各种调试环境,追踪各种结果,验证想法。编程看来起像跟编译器对话,但是这跟自然语言完全不是一个级别(但是有一个例外:对于同一种抽象也存在多种表达法,类似文科中的写作文,每个人用于实现的中间过程都不相同,即抽象的多义性,但这反而正是工业编程中极力要避免的),实践的10000小时理论+"无它唯手熟尔"对于编程来说不是十分适用因为我们往往把时间浪费在重复的事情上。往往对于一门语言,学了很久的语言高级技法,说了这么久,那么高级语法可能你用不着,实践中主要碰到解决的还是几大流程结构的熟练度问题。我们有时甚至要跟{}是否配对大战一天一夜。

------ 换言之编程的专业度和难度还是十分巨大,一直到现在,我们都没从根本上改变编程的形式和本质,只是不断变换抽象和堆叠抽象。所以出现了各种其它从不堆积抽象的传路路子,试图另找出路从根本上降低编程难度的创新方法,我们一一道来。

一些旧路子,及一种云化busybox demolets的设想

在全面降低编程复杂度方面,在语言级有很多我们耳熟能详的编程流派和学说(模块化,OO,etc…)。它们只是修补解决了一部分问题,比如对于敏捷方法论:,现在的编程基础如此,“一次设计”要完成的事情要把握的抽象幅度依然很多很大更别说往后的生命期内维护,对于最基本的模块化:编程是否真的可以像堆积木那么容易。但这或许正加大了复杂度,如果说任何一个小程序都需要大量逻辑的组合,那么人类始终只有一个限制:不能一次把握的大量的规模,接口,完成一次设计,这是一对似乎不能解决的矛盾。。devopsp这类手段其实其作用并不是级极的,它属于普遍的一种降低入阶和中间层的方法,上面说到,要做到降低整个编程难度,也并非上述降低入口难度这么简单。。编程所有的问题的复杂性是来自它的规模本来就是工程级别的。。。于是人们说在形成现在编程的所有基础和编程体制中“软件无银弹”。这依旧是文章一开始提到的编程复杂固有度问题。

然后就是那些高于语言级别的:

旧一点的有visual programming+rad,trigger editor,面向搜索引擎的编程,敏捷方法,serverless编程(这只是在devops减轻了环境搭建),面向二进制编程(这类似基于接口的源码/业务逻辑抛弃型编程),我也提出过一些方法,如《一种shell programming的设想》。《engitor:demo+debug driven programming》。甚至有基于程序员的契约编程(还记得py排版空格规则都是强制的么) ,

我们对于编程实践的讨论和降低其难度的尝试在很多地方都涉及过,如《xaas,appstack及综合实践选型通史》,和《兼谈fuchsia:一种快速编程教学系统和rust编程语言快速学习项目》,以及上面谈到的二文,我们可以将上面所有旧的路子结合起来:打造一种分布式busybox和一组云化cli demolet based programming设想:bash等shell语言可以说是busybox的专用语言,它组成了cli shell tools的可“编程”环境(可调用环境更准确一点),使得运维人员和非专业人员可以以简单的命令组合搭建shell脚本程序,完成较gui环境下更自由更强大的console应用任务。其本质是类似一种在内可脚本写作的可视化编辑器环境,如游戏世界编辑器(只不过不用trigger editor,而单纯用脚本,业务逻辑已写好并提供为cli)。在《一种shell programming式编程》中我们讲到,这是一种开发与问题合一的环境,于是这里的效果几乎结合了上面“可视化,demobasedprogramming,二进制脱离业务实现级别的编程”三种效果了。而采用的bash是一种真正的非专业人员定制语言,真正的非专业人员就要使用这种去除了严肃语言特色的东西。bash甚至没有模块。但这正是它的优点,因为这对于那个调试,还可以像shell一样基于pipe based调试而不是传统语言statement和module based的单元调试。每一句返回状态才能继续,这样调试方便。前后无语义联系。一句一写的程序,而不是预先写成为单元。bash无模块也做到了控制逻辑的最终规模大小的问题(当然在bash+demolet programming这个层次上是不追求复用的,由于这个层次跟编写业务逻辑的严肃编程层断出了新的层面,因此它去掉了传统编程的难度和抽象规模固有问题)。

这里重点谈下面向接口,面向接口编程非OO语言用来实现多继承的interface关键字用于避免基于类的多继承缺陷的那一套,它更偏向指面向二进制的编程(面向组件编程面向构件编程面向积木编程),它允许业务逻辑(实现部分)与脚本逻辑分开(隔离并“抛弃”实现部分的源码,建立abi stub封装为大量二进制接口,接口专门可在另一级别被以“已部署”编程,新提出一个可编程层次,这个层次可以”无传统语法“进行,极大简化编程难度,比如允许bash轻语法语言+html标记语言这类用户级编程发生),建立接口的过程可以用类似busybox的方法批量生成。也可以是来自toolchain的一种自动支持。按二进制接口导出,最后的效果是你在类似c# ide中能实现直接查看dll透出的服务的效果。它一度被称为软件银弹真正解决法后来被脚本"源码as组件"和“面向服务,soa”这类东西模糊化。

本书第二大部分《minstack os : openaas+vscode os : debugable appliance builtin os for dever and common user》也正是为了提出一种这样的抹掉中间层复杂性的努力(它是一个三层结构:1,terralang + vscodeonline + openfaas cliiz backend, 2, distribute busybox tools,3, bash+apps+businesslogic languages+ more businesslogic demolets),并没有提出彻底的解决之法,开头就说了它只是一种降阶法并没有解决抽象规模过大的固有问题,只是现阶段它可能会工作良好,所以我们叫它暂代方案。

未来我们依然需要包括上述方案在内的其它寻求全面降低编程复杂度以降低实践复杂度的方法

一些新路子:终极AI辅助和轻理科属性编程,literate+natureprogramming

新点的有:如ai辅助编程,,codeless无代码编程,literate programming(注意我不是指现在的基于xml和描述性语言的文学编程。),这些是区别于上面不能降低编程固有复杂度的根本性创新方法。因为它不能解决了改变传统编程中二大对象人和机的根本定位,这个努力的方向只能是AI,是一开始就是人跟人之间那种智能理解辅助级别的,比如,将编程语言的形式理论根本,发展为真正自然语言识别层次。或者提供一个智能机器人,其智能能达到和你结对编程辅导的地步。

那么,编程,能否真的有一天,能达到人人对话这个级别,彻底走过人机人编译器对话的原始阶段呢?大约等到共享汽车真的能做到在人挤人的街道上正常工作的时候,这个梦想就能有实现了(我是不太相信智能汽车的,智能有些东西在任何学科包括哲学上都处在没被解决的阶段)。


(此处不设回复,扫码到微信参与留言,或直接点击到原文)

一种云化busybox demolets的设想和一种根本降低编程实践难度的设想:免部署无语法编程相关推荐

  1. 带你认识7种云化测试武器

    摘要:本篇将结合华为云优秀实践,重点讲解七种云化测试常见方法.对于测试人员了解并熟悉云化全流程持续测试,具有指导意义. 本文分享自华为云社区<云化测试七种武器>,作者: 敏捷小智. 本文首 ...

  2. 云数据库时代:企业数据架构的云化智能重构和变革(含大会PPT)

    在2018年11月16日举行的『数据技术嘉年华』大会上,我对行业近期的观察和思考做了一个总结,在此和大家分享商榷. (下载大会 PPT,关注公众号回复:2018DTC ,内容持续更新中,尚不完整) 我 ...

  3. 2019年云化国际发展趋势_2019年3种令人惊讶的云趋势-您首先在这里听到了

    2019年云化国际发展趋势 关于2019年和2020年云计算的预测开始出现,我看不到任何尚不明显的东西. 诸如"云服务的增长"和"安全性将更加重要"之类的预测是 ...

  4. 回望云计算发展 重新解读三种云服务

    本文讲的是回望云计算发展 重新解读三种云服务,云计算在非常短的时间里迅速兴起,并在个人和企业用户使用和运营计算的模式上发生了重要的演变.从概念上来说,云计算可以被视为在由虚拟化技术(虽然云计算并不总是 ...

  5. 想客户之所想 华为全栈云加速行业云化创新

    如今,行业用户从"想上云"到"真正将业务和数据迁移到云上",这中间一直存在一条鸿沟.无论是运营商.金融行业,还是政府.大中型企业,他们都拥有一套比较成熟的IT体 ...

  6. 九年双11云化架构演进和升级,打造更加完美的双11

    摘要: 12月13-14日,由云栖社区与阿里巴巴技术协会共同主办的<2017阿里巴巴双11技术十二讲>顺利结束,集中为大家分享了2017双11背后的黑科技.本文是<阿里巴巴云化架构创 ...

  7. 大型企业云化2.0的深度思考与展望

    伴随着IT新技术的发展,像虚拟化.云计算和大数据对大家来说已经不再陌生了.在企业里面进行云化实施的时候,各种新技术在优势显现的同时,随之而来的问题也比较多.上了云之后,有时候我们没有感觉到轻松反而更累 ...

  8. 阿里云微服务引擎MSE网关功能,开启微服务“大门”云化时代

    简介:微服务网关被作为微服务面向客户端的单一入口,用来处理横向的关注点,包括访问控制.速率限制.负载均衡等等.真正用起来时,我们还需要关注更多的纵向因素,例如服务发现能力.更全面的监控可观测能力.更高 ...

  9. 欢迎参与2020年云栖大会——引领企业基础设施云化

    **简介:**2020年9月18日,阿里云邀您参加2020年云栖大会--引领企业基础设施云化分会场. 2020年9月18日,阿里云邀您参加2020年云栖大会--引领企业基础设施云化分会场. 在数字新基 ...

最新文章

  1. bash參考手冊之六(Bash特性)
  2. java百度地图添加标注_调取百度地图接口,实现取自己的实时位置,然后可以在百度地图上添加信息标注...
  3. CSS 布局实例系列(四)如何实现容器中每一行的子容器数量随着浏览器宽度的变化而变化?...
  4. 初学大数据之Python中5个最佳的数据科学库的学习
  5. 1.1 linux介绍
  6. 二叉搜索树的创建和比较
  7. Windows 录音机录制电脑声音、route 双网卡设置内外网共用
  8. Latex 中文配置解析
  9. 学会有礼貌的拒绝应聘者
  10. 快对作业超级计算机,快对作业2020
  11. VC有什么用?该如何学习VC?
  12. Linux内核系统论文写作虚拟机方案
  13. 正点原子FPGA开发指南——数码管动态显示
  14. synchronized详解
  15. macos双系统 wintogo_我的 WinToGo 踩坑指南
  16. NFV 2.1安装指南之十 —— Install and Configure vCloud director (VCD)
  17. 单片机c语言实现小灯循环亮1 8个,实现单片机信号灯1-8依次循环点亮的程序怎么写...
  18. Unity菜单栏介绍
  19. 新零售时代线上线下的变革
  20. Stata: 超级强大的 gtools 命令组

热门文章

  1. 文件编码与文件的读写与0x0D0A
  2. 用JLINK烧写U-boot到Nand Flash中
  3. Python - names模块解析(海量英文名)
  4. 电子签名合同的有效期是多久
  5. matlab画椭圆抛物面参数方程,求单叶双曲面和双叶双曲面、椭圆抛物面、双曲抛物面用matlab怎么画或其参数方程?...
  6. dpdk对虚拟化支持研究
  7. 快速提高pip安装速度!一劳永逸
  8. 1011 A+B 和 C (15分)(输出格式 数据类型范围)
  9. 电商平台数据查询工具(京东数据分析软件)
  10. 【笔试】京东数据分析暑期实习