打算设计一门集所有语言的缺点短板于一体的语言,可能从哪里开始或者有哪些功能建议呢?
这个想法大概一开始是从某语言的变量提升开始的,刚学到那语言就觉得怎么会有这么天才的设计,真是太符合心目中的「语言的经典设计」(恶趣味角度)了。
虽然后来慢慢也理解到了这个设计的缘由,而且其实对这个语言接近 Lisp 和函数式的一些角度还是蛮喜欢的。
后来接触了一些其他的语言,例如某个 J 开头的语言,包括各种设计模式,有时候写着代码的时候,看到一些奇怪的约束和很不方便的地方,也会想,是不是可以做个集这一些短处为一体的语言呢。
现在想的话,大概想到的可能还有这些想法吧:
- for 关键字同时用于不同的循环、分支里面
- 混淆 true/false 、0 、非 0 、void 等概念
- 遍历集合的时候会改变原集合的结构
- 用 plunk 之类的字符串匹配而不是 map/forEach/filter
- 用同一个东西和语法表达列表、字典等多种数据结构,并且不关心顺序
- 每个函数都有个 this 指针
- 没有泛型,并且需要强转
- 所有的对象都可以 call ,函数也可以 new
目前大概想到的是这么多吧。
有个叫 brainfucker 的语言我记得,看懂一段用它编写的代码需要一定的大脑算力
您要找的是不是: 汇编
不用设计,已经有现成的 GO 语言了
所有的对象都可以 call ,函数也可以 new
混淆 true/false 、0 、非 0
用同一个东西和语法表达列表、字典等多种数据结构,并且不关心顺序
每个函数都有个 this 指针
我怀疑你在内涵 JS 。
"2006-01-02 15:04:05"
无论你的项目有多少行代码,你的项目文件夹里面,必须嵌套 10 倍的空文件夹,项目才能正常运行。
例如:
com/xxx/yyy/zzz/ppp/ttt/mmm/qqq/service/head/break/main.java
人才,希望设计出来,提供更多程序员职位的语言
parody 的话,可以考虑
github.com/TodePond/DreamBerd
你说得对,但是《 Golang 》是一门由 Google 自主研发的全新编程语言,语言发生在一个被称作「 goroutine 」的幻想世界,在这里,被 func 选中的人将被授予「 pointer 」,导引 GO111MODULE 之力,你将扮演一位名为「 20060102150405 」的神秘角色,在自由的 interface 中邂逅性格各异、能力独特的 struct 们,和他们一起击败 err ,找回失散的泛型——同时,逐步发掘「 panic 」的真相。
esolangs.org
去集齐这些语言的缺点吧
回答 esolangs 多少有点算跑题了
核心还是让各种语言特性相互冲突和耦合
建议直接干掉过程的形参列表,类型系统随便乱来
确实
每个变量和函数参数/返回值都必须声明类型
声明了类型但是不强制编译器检查类型
即使编译器检查了类型也不保证运行时没有类型错误
必须支持泛型
泛型必须很详细,什么也不能省
泛型不保证你没有运行时错误
泛型不能带来性能提升
代码必须要先编译才能运行
编译必须很仔细,没一个小时不能完成
编译应该是单线程的
编译也可以选择多线程
多线程编译不保证正确性
多线程编译不能带来性能提升
程序员必须手动管理内存
虽然需要手动管理内存并且要编译,但是运行时还有虚拟机
虚拟机的指令必须要是解释执行的
虽然程序员必须手动管理内存但是虚拟机实现了 GC
GC 是用引用计数
引用计数可能会有内存泄漏
程序编译之后,如果想在其他机器上运行,必须要在目标机器安装编译开发环境
动态链接库必须要完全一致
如果机器上有旧版本的链接库请先卸载
如果有新版本的也请一并卸载
如果运行不了建议在虚拟机或者 docker 中运行
环境变量不正确可能运行不了
以防外一,编译出来的程序最好是从 IDE 中启动
本语言没有规范,以实现为准
如果有新版本请以新版本为准
如果版本过新,请卸载新版本,重新安装大家都在用的版本!
代码不用英文字母,只用阿拉伯、希伯来字母这些 RTL 文字🐶
卧槽原神
这玩意不比哪种 yymm 好?
那种
数组从 0.5 开始,但可变长度列表无法用下标直接访问,需要遍历,遍历过的内容即销毁。
变量必须有一个大写一个小写一个数字一个特殊符号和一个不打印字符,总共不得高于 5 字符。
检查 HashMap 是否含某个 key 则会自动创建含该 key 的 entry,数值是 undefined behaviour.
动态作用域
写代码需要在多种不同的键盘布局间切换
有个叫 Whitespace 还是什么的语言,只接受空格、Tab 和回车三个字符。
建议 OP 借鉴下。
不太可能的, 正如不可能设计一门语言集成所有语言的优点.
建议引用第三方库只能在线引入,每次运行都得重新下依赖 x
可以混用缩进,大小括号。
fun abc()
xxxxx
}
结尾既可以给分好,也可以不给
等你的大餐,金牌大厨 netabare !
把容易引起混乱的都设计进来
- PHP 可以参考的地方是函数参数含义不要保持一致性
- Java 可以参考的就是启动让他慢
- Rust 可以参考的部分,编译让他慢
- C++可以参考的部分是规范整得巨复杂
- Go 可以参考的部分是别人给你提意见的时候不管对错就说这是你自己的,拒不接受。
- Lisp 可以参考的部分是提供一个宏,让每个使用的人容易搞自己的方言,弄个巴别塔让社区容易分裂
- C 语言可以参考的部分是 把依赖管理整得复杂点
Python 可以参考的部分,用每个语句用汉语逗号进行缩进
9.Ruby 可以参考的部分,约定优于配置,你就写一份文档,不要做任何实现,文档要以小学生二年级水平来写- 变量必须用 $ 开头
- 空格缩进对齐
- 不支持 try catch
多线程 GIL 锁定
提供并发的能力,但不提供并发控制的原语
提供文件操作的能力,但不保证可靠性,比如写操作都缓存在内存中,进程正常退出时刷盘看 黑客与画家,说是 Lisp 最好,因为它是数学不是语言,永不过时,我是欣赏不来。
还用设计啥,javascript 这不都现成儿的
不区分大小写
笑死我了,光是看到这些点已经开始难受了
你需要通过纸袋打孔、磁环穿线来编程。
直接学 perl 就好了
感觉你说的是 JS , 因为这几天在深入写个前端赶工,之前没真实上手 到不觉得。
上手写了才觉得一个语言分 严格模式和非严格,
this 指这里,指哪里。
函数创建格式 少说 3 种。
看别人源码更是头疼, 传参直接匿名函数一大串,多个参数情况下都不知道下一个参数在那个位置。
然后还有一个解构语句,花括号解构就解构吧, 还有简写方式,和非简写方式 ,绑定模式,还有默认值 等等。
后来觉得为啥单单一个解构语句都这么花,后来想通了,JS 就是怎么花啊
Perl 和任何一个 RISC 机器的汇编语言都可以,不需要发明什么。暴露了 OP 对历史一无所知。
没想到评论里获得恶意最多的竟然是 go
不觉得 js 接近 lisp...
lisp 大家说是数学但我觉得更接近工具
就是动作+参数 这部份比较类似 shell 除了回传
最怪异的还是 Javascript 吧
楼主的想法和我一模一样。
但一个语言并不是想想就能做出来的,光设计是没意义的,因为成熟的语言不止需要编译器,还需要 ide 、打包工具、系统库、三方框架等等配套,才有可能被使用,这些没几年是做不出来的,而且即使做到这个程度,程序员还不乐意学新语言。
如果你有精力可以自己研发。或者,你可以和找我,说不定我可以实现你的想法。我一直都在做语言,现在也有了一些进度,也非常乐意收集各种 idea 以提升语言的吸引力。具体可以查我之前在 v2 发的贴子。
我的联系方式:xuld#xuld.net
其实 yymm 还是比较直观的 对应英文字 除了这点以外我觉得 go 其实不错 简洁好写 写命令行工具也好写
(感谢好友 @李鼎 翻译此文) 原文链接:API Design Principles – Qt Wiki 基于Gary的影响力上 Gary Gao 的译文稿:C++…
本篇文章主要教你如何使用 Vim 分屏功能。 目录 分屏启动Vim关闭分屏分屏移动光标移动分屏屏幕尺寸 分屏启动Vim 使用大写的O参数来垂直分屏。 vim -On…
公司没有本地文件服务器, 如何用 AWS 等外部服务搭建公司内部网络来共享文件,像网络文件夹一样谢谢. zerotier ,然后 FTP 。 docs.aws.amazo…