EEVblog Electronics Community Forum
Products => Computers => Programming => Topic started by: SiliconWizard on October 22, 2023, 03:00:18 am
-
It's been a while... so, it's time for a new programming language. I think this one's gonna blow you away.
Yes, it's just as cool as it sounds. Uiua.
https://www.uiua.org/ (https://www.uiua.org/)
-
at least "+" is add.. or is it that + is add and + is a variable name, or something
-
I find it extremely funny that you cannot read about the language in your browser unless you have JavaScript enabled.
As to blowing me away... nah. Brainfuck is way superior in every way. Using underscore instead of nested array brackets to define two-dimensional arrays? Using ' ' (U+2008 punctuation space) or '‧' (U+2027 hyphenation point) would have been innovative, and '‿' (U+203F undertie) would have been elegant; underscore lacks any kind of innovation, style, or finesse.
Using '․' (U+2024 one dot leader) as the second dimension separator , '‥' (U+2025 two dot leader) as the third dimension separator, and '…' (U+2026 three dot leader) as the fourth dimension separator, would have allowed up to four-dimensional arrays instead of just the current two.
Naming the language 'Uiua' instead of say '⁓' (U+2053 swung dash) or '⁃' (U+2043 hyphen bullet) shows a fatal lack of imagination, in my opinion.
-
TL;DR.
Like Python and other modern languages, I hope it follows their nosense behaviour, like getting broken by mixing tabs/spaces or non-matching identation :)
I always end rewatching this masterpiece:
https://www.youtube.com/watch?v=vcFBwt1nu2U (https://www.youtube.com/watch?v=vcFBwt1nu2U)
-
TL;DR.
Like Python and other modern languages, I hope it follows their nosense behaviour, like getting broken by mixing tabs/spaces or non-matching identation :)
Never forget the very common place where different types of whitespace are semantically significant. In makefile syntax a tab character has a different meaning to one or more space characters.
Long live ASR33 teletypes :)
https://www.gnu.org/software/make/manual/make.html#Rule-Introduction (https://www.gnu.org/software/make/manual/make.html#Rule-Introduction)
-
Unicode General Punctuation block adds twelve more distinct whitespace characters, from ' ' (U+2000 EN QUAD) to ' ' (U+200A HAIR SPACE), ' ' (U+205F MEDIUM MATHEMATICAL SPACE), which gives plenty of opportunities for new programming language designers.
When someone designs a language where one uses Unicode combining diacriticals (U+0300 to U+036F) for operators applied to objects (obviously represented by single-character variables for brevity; for example, ̾ applied to ℄ would be written as ℄̾), I might take notice.
-
Unicode General Punctuation block adds twelve more distinct whitespace characters, from ' ' (U+2000 EN QUAD) to ' ' (U+200A HAIR SPACE), ' ' (U+205F MEDIUM MATHEMATICAL SPACE), which gives plenty of opportunities for new programming language designers.
When someone designs a language where one uses Unicode combining diacriticals (U+0300 to U+036F) for operators applied to objects (obviously represented by single-character variables for brevity; for example, ̾ applied to ℄ would be written as ℄̾), I might take notice.
Unicode is, in general, a can of worms surprises.
https://www.trojansource.codes/ (https://www.trojansource.codes/)
https://queue.acm.org/detail.cfm?id=3478522 (https://queue.acm.org/detail.cfm?id=3478522)
-
Unicode is, in general, a can of worms surprises.
Absolutely.
It is excellent for visual representation, but horrible for exactness or distinguishability of words/phrases/tokens.
Very good for fuzzy use like conveying human languages, horrible for exact uses like identifiers, passphrases, tokens, programming languages.
Can you tell the difference between "finance" and "fⅰnance"? I can't. (The second letter of the latter is U+2170 small roman numeral one, from the Unicode Number Forms block, and thus not caught by language-block Unicode filters.)
-
It's been a while... so, it's time for a new programming language. I think this one's gonna blow you away.
Yes, it's just as cool as it sounds. Uiua.
https://www.uiua.org/ (https://www.uiua.org/)
APL + Forth, my misspent youth languages.
Yummy!
Order of execution is a bit surprising:
/+.
duplicate then sum-reduce
/+
.
sum-reduce, then duplicate.
It's probably following a modified form of APL rule.
-
It is fun creating new programming languages. Lots of languages have grown by borrowing ideas first pioneered in a different language. Depending on how the interpreter is written, it might be good for embedding in other applications.
As a matter of taste, I dislike languages that have high-level constructs that are built into the language itself. I'd rather have the language have powerful fundamentals for designing libraries and then high-level constructs can be included in the libraries. It is a preference, not some absolute. And what is the best fundamentals is a challenging design question. But it allows for creating a large application in a language and not having to stop and re-write it for a new language feature provided in a different language. Seeing a feature of "audio" being part of the language, causes me to loose interest here.
-
It is of course largely a matter of taste and preferences, although arguably some programming languages have taken a very, uh, odd direction.
Yes it appears to be a fun activity. Just realize that most attempts are ending in the trash bin, and probably most of them do not deserve any better.
It's just that with the Internet and the habit we got to publish just anything because it's easy and cheap (or free), a lot of stuff we would otherwise have just worked on and kept for ourselves ends up for everyone to see, even those that don't care to. :popcorn: