views:

721

answers:

8

I have a friend who is blind and wants to learn how to program. I’m also blind but I taught my self how to program on an old computer with a version of gwbasic and an audio book written in 1980 which is no longer available so the way I learned is not an option. I’ve looked at similar questions but I have some unique requirements:

  1. I’ve ruled python out as a mandatory choice at least initially due to its use of indentation.
  2. Programs in the language should run easily as a console app, guis are not good for beginning blind programmers.
  3. The language should be usable with any text editor and a command line, IDE’s are often initially difficult to use with a screen reader do to the amount of options they have.
  4. The language needs to have good electronic tutorials; I am not able to spend time teaching this person everything they initially need to know although I can help if they run into problems.
+13  A: 

Why not Ruby?

  • Its command line oriented
  • It can be written in any text editor
  • Very straightforward syntax / paradigms
  • Tons of documentation / tutorials online

Sounds like a good option to me. http://www.ruby-lang.org

Derek P.
I've never used it but I'll look into it. Maybe this will be a good reason to learn it.
Jared
+1 for ruby, it's a beautiful and well thought out language. You may also want to check out rails, it's pretty fun and interesting to learn.
John T
And very often you can read it loud and it will actually make sense :)
rkj
+3  A: 

Without any direct experience myself I would guess VB.Net would be a great language to start with. First it has a command line compiler, it's capable of writing console applications, it's very verbose and it's current technology so there are plenty of electronic tutorials available throughout the web.

I found a quick tutorial on writing a simple VB.Net application with a little searching on Google: http://visualbasic.about.com/od/learnvsnet/l/blecvbnet10201.htm

Spencer Ruport
Thanks, I'll look at it. All my experience with vb was vb6 when there was no way to make console apps.
Jared
You can write VB and C# w/o an IDE and the command line compiler if its a console app which is what was mentioned.
Andy Webb
The OP didn't say it's impossible to use IDEs if you're blind. He said they're difficult to start with.
Spencer Ruport
You can write *any* language with a command line and compiler. VB/Java/C# are all very ide-centric when compared with dynamic languages.
krosenvold
I don't know but I guess VB.NET could be helpful, because it lacks the curly brackets and uses keywords instead ("end if", "exit select" ...). But I have to admit that I'm an ignorant. I've really never thought about the needs of blind people regarding programming languages.
splattne
splattne has a great point. Explicit/verbose code block identifiers (end if, exit select, etc...) would probably be much easier to deal with than brace/bracket/indent specified identifiers.
Daniel Auger
+3  A: 

The Programming Language Lua might be a good option too. Spencer had a good idea to point out that verbosity can be a plus here, languages using lot of symbols can be annoying when spoken out loud.
Lua core is simple, syntax is nice, it favors keywords over symbols ("and/or/not" vs. "&& || !", functions tagged explicitly, do ... end instead of soft braces). Like most good languages it needs only a good text editor and has a command line compiler (for all kinds of platforms).

There is a good Reference Manual and the first edition of an excellent book on Lua (by one of the developers) is available online, while the second edition (targeting the latest version) is available as PDF file.

.

I started learning JavaFX with a good, progressive tutorial (Experiments With JavaFX Script) and while this language is mostly oriented to visual effects and GUIs, the few I saw so far works well on the command line, and it displays verbose messages in case of syntax errors, that might help beginners:

Test.fx:15: Sorry, I was trying to understand the parameters of a function declaration but I got confused because you se em to have missed out ')' which is a punctuation character that should be there.
function Dist2(x1, y1, x2, y2
spaces to align arrow ------> ^ 1 error

Like Lua, it uses more keywords than Java ("function", and/or/not) while still using soft braces. Its type inference (less type declarations) is nice for beginners.

PhiLho
+2  A: 

You may have to look at the projects which T.V.Raman is working and also perhaps the tools he is using. Apart from that, I had come across this project called Voicecode(Project Page, Homepage), which is specifically designed for blind programmers. Voicecode claims that you can program in any language, python and C,C++ using its tools.

If Voicecode works for you, then python could be a good language to get started with. Also if the person is a beginner in programing, then I would suggest C or Python to be languages to start it. C is very small language, easy to master. Python does not come in your way of thinking.

BTW, please let us know whichever you found suitable. It could be helpful to someone else too.

Senthil Kumaran
A: 

I think Vbscript / VB.NET is good choice. There are not so many special characters, can be run and compiled from Notepad etc. (Vb.NET can be a bit tricky for the first setup, but maybe with the support of snippet compiler...).

Generally easy syntax without too many weird characters, also VB is generally suitable for beginners. Also it's case insensitive, that should make it a bit easier play with (especially while writing functions etc.).

dr. evil
A: 

Is there no way you can possibly get a BASIC audiobook and let him start hacking his way through BASIC?

I think it provides the most verbose syntax of all languages, so as to encourage the use of screen readers. And, if used correctly (without goto and other naughty practices) it is a wonderful language to learn as a first timer (as Python and C are ruled out).

Manuel Ferreria
A: 

Based on your initial requirements I'd recommend a language with an interactive console. This has the advantage of hearing the computer's response as soon as you press enter. Ruby could be one such choice. If your friend is using Windows, learning PowerShell could actually be a good route.

Finally, you could consider HTML/Javascript. My reason for suggesting this is that many people get motivated to learn by sharing their initial work. It's much more interesting to share a basic dynamic website than a console application which requires the other user to have an interpretor.

Saqib
+2  A: 

Hi.

I will preface my suggestion by saying that I am a blind person learning how to program so, I know something of the situation. I say that because you will probably think my suggestion is a bit of a bombshell:

Go with C or C++. I'm learning c++ myself as my first language. There are lots and lots of tutorials, lots of people know it so can provide assistance, and it's definitely text editor and commandline friendly. You can totally take C and c++ and write straight code in something like TextPad, NOtePad or EdSharp and then turn around and compile it in a command line right away. It also teaches you a whole lot about how programmiing actually works because you can be high level with it or low-level with it. Very flexible. To prove that it can be done, here's the path I've traveled with c++ over the last 3 or 4 weeks while learning it on my own in my spare time while my wife and toddler sleep.

I started out using notepad with the MinGW compiler and the command line for my first programs using the beginning tutorials at www.cplusplus.com. I use Jaws for Windows as my screen reader with the punctuation level set to all which, for those of you who don't require a screen reader, means that I hear every < , () {} " and so forth when I review my code line by line. I also have a setting enabled that tells me exactly how many blank spaces there are prior to the first character of a line since I'd like to get used to hearing this for when I tackle Python.

I then migrated to using EdSharp which is a text editor written in c# by a blind developer with great accessibility features built into the app. Your student can use either one pretty easily and they are both free. I'm now getting familiar with Eclipse and Visual Studio to see which best suits my needs since you really do, eventually , need to migrate to an IDE if you are going to do anything truly substantial. Am working my way thourhg Thinking in C plus plus by Bruce Eckle, all honor to him for a great book so generously offered for free.

What I strongly recommend against is going with anything that is too obscure, dumbed down, ETC. Go as mainstream as you can. This way you can turn him loose quickly. Get him subscribed to the blind programmers mailing list and have him check out the nonvidual development website run by Jamal Mazrui at: http://testsite.blind-planet.com/ . He'll do just fine.

Ho-Lamat hun-lahun Uoo

Ho-Lamat