7 ms·
A programming language that is designed to be spoken. It could be great for those with disabilities.
by azhenley 8y ago
A programming language that is designed to be spoken. It could be great for those with disabilities.
- setr 8y agoUrbit defines pronunciations for all of its sigils with the goal of enabling verbal communication of its forms; however, it makes no attempt to be sensible language, its more of just random english syllables that compose without too much harshness, justified by the use of greek letters in mathematics (part of their value is they have little/no context to bring in, so you can freely build your own)
- thanksDr 8y agoI look forward to seeing what we learn from urbit ten years from now. 0=true? Crazy sigils, three ways? I just went back to their website to remember the special name they used for distributed computation, and they have introduced /even more new words and layers!/ Godspeed, you.
- michaelmrose 8y agoWhy not python? On a broader topic seems like speaking punctuation would work fine if the environment were smart about where to put it in context. Seems like there would be a ton of value in an environment that used what makes sense in terms of the programming language in terms of recognition. If a word is slightly more likely to be foo than bar but bar is an identifier maybe its more likely to be bar? Again this really seems like a case for a smart environment or even just a smart addon for an existing environment rather than a new language.
- andrewl-hn 8y agoI talked to a three different blind programmers in the last few years. They all dismissed Python and other indentation-based languages, because - surprise-surprise - screen readers don't read out significant whitespace.
- coldtea 8y agoA Python-aware screen-reader trivially could. Why would someone use a generic one for programming?
- jimktrains2 8y agoIt's a barrier to entry. It doesn't come with python, and I'd be most random developers wouldn't know of a "python-aware" option.
- coldtea 8y agoThe PythonVis community used to recommend the EdSharp editor (Windows only IIRC).
- pjc50 8y agoHow, exactly? Read out the number of spaces at the start of every line?
- svat 8y agoThe only whitespace that Python cares about (that other languages do not) is whether a line is indented more or less than the previous line (off-side rule). So the screen-reader could read out “INDENT” and “DEDENT” when the indentation changes (matching the Python lexer: http://web.archive.org/web/20180217005004/http://www.secnetix.de/olli/Python/block_indentation.hawk http://web.archive.org/web/20180217005004/http://www.secneti... / https://docs.python.org/2.0/ref/indentation.html https://docs.python.org/2.0/ref/indentation.html), or read “start block” and “end block”. This would be about as frequent as reading out (in brace-using languages) “open brace” and “close brace”.
- michaelmrose 8y agoOne could read only changes in indent.
- finger 8y agoAppleScript comes to mind. At least you can write statements as sentences.
- 0815test 8y agoFORTH and other concatenative languages are probably the closest to this. There's very little grammar to them or even need to define any custom identifiers, other than newly-defined "words"; you could probably speak out FORTH code over a noisy radio connection, and the person at the other end would accurately input your code. (It's interesting though that the author talks about the need for an "effect system for FORTH" to "understand operations on the FORTH stack" when typed lambda calculi basically give you exactly this. You can even just use postfix syntax for function application, and (optionally) numerical indexes instead of named variables to refer to active λ-abstractions (both of these as proposed by De Bruijn) and you end up with a quite minimal, FORTH-like syntax; since postfix application ( expr ) {as in `( expr )func`} essentially means "push expr on the stack", while lambda abstraction `[var] expr` is understood as "pop var from the stack and plug it into expr". IOW, "application" and "abstraction" can be paired off immediately with no need for parsing as such, thus preserving a basic property of "concatenative" languages ala FORTH.)
- saagarjha 8y agoMany of Apple's languages seem to somewhat decent for this. Swift, Objective-C, and even AppleScript rely heavily on "readable" function names.
- pjc50 8y agoI've thought about this - along with a few other changes like using '.' as a statement terminator. As others have said, Python's significant whitespace is a mess because there are syntactically important characters that not only can't be pronouced but sometimes can't even be visually distinguished. That could have been addressed by either banning tabs or mandating them like Makefiles, but allowing mixed tab and space when they're semantically different is madness. What does Python do with the various invisible Unicode spacelike characters, by the way?
- nn3 8y agoCOBOL? It has been tried before. Results weren't that great.