A "NEW" Programming Language

So, I guess my 50 year old brain is getting the best of me. After reading through another thread about propforth, forth, etc it came to me. Why can't someone just create a programming language that works with, on and for everything? It seems the older I get the more there is to learn. You know, something like if I push a freaking button, turn on the light. If there is something in the way then turn the wheels and go around it!!! Wouldn't that be nice and all so much easier?????
Comments
-Phil
Perhaps the syntax is ugly (Pascal), it's verbose (COBOL, ADA) or perhaps the opposite (APL), it has to many redundant brackets and semicolons (Lisp, C) or not enough (Python, Spin), it has strange inconsistant things going on in it's semantics (JavaScript), it is missing features that you "know" will make programming easier(lamdas, closures, inner functions, annoymous functions, promises, parallel programming, objects, classes, aspects, templates), it's a write only language (Perl, Forth). It's to hard for beginners (C++) or not flexible or scaleable for the advance programmer (BASIC).
Use any language for long enough and one or more of the above will start to annoy you. Then when you have enough skill it happens, you design and implement a language of your own. Your own perfect language (C#, Go). And in a trice you have added another twist in the complexity of the computing landscape. Usually for litlle benifit (ADA).
Before we frame that thing I think it needs a bit of work. It needs to mention more language features that people hate and complain about and it needs to slag off more languages more vigouously. For maximum stirring effect:)
NWCCTV,
Any way,what would you like this new language of your look like? I presume it will be called "New". I'll start brushing up on my compiler writing skills:)
currently I am running away from C# (have some mental block at work so took off a couple of days) just to find myself writing a ISAM driver and a small DataBase app for the Prop.
Reinventing the wheels. Why writing a new Language? Because you can! For a programmer, besides writing an own editor - designing a own language/compiler... is the ultimate goal at all.
I like Heaters answer since I programmed all of them (and other obscura) for a long time now. Except ADA. never went there.
And I chuckeled about write-only languages... quite true.
But honestly NWCCTV - aren't them all the same?
In 1992 I was reworking Mainframe-Cobol to MicroFocus-Cobol. The goal was to run old code/logic/apps under the NEW paradigma of GUIs and event-orientated handling.
The target-OS for the client was Windows 3.1
But since then? Is the UI of a Iphone REALLY so much different for a programmer? Yeah, tons of APIs and goodies. And I love my SQL2008 R2 + Reportserver, compared to COBOL.
Yes. The handling is nicer. Codecompletion. Librarys. Objects. yada yada.
But where are those new languages really changing something? C# might be the newes Language in general use and is just a mix out of existing concepts in C, VB and Pascal/Modula. Nothing new. Basically it lookes more like C then C++ does.
I like the Propeller just because it is different. You need to think parallel to organize you project. None of the existing common used languages really do that. Threads are not the answer there and 'parallizing loops' on multicores don't hit the point either.
I think we NEED more then just a new language - we need a new view on all of it.
I am 50 also, like you and COBOL is older then I am. Still I get job-offers for it from Monster & Co because years ago I mentioned COBOL there on my resume. C is hitting 40 and all the other languages mentioned are well over their 20s.
So where are those new languages?
Enjoy!
Mike
My recent passion for Forth is that in part due to Leo Brodie's rather clear introduction of the basics of computing, inclusive of why integer maths are so useful. And there is also the fact that the 'see' word in Forth provides an immediate peek into what a word is doing. So I am getting clues to how things are constructed. Of course, it may just be that it is really a huge interactive puzzle.
SPIN, PASM, and C are important and will remain important - just because two users can more easily communicate with each other about a program. With Forth, you just may get "I dunno" as vocabularies rapidly diverge with creativity.
The bottom line? Fun is fun...
The It At human is a brain easiest subconscious at for level a us our conscious to level, level understand our seems and brain to convey may do instructions entertain very in parallelism well in and with this non-sequential a manner. sequential thought time but flow. people would find that confusing for conscious thought and certainly have problems constructing work flows in that manner.
Until we can break the paradigm or retrain the brain it may be the way things are.
Hi!
The paragraph above was wirtten in 3 word arallel - don't you read 3 word parallel? It's a new language I'm working on.
The human brain at a conscious level seems to do very well with linear processes with a sequential time flow. It is easiest for us to understand and convey instructions in this manner. At a subconscious level, our brain may entertain parallelism and non-sequential thought but people would find that confusing for conscious thought and certainly have problems constructing work flows in that manner. This may be the cause of insanity or the labeling of insanity because one is no longer to deal with the nice linear, sequential world we all live in and declare as "normal"
The machines we built are in this linear model mostly for this reason. Even when we try parallelism in a system, it breaks down into smaller subsystems that handle things in a sequential fashion. I think Chip has even alluded to this when talking about chip design. You can have multiple things happening in the silicon at the same time at one level but eventually, it breaks down to the time for a signal to propagate and you are back to a sequential process. We may just be trapped in a sequential universe no matter how hard we try to abstract it at higher levels into other paradigms. For us to describe a process to someone or something, we go down to this basic sequential process because otherwise it doesn't work.
Boil water:
clean up
turn on burner
empty pot
turn on water
place pot on burner
fill with water
get pot
turn off faucet
put pot under faucet
take pot to stove
There you go, everything you need to do to boil a pot of water! No matter what language you write it in, it won't work in that order.
My long standing, mis-guided affair with Forths.
My recent dabbling in Factor - a Forth on steroids:
[h=2]Programming paradigm[/h] Factor is a dynamically typed, functional and object-oriented programming language. Code is structured around small procedures, called words. In typical code, these are 1-3 lines long, and a procedure more than 7 lines long is very rare. Something that would idiomatically be expressed with one procedure in another programming language would be written as several words in Factor.[5]
Need a quick timeserver?
There's an amazingly large and growing library for the few Factor programmers there are.
And then there's Falcon, the everything to everyone language!
[h=2]Paradigms[/h] Falcon merges six major programming paradigms.
- procedural
- functional
- object oriented
- prototype OOP
- message oriented
- tabular programming
If you can't find something to like and dislike in this language, then you just aren't a programmer!!Then I've also been playing with R, Python, Ruby and I'm sure others. I may not be productive but I sure am CONFUSED!!
Once upon a time I used to a lot of time at my day job programming PLCs. The "language" I programmed them in was called ladder logic and it was written in a graphical manner. Made it easy to write a program that turns on a light when you push a button. I don't think it's the one true and great language but well suited for what it was intended to be used for.
Redundant and off-putting symbols aside, I'm certain I'll be sticking with C for a long time to come. It really is my perfect language.
The closet thing I've seen for a programming language that fit its intended application was Ladder Logic. It was easy enough for electricians and techs to read and program, yet powerful enough to run anything from a conveyor belt to a entire plant.
But it doesn't qualify as a programming language. In fact, I really suspect that a lot of Chinese are shut out of the whole evolution of programming languages by the barrier that Chinese characters represent. I was quite surprised to see how heavily dependent Taiwanese programmer are on Visual Basic.
Nah, more like "Doesallforallwithall"!!!!
What?!!! I don't even comment my Perl code. It's self-documenting.
-Phil
The stumbling block is requirements. "Write only" code means it was a hack job to begin with. This is due to the hacker (as opposed to an engineer) and not a fault with the language.
If one starts with proper requirements, and decomposes these down several levels until there simply a (possibly very long) list of simple functions to be coded, then coding is just a simple after thought and it DOESN'T MATTER what language is chosen. And coding is simple, and there are few opportunities for bugs. Skipping any part of this process results in trash, and is still doesn't matter what language is chosen. (although some environments claim to fix things for us, and the result is STILL trash).
ENGINEERING means we follow the process, one way or another (whether we do it consciously or not); not following the process is hacking. The whole concept of process is too new for most folks to even know it exists, it seems.
Honestly, I'm not saying you are wrong. What I am saying is when so much meta-information is required, the term "write only language" makes a lot of sense! Not necessarily a bad thing, but a very different thing when one is used to languages that are far more self-documenting.
Given I was in, "Hey! What is this Forth stuff all about?" mode, I suspect my experience was typical. Not sure the language is for me, but I was entertained and challenged. I totally see the utility of it and the appeal, particularly for those wanting to operate right on the hardware.
I would disagree with you on process being new. IMHO, the whole discussion is about lean. Process isn't lean, in that lots of meta-activity is required to engage in the primary activity.
Scope plays a part too. Some goals totally require process. For others, it can and should be entirely optional --or put better, just simple and lean. For somebody wanting to do a fairly simple thing, getting them there quickly makes a lot of sense! Doing product design? Process matters a lot more.
Edit: Really, there is a trend toward more dynamic authoring of things, a move away from deep process in cases where it makes sense. I see this happening big time in mechanical CAD right now. For years, parametric planning was emphasized and it all paid off, but for some tasks where more flexibility and dynamic decisions are required. Now those tools are being incorporated for a far more flexible process model. One can run with almost no real process, get it going, functional and useful, then either build out proper for a scaled up set of requirements, or modify to suit, maximizing human time to concept throughput. It's an interesting development. Some call it a throw back to pre-parametric design methodologies, but others myself included, are blending it in, focusing on the trade-off and when employing heavy planning is optimal and when it really doesn't add as much value, or sometimes results in losses. By way of analogy, that is what I am trying to express here for software, and is generally what I mean by lean.
Really, my comment wasn't a negative, or more properly, intended to be a negative about Forth. It really was intended to be resonant with Heater's comment "write only" which totally resonated with my experience. Forth hides a lot of stuff, leaving bare nubs. Forth itself is really lean, but working with it really isn't. And by lean, I mean the volume of data the programmer must maintain to interact.
Whereas one can maintain considerably less with, say Prop BASIC, which isn't so lean, but working with it is lean. One can progress, hack, modify, build while maintaining considerably less meta-information.
Edit: Most notably that higher volume of information required to be in the programmers head space can and does introduce considerable variances, or dialects. Something more rigid, exposing more of that information tends to solidify how things can get done, resulting in differences, not so much dialects. I found this very interesting when working with Forth so far. And again, interesting in that new perspective kind of way, not a negative way.
There are always trade-offs.
John Abshier
Perl actually has something like this, and it's used frequently for opening files:
This mother of all threats uses a low-precedence "lazy or" whose second argument gets executed only if the first evaluates to false.
-Phil
VB.Net has OrElse and AndAlso as short circuit versions of And and Or, the do come in handy at times.
C.W.
Since the Propeller Two is the only microcontroller for me, I think I have THE one true language for it. I am going to call it Spin_Itch and terminal support with it will be Pop_eye.
If Steve Jobs could do so well with a name like Apple, I am sure this will be a winner. Who cares about Ada and Babbage, the future of computer is in cartoons.