ontologiae
So frameworks try to manage this gap, and the only solution, IMO, is to invent language that integrate more advanced semantics to avoid the necessity of frameworks
* You can set a color for each tab, so you instantaneously target the good ones
* You have an history replay
* Picture integration. Useful to visualize data from sql query in my psql shell
* And some others I forgot.
I hope that more and more, there will be linux's native alternatives when I'll switch the day after the hypothetical death of my late 2011 macbook
For instance, you can define a dynamic inheritance : your inheritance can be defined by a function which return an object - so, a prototype - among several.
The author of this language explain me that Self was one of the most important day in his life ;-)
So, of course, you had a wonderful career, but it doesn't prove that you write efficient code
[1] http://www.rntz.net/post/against-software-development.html [2] http://tonsky.me/blog/disenchantment/
Janus Cosmological Model Resolves the Mystery of Dark Matter [pdf]
They also implemented the most part of the Cypher language and it is possible to write PL/Pgsql function with Cypher's query inside.
AgensGraph is Apache 2.0 licence.
AgensGraph: A Graph Database on Top of Postgresql with Cypher Support
It implies an architecture model where you put the business logic and type safety in the RDBMS.
It reduces the number of layers for a lot of functionalities.
Actuals programming language are based on a "forklift paradigm" : you describe the path of a forklift in a virtual warehouse where data's are in some places and your forklift move them from places to places. So a natural language isn't design to express this kind of semantic.
In PPIG ( Psychology of Programming Interest Group ) 2006 was published a very interesting paper where is studied the metaphors which was shared by the core java library authors, the mental model said in another way. It reaveals very interesting facts : Programmers tend to think the world in term of Belief-Intention agents. Agent are members of a society who trade and own datas and are subject to legal constraints. A method calls is a speech act. The execution is mentalized as a journey in a a spatial world. Etc. There's a lot of metaphors like that, and it reveals tracks to conceive a more high level language.
So there's a lot of work in this field (Behavior-Tree based language, time dimension include inside the semantics, etc.).
Note that it is also possible to express non ambiguigous semantics in natural language : Attempto Controlled English is an exemple [2].
Here an toy example of what you could do with this language :
"MyWebPage is a webpage. MyWebPage contains a textfield which a logical name is-named NameTextField. His label is "Name". MyWebPage contains a button which a logical name is-named SubmitButton. His label is "Submit". If User clicks on Submit and NameTextField is empty then NameTextField ' s css class becomes AlertEmptyInput. "
[1] http://www.ppig.org/sites/default/files/2006-PPIG-18th-black... [2] http://attempto.ifi.uzh.ch/site/
Fantasy World OCaml
http://chaudhuri.info/misc/fwocaml/
What we would dream about OCaml
- A very clever and complete type analysis. The compiler can thus optimize at best the code without runtime type-checking code.
- If possible, a flow analysis : By analysing the bounds of each function, compiler is able to remove a lot of unused code. For instance, if a variable is defined by t = 2*n and long afterwards, there's a test which check primality of t, the compiler can remove the test.
- Compile code by rewriting algorithms that "takes in mind" locality of memory, ie. all things described by U. Drepper in "What every programmers should know about computer memory", ie2. rewriting algorithms to avoid cache miss, etc...
- Automatic template-like mecanism : the compiler is able to make partial execution of the code, even in array, so all the code which can be calculated because you have the datas should be directly compiled. Imagine you have a regular expression library and you write your regexp in your code (just the regexp) : the compiler should be able to produce an automata.
- It is also said : be able to use SIMD instruction.
Because of this, it is better to compile a high-level language with a very clean semantics : you can much easily reason about your semantics and more easily rewrite some algorithms.