Create a new programming language?
-
mark merrens wrote:
The appropriate forum; not the Lounge!
And which forum would that be? If you are going to tell him that he shouldn't have posted here, you should at least have the courtesy to tell him where he should have posted it.
Forgive your enemies - it messes with their heads
"Mind bleach! Send me mind bleach!" - Nagy Vilmos
My blog | My articles | MoXAML PowerToys | Mole 2010 - debugging made easier - my favourite utility
Yes I agree where would be the "appropriate" forum? could you be specific please...
-
Yes I agree where would be the "appropriate" forum? could you be specific please...
Don't worry about it. The regulars think this one's fine.
Forgive your enemies - it messes with their heads
"Mind bleach! Send me mind bleach!" - Nagy Vilmos
My blog | My articles | MoXAML PowerToys | Mole 2010 - debugging made easier - my favourite utility
-
Is there a way to create a programming language without using an existing programming language? or to create it from scratch or create it in machine/binary code or assembly code? Also some other questions that are optional that you may answer: - Is there a way for a programming language to be "all-purpose"? (for example this programming language can be used to make games, models, simple applications (like calculators) or anything and EVERYTHING you can imagine) - Is there a way for a programming language to be "self-sustained"? (for example you don't need more than one language like "Lua" to run a massive game like "World of Warcraft" or "Command and Conquer" or any of those games out there or this language does not need support of any kind to run) Any answers will be fully-appreciated. :) Regards, Brandon Proud Member of "The Code Project"
I have always wanted to see a language based on the English language but without all the grammatical bollocks so that you could program almost as easily as you would speak I.E. for every value in the statement Hello my name is john count the number of spaces this would return 4 what is the length of the statement Hello my name is john this would return 21 add 5 to the length of the statement Hello my name is john and store the result in container name this would store the value 26 in the variable called name add 36 to the container name would result in 62 being stored in the variable called name. Empty the container name. would clear out the variable called name Empty all containers would clear the contents of all variables in memory. You get the idea...... The disadvantages - its quite terse and takes a lot of typing. The advantages - any idiot can walk up to a PC and provided they can read and write in the English language they should be able to begin programming. It stops the leaning towards the txt spk shortening of the English language used by mobile phone users and might actually stem the tide a wee bit. Its completely readable and pretty much self commenting, again if you can read in the english language you can read a program. It should be relatively easy to write a compiler for due to the ease of the syntax. Your thoughts?
-
Everything above machine code has been developed using lower level tools. The language is only the input, the executable is the important part at the end. C is all purpose, many would argue the .net family is all purpose and Java would be in the mix as well. Not many modern languages are domain specific, though there are some.
Panic, Chaos, Destruction. My work here is done. Drink. Get drunk. Fall over - P O'H OK, I will win to day or my name isn't Ethel Crudacre! - DD Ethel Crudacre I cannot live by bread alone. Bacon and ketchup are needed as well. - Trollslayer Have a bit more patience with newbies. Of course some of them act dumb - they're often *students*, for heaven's sake - Terry Pratchett
Nagy Vilmos wrote:
Not many modern languages are domain specific
Yeah, except the one that the entire Web is built on (HTML). And the one we use to access databases (SQL), and the one's we use to script (PowerShell, BASH, ...), and ...
-
Brandon-hbx12000 wrote:
Is there a way to create a programming language without using an existing programming language?
Yes, but implementing it may be difficult.
Brandon-hbx12000 wrote:
in machine/binary code or assembly code?
At least for version one; after that, write your compiler in the new language.
Brandon-hbx12000 wrote:
be "all-purpose"?
Only within certain limits. Make it do what you need it to do and then add features as needed or requested.
Brandon-hbx12000 wrote:
be "self-sustained"?
That depends more on what the developer using the language wants to do than on the language itself.
PIEBALDconsult wrote:
Only within certain limits. Make it do what you need it to do and then add features as needed or requested
I disagree - the most successful general purpose programming languages have a minimal set of features but allow libraries to extend the language to a degree. C, Smalltalk and LISP spring to mind.
-
Brandon-hbx12000 wrote:
Is there a way to create a programming language without using an existing programming language?
The language, yes. The compiler, well not really. When your language is sufficiently mature, you can write the compiler in your own language. :rolleyes:
Brandon-hbx12000 wrote:
Is there a way for a programming language to be "all-purpose"?
Unless the langugage is really paltform oriented, all languages can be used to do anything, But that does not mean it always makes sense.
Brandon-hbx12000 wrote:
Is there a way for a programming language to be "self-sustained"?
Again, you can do pretty much everything using only one language, provided that APIs are provided to access all you need to access. If there is no API to handle communication, then you can't reprogram WoW... Multi-language apps are so because you usually use the right tool to achieve the right task. But noone prevents you from using a screwdriver to hammer a nail.
Actually read an article recently where the author adopted a "from base" approach to language and O/S issues, I think he used an assembler though. I can't imagine any sane individual trying to write machine code. (You could even view hexadecimal as a language to facilitate entry of binary data).
-
Nagy Vilmos wrote:
Not many modern languages are domain specific
Yeah, except the one that the entire Web is built on (HTML). And the one we use to access databases (SQL), and the one's we use to script (PowerShell, BASH, ...), and ...
I dig to befer: HTML - specific to the solution - web pages - but not the content. SQL - specific to databases but not to the data stored. Scripts - specific to the OS as a maximum but not the usage. I think you are confusing what the languages do - web, db, scripts - to what they are used for - banking, retail, pron.
Panic, Chaos, Destruction. My work here is done. Drink. Get drunk. Fall over - P O'H OK, I will win to day or my name isn't Ethel Crudacre! - DD Ethel Crudacre I cannot live by bread alone. Bacon and ketchup are needed as well. - Trollslayer Have a bit more patience with newbies. Of course some of them act dumb - they're often *students*, for heaven's sake - Terry Pratchett
-
Johnny J. wrote:
Once you eat it it ceases to exist...
not necessarily. There are multiple instances per package and multiple packages per pig and multiple pigs per farm and multiple farms per country and multiple countries per planet. True, once you consume the one instance it has been freed from memory but not in spirit. You just re-instantiate another bacon object and keep on trucking.
Just along for the ride. "the meat from that butcher is just the dogs danglies, absolutely amazing cuts of beef." - DaveAuld (2011)
"No, that is just the earthly manifestation of the Great God Retardon." - Nagy Vilmos (2011) -
Is there a way to create a programming language without using an existing programming language? or to create it from scratch or create it in machine/binary code or assembly code? Also some other questions that are optional that you may answer: - Is there a way for a programming language to be "all-purpose"? (for example this programming language can be used to make games, models, simple applications (like calculators) or anything and EVERYTHING you can imagine) - Is there a way for a programming language to be "self-sustained"? (for example you don't need more than one language like "Lua" to run a massive game like "World of Warcraft" or "Command and Conquer" or any of those games out there or this language does not need support of any kind to run) Any answers will be fully-appreciated. :) Regards, Brandon Proud Member of "The Code Project"
I had a lot of fun reading this book. Constructing Language Processors for Little Languages, Randy M Kaplan. I think if you want to understand the nature of why computer languages get produced you can do so by seeing what thought process goes into a specialty language. Regarding an "all purpose" language; well there's something to be said for there being a reason in specializing. You could make one that could do everything but it would probably do everything poorly. This is sort of like asking to make a vehicle that is both a racecar and a large truck for hauling dirt. It wouldn't outrace a real racecar, it wouldn't haul more dirt than a large truck. And if you could build a racecar that could haul dirt and still outrace other racecars you could probably build an even better racecar that didn't haul dirt.
_____________________________ Give a man a mug, he drinks for a day. Teach a man to mug... The difference between an ostrich and the average voter is where they stick their heads.
-
Anyone can right a language form the ground up. You just need the instruction set for the processor. I would not recomend it though unless you are just trying to prove you can do it. If you want to make anything useful stick with the higher level languages. I think most have said yes to the all-purpose but I would disagree. The reason being is hardware related. The industry has gone through some cycles in the last decade or so that should prove this to anyone that has doubts. Web based applications stormed the industry because of the "all-purpose" aspect. One team one mission total, one failure. Web apps are great but you just can't beat a language that is talking to your specified hardware. In normal practice yes, but when you talk about speacialized hardware the all purpose languages tend to be 10 steps behind. And even when they do make those ten steps forward, it often comes with some serious baggage. Take for example parallel programming. This has been one of the main targets for the .Net framework in the more recent releases. However, things like CUDA have been perfecting it on the GPU for a few years now. This is just one example. Any time you find spealized hardware, you will often find speacialized software that will outperform the "all-purpose" software for years to come. As for "Self-Sustained", it just so happens this is related to the second "all-purpose". By adapting in other languages it is one less component that need be targets. It goes with the logic of why re-invent the wheel? Once the API is to combersome it is time to extend the so called "all-purpose" language.
Computers have been intelligent for a long time now. It just so happens that the program writers are about as effective as a room full of monkeys trying to crank out a copy of Hamlet.
Collin Jasnoch wrote:
Anyone can right a language form the ground up.
Even fixing the spelling, I disagree with that one. This one "programmer" I knew managed to break the C compiler so badly it didn't give a hint about why it was dying. He can't even code in an established language, I find it totally unbelievable he has the chops to create a language. Or at least one that makes a little bit of sense.
-
I have always wanted to see a language based on the English language but without all the grammatical bollocks so that you could program almost as easily as you would speak I.E. for every value in the statement Hello my name is john count the number of spaces this would return 4 what is the length of the statement Hello my name is john this would return 21 add 5 to the length of the statement Hello my name is john and store the result in container name this would store the value 26 in the variable called name add 36 to the container name would result in 62 being stored in the variable called name. Empty the container name. would clear out the variable called name Empty all containers would clear the contents of all variables in memory. You get the idea...... The disadvantages - its quite terse and takes a lot of typing. The advantages - any idiot can walk up to a PC and provided they can read and write in the English language they should be able to begin programming. It stops the leaning towards the txt spk shortening of the English language used by mobile phone users and might actually stem the tide a wee bit. Its completely readable and pretty much self commenting, again if you can read in the english language you can read a program. It should be relatively easy to write a compiler for due to the ease of the syntax. Your thoughts?
Member 8331185 wrote:
for every value in the statement Hello my name is john count the number of spaces
this would return 4This stretches the capabilities of a compiler beyond reason. If I count the number of spaces in the statement, it comes to 15. That's because I am only seeing one continuous run-on statement.
Member 8331185 wrote:
The disadvantages - its quite terse and takes a lot of typing.
Actually, it's quite verbose. "get answer:Hello my name is john" is terse and also requires psychic capabilities. :) (Get me the answer I want, not the answer to the question I ask. Intuitively know I meant "it's" when I wrote "its". Come to think about it, WORD is pretty good at that now.)
-
There's also garbage collection when you are through with that instance, though it's more flushing than collection.
KP Lee wrote:
There's also garbage collection when you are through with that instance, though it's more flushing than collection.
I thought the same thing after I posted. Good catch. :)
Just along for the ride. "the meat from that butcher is just the dogs danglies, absolutely amazing cuts of beef." - DaveAuld (2011)
"No, that is just the earthly manifestation of the Great God Retardon." - Nagy Vilmos (2011) -
Brandon-hbx12000 wrote:
Is there a way to create a programming language without using an existing programming language? or to create it from scratch or create it in machine/binary code or assembly code?
Yes you may do it. However it isn't, usually, a good idea.
Brandon-hbx12000 wrote:
- Is there a way for a programming language to be "all-purpose"?
(for example this programming language can be used to make games, models, simple applications (like calculators) or anything and EVERYTHING you can imagine)You may do a general purpose language. However, you know, for any task, you need the right tool. Programming languages make no exception.
Brandon-hbx12000 wrote:
- Is there a way for a programming language to be "self-sustained"?
(for example you don't need more than one language like "Lua" to run a massive game like "World of Warcraft" or "Command and Conquer" or any of those games out there or this language does not need support of any kind to run)Yes there is. However this isn't, again, a very good idea: scripting facilities usually enrich the application.
If the Lord God Almighty had consulted me before embarking upon the Creation, I would have recommended something simpler. -- Alfonso the Wise, 13th Century King of Castile.
This is going on my arrogant assumptions. You may have a superb reason why I'm completely wrong. -- Iain Clarke
[My articles]Do you know any books or references about binary or machine code? or perhaps assembly code? Like lets say a book that says a line of 1's and 0's for each command(s)...
-
KP Lee wrote:
There's also garbage collection when you are through with that instance, though it's more flushing than collection.
I thought the same thing after I posted. Good catch. :)
Just along for the ride. "the meat from that butcher is just the dogs danglies, absolutely amazing cuts of beef." - DaveAuld (2011)
"No, that is just the earthly manifestation of the Great God Retardon." - Nagy Vilmos (2011) -
Is there a way to create a programming language without using an existing programming language? or to create it from scratch or create it in machine/binary code or assembly code? Also some other questions that are optional that you may answer: - Is there a way for a programming language to be "all-purpose"? (for example this programming language can be used to make games, models, simple applications (like calculators) or anything and EVERYTHING you can imagine) - Is there a way for a programming language to be "self-sustained"? (for example you don't need more than one language like "Lua" to run a massive game like "World of Warcraft" or "Command and Conquer" or any of those games out there or this language does not need support of any kind to run) Any answers will be fully-appreciated. :) Regards, Brandon Proud Member of "The Code Project"
Go FORTH and multiply. It has everything.
-
Nagy Vilmos wrote:
Not many modern languages are domain specific
Yeah, except the one that the entire Web is built on (HTML). And the one we use to access databases (SQL), and the one's we use to script (PowerShell, BASH, ...), and ...
HTML isn't a programming language. It isn't Turing complete, and thus can't be used to implement arbitrary algorithms.
-
Is there a way to create a programming language without using an existing programming language? or to create it from scratch or create it in machine/binary code or assembly code? Also some other questions that are optional that you may answer: - Is there a way for a programming language to be "all-purpose"? (for example this programming language can be used to make games, models, simple applications (like calculators) or anything and EVERYTHING you can imagine) - Is there a way for a programming language to be "self-sustained"? (for example you don't need more than one language like "Lua" to run a massive game like "World of Warcraft" or "Command and Conquer" or any of those games out there or this language does not need support of any kind to run) Any answers will be fully-appreciated. :) Regards, Brandon Proud Member of "The Code Project"
-
Member 8331185 wrote:
for every value in the statement Hello my name is john count the number of spaces
this would return 4This stretches the capabilities of a compiler beyond reason. If I count the number of spaces in the statement, it comes to 15. That's because I am only seeing one continuous run-on statement.
Member 8331185 wrote:
The disadvantages - its quite terse and takes a lot of typing.
Actually, it's quite verbose. "get answer:Hello my name is john" is terse and also requires psychic capabilities. :) (Get me the answer I want, not the answer to the question I ask. Intuitively know I meant "it's" when I wrote "its". Come to think about it, WORD is pretty good at that now.)
-
Is there a way to create a programming language without using an existing programming language? or to create it from scratch or create it in machine/binary code or assembly code? Also some other questions that are optional that you may answer: - Is there a way for a programming language to be "all-purpose"? (for example this programming language can be used to make games, models, simple applications (like calculators) or anything and EVERYTHING you can imagine) - Is there a way for a programming language to be "self-sustained"? (for example you don't need more than one language like "Lua" to run a massive game like "World of Warcraft" or "Command and Conquer" or any of those games out there or this language does not need support of any kind to run) Any answers will be fully-appreciated. :) Regards, Brandon Proud Member of "The Code Project"
There is a relatively short and cheap bootstrapping chain: 1) Implement the simplest Forth on top of machine codes. With a bit of experience it can be done in several days. 2) On top of this Forth, implement a simple Lisp interpeter 3) Using the Lisp interpreter, implement Lisp compiler and re-bootstrap it 4) Grow this Lisp using macros to the stage when it is easy to implement any kind of compilers. This will include building parser generators (e.g., something similar to Parsec), tree visitor generator (in line with Haskell library "Scrap your boilerplate"), number of graph algorithms (e.g., dominator tree building, etc.) 5) Implement an intermediate VM using that Lisp, something similar to LLVM (i.e., SSA-based), implement a native backend for this VM. 6) Implement any language you like on top of that VM All the steps are relatively trivial and well-defined, and there is a lot of papers and books that will help on each stage.
-
Do you know any books or references about binary or machine code? or perhaps assembly code? Like lets say a book that says a line of 1's and 0's for each command(s)...
What language would you like that book in - would binary suit you? ;) But seriously: machine code is, as the name implies, machine dependend. Or, more to the point, dependent on the CPU. AMD and Intel have different machine code, as does the PowerPC line, or the various risk processors. New multicore processors have commands that none of the older have, simply because they don't have multiple cores. Basically, every CPU that comes with a new feature, comes with a new machine command, or several of them. So, if you have a specific CPU in mind, like that in your own computer, find out it's precise name, and look for books or articles on that CPU. I think I still somewhere have an MC 68000 Assembler book for the like-named processor, back from the time when I owned an AMIGA. ;)