Ask HN: What do want to see in programming language?
I'm developing a new Programming Language. And I want it to be different.
If a promising langauge is out there, What do you wanna see in it?
If a promising langauge is out there, What do you wanna see in it?
23 comments
[ 3.0 ms ] story [ 59.8 ms ] threadE.g., if you look at http://cython.org/, which direction from that "point in the manifold of possible languages" do you want to go?
The difficulty of understanding code is an entirely different matter.
So what part of that isn't fulfilled by compile time function evaluation and mixins and it's extensive introspection features? I feel like maybe you haven't looked at D quite hard enough to see why it's awesome.
Programming language design is distinctly different from programming language implementation and distinctly different from program optimization. A programming language designer need to have experience and skills in implementation and in optimization. Optimization is important because it assists in understanding the underlying concepts that need to be supported by a programming language.
Brian Kernighan, Jon Bentley, and others have long advocated for designing and implementing little languages, small domain-specific languages to solve a limited class of problems using "natural" abstractions, operations, and data. The Unix pic language is a classic example. Read the literature about "little languages"; Google is your friend. See, for example, http://broadcast.oreilly.com/2009/04/an-interview-with-brian... to learn about little languages.
What I would like to see is for you to learn about programming languages and their implementation before you rush off to design one. You might design, implement, and use a little language for a class of problems you encounter in a domain in which you work regularly. Use it to improve your productivity. Share the language with others who have the same problems to solve. Get their suggestions and feedback and incorporate them into your language system and repeat. That is likely to give you joy.
Designing a programming language is just the beginning. If your language is to have legs, you need to ensure that there are readily available implementations with libraries and operating system support for your language. You need to write papers and manuals and promote your language actively. And you need to be patient since adoption of a new programming language takes decades. And you need to be aware that language choices are often fickle.
If your goal is to eventually devise a new general purpose programming language, you need to program a lot of different problems in a multiplicity of languages and styles in order to understand what languages need. Asking HN is likely to be a sub-optimal strategy because most folks who read HN tend to conceive their problems and programs in terms of mechanisms and abstractions in existing languages.
You might want to look at the evolution of particular programming languages and the conceptual problem solution frameworks they express. Do this for several different language styles: procedural, functional, distributed actors. For example, I think the evolution of Python (including Lua and Ruby) contrasted with Perl would be quite educational.
Also, I would be cautious about trying to be different for the sole purpose of being different. Our current programming languages encapsulate years of experience and scar tissue which needs to be retained.
Look at any Java enterprise app and there will be a lot of WET cruft calling out for a DSL.
- the serialization of running tasks: http://stackless.readthedocs.io/en/2.7-slp/library/stackless...
- sandboxing and resource control of computations within the same process
This combination doesn't seem to exist yet.
For the past decades no one has been disrupting programming at a fundamental level.
We are stuck with a "program must be a bunch of ascii files edited with text editors" mindset that no one dares to challenge.
The collective of programmers suffer from an extreme case of the Stockholm syndrome.
If you are not familiar go learn about "Intentional Programming".
I recently wrote some relevant comments about it.
Here: https://news.ycombinator.com/item?id=14384269
And here: https://news.ycombinator.com/item?id=14278605
Current programming languages mean we share an ASCII language with the compilers. This creates a fundamental tension and conflict of interest between humans and computers.
It creates all sorts of artificial problems that we have spent so much time trying to fix.
If you are interested checkout Charles Simonyi's work and talks on Youtube as well.
https://isomorf.io/#!/demos
If you are interested search for "Intentional Programming".