dexscript / design

DexScript - for Better Developer EXperience
http://dexscript.com
Apache License 2.0
4 stars 0 forks source link

Motivation of DexScript #4

Open taowen opened 5 years ago

taowen commented 5 years ago

DexScript

One programming language plays 3 different roles: it connects the machines, the developer and the team. There are serious flaws in existing programming languages for these roles. If we can solve the 3 problems listed blew, it does not only make the developer experience superb, it will certainly have substantial return financially.

Problem of Accountability

The biggest crisis of the software development is the lack of accountability. Ideally, there will be one team to be accountable for the whole thing, then they can delegate responsibilities to lower level teams like what was promised by structured programming. Instead, what we are facing in the micro-service world is the responsibilities are relayed from one to many other in a fragmented way, causing great communication overhead for the business owner. And more importantly, this leaves no one can be accountable for the end result.

Why this is related to programming language? Because every function, every class we write is about breaking down the problem. Language is not just about describing the logic, it also shapes our worldview on how to break the big thing down to small things, and how to put them back together.

Accountability problem is elaborated in #17

Problem of Readability

It is often we need to read a lot of code to find out what we want. The information density is low. It is often twisted to follow the causality in the code. Code reuse inevitably will hurt the readability, as you need to skip the code irrelevant to your use case. Non-functional requirements entangled with already complex functional logic. Error handling is a common problem to make the code unreadable.

Making code readable is more than naming your variable properly. The programming language needs to provide construct like co-routine, AOP, multi-dispatch to allow certain kind of coding style.

Readability problem is elaborated in #10

Problem of Heterogeneous Computing

Parallel or distributed execution in the mainstream programming language is implemented as compiler vectorization hint or library. Mainstream programming language largely resembles the worldview of PDP-11 with just one sequential CPU. Nowadays, It is very common to have a different kind of execution engines (SIMD, GPU) in the same machine, and it is more and more common to utilize more of them in one piece of software. And the memory model is no longer just one big heap, there could be multiple stages of heap for multiple executors. The programming language should provide a more faithful abstraction of the actual execution device, instead of constraining the thinking and expression in an out-dated computation model.

Heterogeneous computing problem is elaborated in #12

The Vision

The success of dexscript looks like this

In the end, it is all about readability for humankind. You can inspect the code from different conceptual levels, and reason about its correctness (compliance with your mental models) without hurting your eyes and brain.

jiji879 commented 5 years ago

这四个问题是从哪个角度归纳的呢?如果是软件本身面临的整个问题域,协作和可读性可否统称可维护性的范畴,如果要分开说,是不是还需要加上 development 和 operation,毕竟软件要面临的还有开发效率工具、运维设施等方面

taowen commented 5 years ago

这个不是归纳的出来的,只是从现有的编程语言的实践里看到的几个最痛的点。协作比可读性的范围更大。可读性我认为是在圈定好范围之后,在这个范围内下如何发挥的问题。而协作是关于怎么画这个圈才能责任担当的问题。operation运维,这个我涵盖到了协作的范围里了。