I Made My Own Programming Language
Ғылым және технология
This was a very difficult project, but I managed to create my own interpreted programming language from scratch!
LINKS
▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
Support the channel: ko-fi.com/codenoodles
Itch.io: codenoodles.itch.io/
GitHub: github.com/OfficialCodeNoodles
MUSIC
▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
Hall of the Mountain King by Kevin MacLeod is licensed under a Creative Commons Attribution 4.0 license. creativecommons.org/licenses/...
Jellyfish in Space by Kevin MacLeod is licensed under a Creative Commons Attribution 4.0 license. creativecommons.org/licenses/...
█▀ █ █ █▄▄ █▀ █▀▀ █▀█ █ █▄▄ █▀▀
▄█ █▄█ █▄█ ▄█ █▄▄ █▀▄ █ █▄█ ██▄
Пікірлер: 244
This is such a gem of a channel and I look forward to seeing more of your content. Also thanks for the kind words regarding my series. Sorry it was finished so abruptly. I’m planning some big stuff coming soon regarding compiler theory.
@ozzyCheshire-ci3bf
2 ай бұрын
yoo hi
@AndrieMC
2 ай бұрын
you're alive?
So I can finally write spaghetti code and nobody can complain?
@CodeNoodles
3 ай бұрын
yes
@matt8ress
3 ай бұрын
fancaders will absolutely love this
@hexxt_
3 ай бұрын
@@CodeNoodles does this mean you accept that noodles are spaghetti
@Notabot-2112
3 ай бұрын
@@hexxt_ I thought spaghetti was a type of noodle. So not all noodles are spaghetti, but all spaghetti are noodles. (Or, I guess spaghetti is a type of pasta, and then pasta is a type of noodle)
@lemonindiallc7210
3 ай бұрын
@@CodeNoodlesBro I downloaded yr language but I mnt understanding its not running it is showing many errors like many programs r missing like msvcp1400.dll vcruntime1400.dill ucrtbased.dll etc can u plz tell how to rectify this
By creating a programming language you have activated the internet's trap card Someone's going to port DOOM
If you want to write a compiled language but don't want to learn about optimization, you can instead write only a compiler frontend that compiles into an intermediate representation and then let a compiler backend like LLVM handle the optimization and machine code generation for you.
@Zullfix
3 ай бұрын
I was thinking exactly this as well
@redstonewizard08
3 ай бұрын
I used cranelift when I made my language (in rust) and it wasn't too hard, you just gotta get the hang of it
@KaiHenningsen
3 ай бұрын
That, or output, for example, C source code which can then be compiled by a C compiler. Bonus: your language is immediately able to talk to existing C code.
@Azoraqua
3 ай бұрын
Might as well go a step further and use a parser generator (Bit of a joke, after all, this project is mostly for entertainment and education).
@vibaj16
2 ай бұрын
Or you can make your own virtual computer architecture and compile to machine code for that.
A return statement could be called "serve"
@CodeNoodles
3 ай бұрын
It's actually funny that you mention that, because the output function is called serve().
i have been created
@CodeNoodles
3 ай бұрын
Nice!
@baddestmofoalive
3 ай бұрын
beetlejuicing
@LeoMakesStupidThings
2 ай бұрын
Give me
Invisible ink would actually go so hard. There are 25 characters in unicode defined as whitespace which is more than enough. Edit: somewhat unsurprisingly it already exists. But the existing version uses only tabs, spaces and newlines so you could definitely get way more user friendly while still being invisible... Though still not at all user friendly
@CodeNoodles
3 ай бұрын
That's funny!
@thatcatthatalwayseatsyourc1493
3 ай бұрын
I may make this thanks for the idea
@anon_y_mousse
3 ай бұрын
Indeed there are so many esoteric languages that I'm not surprised you'd never heard of Whitespace. Though my favorite is still the one which I'll censor as BrainF***. It's probably the easiest one to write a compiler or interpreter for that can still perform useful work.
@KaiHenningsen
3 ай бұрын
@@anon_y_mousse Was that the one with the "come from" statement, or was that a different one? (Turns out, implementing "come from" correctly introduces threading. Who'dve thought?)
@anon_y_mousse
3 ай бұрын
@@KaiHenningsen You're thinking of Intercal. Though, it's not for concurrency, but a sort of backwards goto.
An alternative to having a compiled language translate to machine code is to do what Java does and have it compile into a virtual machine. Kind of a best of both worlds!
@xyangst
3 ай бұрын
worst*
@plaintext7288
3 ай бұрын
@@xyangstwhy? Is it because of development speed?
@anon_y_mousse
3 ай бұрын
@@plaintext7288 He probably means because you still have to take the step of compiling the code first and it's still slower than a proper compiled language. Though, they've made great strides in JIT development and it's not as bad as it used to be, I'd still rather use C. As far as development speed, that's a knowledge issue because once you learn the correct libraries to use to piece everything together then it's as fast to write a program in a language like C as it is in Java.
This is really cool, I tried creating a mix of python and c# a while ago, it didn't go far but I might try it again
@CodeNoodles
3 ай бұрын
That sounds really cool! If you try it again, I wish you luck!
@Shuhkky
3 ай бұрын
@@CodeNoodles thanks!
@PrivacyNProgramming
3 ай бұрын
i (kind of) did too, but uhh its based on C# and its kinda dead, i might work on it once annuals are over (cbse) but ye, its basically C# but eaiser ig idk
@Shuhkky
3 ай бұрын
@Mervin14 yeah that's fair that's kinda what I was doing but python based instead of c# based, but it would take inspiration from it
I recommend watching the VODs where "Tsoding" created porth. Porth is a language inspired by forth
Interpreted Languages like Python and JavaScript, are typically compiled to an internal byte code which is run immediately. Many interpreted languages have a read-eval-print-loop, but that is not the normal way to run code. Some scripting languages used as shells only have a REPL, such as bash on *nix or batch on dos , but these are often not thought of as "real programming languages,"
I like the scopes the syntax and the way you return values, im subscribing
That's super creative, programming languages are hard enough so making one by yourself is crazy man
Nice! It's always such a treat to see people take on this challenge. I build my own lang in C, and string manipulation definitely was a major roadblock XD. Fun watch, hope to see you update it in the future, perhaps you can move from a tree walker (running the AST) to a proper bytecode interpreter, this'll definitely make your language more speedy, even getting it at or above the speed of python!
@CodeNoodles
3 ай бұрын
Thanks, I'm glad you liked it! In the future, I may want to try the bytecode approach.
@robotnik0889
3 ай бұрын
@@CodeNoodles Awesome! Making a vm in a low level language like c++ is fun and speedy, and as a bonus, you get to reuse the parser and tokeniser!
My recommendation for your next attempt, and I hope you have a next attempt, would be to write it in pure C and aim for translating your language into C. Generally they refer to that as transpiling, but it's still technically a compiler, and it has the added benefit of being exceedingly portable because you can use cross platform libraries for all the complex bits of your language. I would also aim for writing a BASIC variant instead of a custom language, but I really only recommend that because that was the first language I wrote a compiler for having nostalgia for QBasic. As far as parsing, consider using an FSM.
9:33 but those bits are the best bits of programming videos. The "boring" bits are the most interesting because it is mostly trial and error, which is interesting because you get to see the persons thought process.
1:39 "which can cost a bit of performance, or in case of python A LOT OF PERFORMANCE" 💀💀
Python is compiled to bytecode, like many other languages do.
Well, I'm working on an own compiled esolang, called "arrowey". And I'm just compiling it to LLVM's IR and then let LLVM do the architecture-specific stuff. But I might also make it interpreted (first I have to get an AST generator), to be able to implement it in JS to run inside my own OS simulation. By the way, I'm using LARK to get a parse tree from the source code, which also made it easy to define the syntax, because I could just see the parse tree, adjust and see the new tree.
I appreciate your decision to make this in C++ instead of Python, because an interpreted language running on an interpreted language would be catastrophically slow and resource-intensive. I plan to make my own programming language someday: a fusion of Java, Lua, and some of my other favourite languages that compiles to bytecode and runs in a VM. Anyways, nice video! NOTES: The function declaration syntax reminds me a lot of Lua (which uses `function` to define a function, and `end` to finish it), I don't really see that sort of thing in most languages.
Nice project! I did write a compiler for my own language "Brackets", which generates bytecode for my VM L1VM. It was not easy to write.
if you were to try a hybrid approach then you could use zig for bytecode and rust for compalation
This is pretty cool, also you've inspired me to do something similar
automatically returning the last statement from a function is really cool. It's kinda like Ruby
i'm pretty new to programming and don't understand most of this but it sure is cool
This is a nice example of a recursive descent parser. I'm not going to lie I'm obsessed with parsers because I've made a javascript interpreter in C++. My most recent project is so painful I haven't coded in months because it scares me. I'm making a language that compiles to brainfk
@CodeNoodles
2 ай бұрын
Wow. This project got pretty complicated towards the end, but making a language that compiles to brainfk sounds brutal 💀
I am probably going to modify this to make it “normal” and see how it is. Turning a “esoteric” language into a “practical” language.
You should add a 'spaghetti' statement that acts as a goto lmao
@CodeNoodles
3 ай бұрын
That's an epic idea 😆
Just wait. Someday I'll make a game using your prog. language
Ever heard of smart pointers? Makes writing C++ code much cleaner. I usually macro the names to be shorter but they're quite nice
What is your visual studio theme? And also nice video
hey what is ur vsc theme? it looks nice
now i want library support, also the syntax is a bit werid for programers, since they have things like "eat or "server", standarding them for things like "end" or "print" would be welcome in my opinion!
omg the music at the beginning i swear it's dantdm's old hardcore music
if you wanna write a compiler you can actually just generate C you acn learn the ins and outs of pure C (no C++ BS) and make your code generator generate C that can theoretically compile anywhere (thats what nelua, nim, etc does)
only language im good at is scratch
writing a compiler sometimes is more easy than interpreter
The rotating background is really distracting, in my opinion. Thanks for your content. :)
Mrbeast wake up codenoodles posted
@CodeNoodles
3 ай бұрын
I wish 😆
@GlitchTrap12345
3 ай бұрын
@@CodeNoodles maybe someday
idk, it is a very cool video but I can't handle with this programming language. haha, I meant I only know python, js, html and css, (html and css are markup languages not programming languages). but back to the point, I like your content, it seems like to be very difficult, but you mad ea good job! a big THANKS!
I had a similar project and I used C++. It's really good if you want performance. In my case, my programming language could calculate 2^9999999999999999 in only 3 minutes. I admit that writing C++ code can be a bit slow, but for projects where performance is important, that makes all the difference.Nice video tho.
Your gonna trigger alot of Java devs with that intro
@PaulFisher
3 ай бұрын
the “jk” is that it should have been golang
@williamgill624
3 ай бұрын
"devs" 😂
@GustyCube
2 ай бұрын
Yes fr
@NS8world
16 күн бұрын
Java is my all time favourite language
I’m glad that I’m not the only one who used the word resonated
@CodeNoodles
3 ай бұрын
I know right 😆
@TimeLords910
3 ай бұрын
@@CodeNoodles when I used it it sounded like I was old
I thought you were making nood.js
I'd make my own, basic script, it's so simple that it's literally scratch but you type out the block names
Be careful with the abbreviation NS…
Wait didnt this cooy that one chef programming language? I guess this is the best language now
very cool idea. very nice video! however, the abbreviation of noodlescript is quite dangerous
Valve favourite language.
Just wanna say that that abbreviation for the logo might not be the best idea since it is commonly associated with a certain political party that rose to power in Germany during the 1930s.
whats the song at 0:22 i've heard it before but can't think of where it's from
@CodeNoodles
3 ай бұрын
It's a song from the KZread Audio Library called English Country Garden by Aaron Kenny.
@PumpkinBear
3 ай бұрын
@@CodeNoodles ty
Is this lang available for everyone to code in? If it is, imma make a game with it
@CodeNoodles
3 ай бұрын
Yes, it's on my GitHub. To make games though, you'd have to modify the language to support external packages so that you could render graphics.
Awesome can you make it oops 😅 and update it's beam compiler ? I was thinking today that which is more natural opps or functional and I found that opps is more natural. Thus feeling sad about elixir😢
Step 1 identify performance failures, barriers, and lack of situational suitability in the existing programming languages - e.g. Call speed during certain tasks; bitsize required on RAM for edge computing; etc). Step 2 locate specific features in the existing languages that are sources of failure - e.g. requirement to store a reference table of basic operations and any function specific operations. Step 3 research logic systems used in other fields and products (e.g. Different natural language structures in real foreign languages, or matrix representation and reduction in theoretical mathematics) in order to craft a list of top candidate syntax features that MIGHT alleviate your speed/bit size problem identified in step 1. Theorise the degree of improvement that you can expect to see if you used these candidates - e.g. 50% faster; 30% reduction in bit size. Also determine if you will make sacrifices in other areas of performance, or be able to maintain certain features - e.g. retain lookup of value arrays of greater than 50,000 integers. Step 4 write your new language around those candidate syntax features identified in step 3. In plain English this looks like... My current interpreter language used in my smartwatch operating system requires 30MB of active RAM partitioned in order to be available for any and all health sensor data to be processed concurrently. As a result, a larger physical RAM card is required on the watch to provide sufficient RAM for applications. I believe that by incorporating both a non-deterministic rewriting logic like Java Script and a base 20 integer structure will allow me to reduce sensor partitioning to 17MB. This reduce RAM chip size required by 10% based on modern day RAM chip standard components, further increasing the space available for the battery and therefore simultaneously provide the potential for a further 6% increase in maximum battery capacity based on modern day standard components. And then you make those things.
@lancemckenzie1074
3 ай бұрын
Your new programming language does not need to be better in every regard. It can be worse than current languages in most ways, but highly efficient in your target use case (e.g. machine text interpretation). That would make it a specialised language, and you can have many languages for different tasks. You may also create multiple specialised languages to build out a technology stack that, on the whole, provides specific performance improvements in a broader use case (e.g. A.I. text generation from natural language voice commands).
How to implement complex stuffs like networking and file system accessing etc .. ?
@BeginnersAcademy
2 ай бұрын
you'd have to implement built in functions, which can range from simple implementations like defining a global list of functions at the global scope of the interpreters variable environment/scope, or you could build a more complex library system. Either way whichever route you take youd basically just be creating wrapper functions on top of whatever I/O functionality C++ has.
I have a very crazy challenge for you, try to create a computer operating system with this language
@CodeNoodles
2 ай бұрын
I don't think I could make an operating system to begin with 😅
Is there any way to run it?
which theme do you use??
Why isnt there a langue that can be compiled and interpreted or there is and i dont know
@CodeNoodles
3 ай бұрын
You are correct. Some languages use a hybrid approach like Java.
I should learn noodlescript as my first coding language, I wanna learn one since i started what hung your videos so why won’t I start with this ?
@CodeNoodles
3 ай бұрын
I love the idea, but definitely don't. My language is extremely limited and has a bunch of little issues with it. If you want a good language to start with though, I recommend Python.
7:31 what app you used?
keep it up
I made 99 bottles in .ns and it definitely irked me lol. Minor issues I had: - early returns don't exist - numbers must be cast to a string if serving - no sleep function? - errors in the wrong place (I had an error on line 9, and interpreter kept saying error on line 11) - eat, eat, eat, eat I definitely could not make my own language though, and I found it fun digging through this! 99 Bottles Code: ``` recipe bottles(noodle num) if num 0 serve(str(num) + " bottles of beer on the wall ") serve(str(num) + " bottles of beer ") serve("You take one down, pass it around ) num = num - 1 if num == 0 serve("That's all the bottles of beer on the wall! ") else serve(str(num) + " bottles of beer on the wall! ) eat eat eat eat recipe main() bottles(99) eat main() ```
@CodeNoodles
3 ай бұрын
Thank you for trying the language out! The number outputed as part of the error message is actually an error number, so it doesn't mention what line the error occurs on. Also, the serve function can take multiple arguments like so: serve(str(num) " bottles of beer on the wall ") ^ Notice the space to separate the arguments Regardless, it's awesome you were able to get something working, despite it being quite inconvenient.
@jtnoble321
3 ай бұрын
I realized the error number wasn't a line a couple hours later 😅 And that's good to know. My biggest trouble debugging originally was I was separating variables in functions with commas, and didn't even realize your examples don't have commas
When syntax highlighting?
As a German, "NS" reminds me of something else...
Is NS used in NSURL?
When you have time, please check your 2D-minecraft repository, I made a PR but it has gone unnoticed for several months... It solves several other issues in the repository.
@CodeNoodles
2 ай бұрын
Sorry about the speed of things. I looked at your PR, and it looks good! You mentioned that Glass.hpp is needed, which is now on my GitHub, since I uploaded Glass 4.0 to it.
@TheoParis
2 ай бұрын
@@CodeNoodles Thanks! I will try and finish it soon. Sorry if I sounded impatient, I just wanted to make sure it was being looked into.
he made a programming language using a programming language
I'm making a custom compiler and for fun I'm making it in C. I understand how hard this process will be but I have to master C. I am currently fixing issues with the tokenizer.
@CodeNoodles
3 ай бұрын
That sounds awesome! I wish you luck.
If you target llvm, it's not that much more work to make a compiler.
I did this in Scratch once. It was fun even if the final result was impractical
I have no idea what's going on in the slightest
Next step: make a compiled language using LLVM.
i LOVE THIS
Which code editor are you using ?
@CodeNoodles
2 ай бұрын
Visual Studios 2022
@Lemoniii00
2 ай бұрын
Ok thx
Now make a package manager and or a way to create windows and draw to them
this reminds me of applesoft basic
Can I make recursivity with your language ?
wait a minute. you’re making a coding language with a coding language made by another coding language that may or may not be made by another coding language and that is made by a coding language made by a coder who uses a coding language?
@CodeNoodles
Ай бұрын
Codeception
What theme is that?
I feel like everyone is making programming languages now ever since that guys tutorial dropped lol
You can add something like this : Repeat Forever Script here End
now make a syntax highlighter for vscode of this language
add a language server for vim, nvim, vscode, visual studio, etc
im making a compiler btw
@TheRealMangoDev
3 ай бұрын
so far its going well but im making it in rust and bc of that… i have to fight the borrow checker a LOT.
you should've used rust
Why can't i run it???
The programming language is insanely impressive Listening to other people talk about their chatgpt conversations is really boring. It wasn't even relevant to the final idea and you attributed ideas to chatgpt that it stole from real projects (whitespace programming languages have been done before)
@CodeNoodles
3 ай бұрын
That's fair. I'll be more careful in the future about that. Thanks for the feedback!
pronoodles🙏
aleight, let's learn this code and make the programming language using this if can
the abbreviation goes hard in german bro 💀💀💀
now make a language server for it
And. I Also Wish I Can Create My Own Programming Language
now make a game with this programming language
Bro,when new Minecraft 2D video?
Woah! Now, make a noodle game engine :-)
Could've used Rust for the interpreter
Holy shit
I left when he said "interpreted"
As a java dev. Ouch.