¿Cómo puedes programar si eres ciego?
La vista es uno de los sentidos que la mayoría de los programadores dan por sentado. La mayoría de los programadores pasarían horas mirando el monitor de una computadora (especialmente durante los momentos en que están en la zona ), pero sé que hay programadores ciegos (como TV Raman, que actualmente trabaja para Google).
Si fuera una persona ciega (o se estuviera quedando ciego lentamente), ¿cómo configuraría su entorno de desarrollo para que le ayude en la programación?
(Una sugerencia por respuesta, por favor. El propósito de esta pregunta es llevar las buenas ideas a la cima. Además, los lectores de pantalla pueden leer las buenas ideas antes).
Soy un estudiante universitario totalmente ciego que ha realizado varias pasantías de programación, por lo que mi respuesta se basará en ellas. Utilizo Windows XP como sistema operativo y Jaws para leer lo que me aparece en la pantalla en voz sintética. Para la programación java utilizo eclipse, ya que es un IDE con todas las funciones al que se puede acceder.
En mi experiencia, como regla general, los programas Java que usan SWT como kit de herramientas GUI son más accesibles que los programas que usan Swing, por lo que me mantengo alejado de netbeans. Para cualquier programación .net uso Visual Studio 2005 ya que fue la versión estándar utilizada en mi pasantía y es muy accesible usando Jaws y un conjunto de scripts que fueron desarrollados para hacer más accesibles cosas como el diseñador de formularios.
Para la programación en C y C++ uso cygwin con gcc como compilador y emacs o vim como editor dependiendo de lo que necesito hacer. Gran parte de mi pasantía involucró programación para Z/OS. Utilicé una sesión de rlogin a través de Cygwin para acceder al subsistema USS en el mainframe y C3270 como mi emulador 3270 para acceder a la parte ISPF del mainframe.
Normalmente utilizo voz sintética, pero tengo una pantalla Braille. Normalmente trabajo más rápido con el habla, pero uso la pantalla Braille en situaciones donde la puntuación importa y se complica. Ejemplos de esto son declaraciones if con muchos paréntesis anidados y JCL donde la puntuación es increíblemente importante.
Actualizar
Estoy jugando con Emacspeak en cygwin http://emacspeak.sourceforge.net . No estoy seguro de si esto se podrá utilizar como editor de programación, ya que parece no responder, pero no he mirado ninguna de las opciones de configuración. todavía.
Soy ciego y he estado programando durante aproximadamente 13 años en Windows, Mac, Linux y DOS, en lenguajes desde C/C++, Python, Java, C# y varios lenguajes más pequeños a lo largo del camino. Aunque la pregunta original giraba en torno a la configuración del entorno, creo que la mejor respuesta es observar cómo una persona ciega usaría una computadora.
Algunas personas utilizan un entorno de conversación, como TV Raman y el entorno Emacspeak mencionado en otras respuestas. La solución más común, con diferencia, es tener un lector de pantalla que se ejecute en segundo plano, monitoreando la actividad del sistema operativo y alertando al usuario mediante voz sintética o una pantalla braille física (que generalmente muestra entre 20 y 80 caracteres a la vez). Esto significa que una persona ciega puede utilizar cualquier aplicación accesible.
Yo personalmente uso Visual Studio 2008 hoy en día y lo ejecuto con muy pocas modificaciones. Desactivo ciertas funciones, como mostrar errores mientras escribo, porque esto me distrae. Antes de unirme a Microsoft, todo mi desarrollo se realizaba en un editor de texto estándar como el Bloc de notas, por lo que, una vez más, no hay personalizaciones.
Es posible configurar un lector de pantalla para anunciar la sangría. Yo personalmente no uso esto, ya que Visual Studio se encarga de esto y C# usa llaves. Pero esto sería muy importante en un lenguaje como Python donde los espacios en blanco importan. Finalmente, Emacspeak utiliza diferentes voces/tonos para indicar diferentes partes de la sintaxis (palabras clave, comentarios, identificadores, etc.).
Soy ciego y he sido programador durante los últimos 12 años aproximadamente. Actualmente soy arquitecto senior y trabajo con Sapient Corporation (una empresa de consultoría con sede en Cambridge que crea soluciones empresariales tanto basadas en Web como en clientes pesados). Utilizo varios lectores de pantalla, pero sobre todo me quedo con Jaws para Windows y NVDA.
He trabajado principalmente en la plataforma Microsoft y Visual Studio como entorno. También uso herramientas como MS Sql Enterprise Studio y otras para acceso a bases de datos, monitoreo de red, etc. Intenté pasar algún tiempo con emacspeak, pero como mi trabajo se basaba principalmente en la plataforma MS, nunca pasé mucho tiempo allí. También pasé un par de años trabajando en C++ en Linux; usé principalmente el Bloc de notas o Visual Studio en Windows para toda la codificación y luego samba para compartir archivos con el entorno Linux. También usé borland C para algunas cosas experimentales. Recientemente he estado jugando con Python, que como otras personas han señalado anteriormente es particularmente hostil para un usuario ciego porque está escrito usando sangría como mecanismo de anidamiento. Dicho esto, NVDA, el lector de pantalla de código abierto más popular, está escrito completamente usando Python y algunos de los participantes en ese proyecto son ciegos. Una pregunta particularmente interesante que me hacen con frecuencia como arquitecto es cómo manejo los diagramas: UML, visio, racional rose, etc. Visio es probablemente la herramienta de diagramación más accesible que existe. Pude escribir guiones de jaws para que me leyeran diagramas de rosas racionales. Utilicé una herramienta llamada T-dub (comprensión de diagramas técnicos para ciegos) desarrollada por una universidad alemana para acceder a diagramas UML 2.0. Utilicé una fea herramienta basada en Java llamada Magic Draw para realizar un desarrollo basado en modelos y participé en el proyecto androMDA y ayudé a desarrollar el generador de código .Net a partir de un modelo UML.
En general, creo que prospero más en un entorno de equipo donde puedo trabajar en mis puntos fuertes. Por ejemplo, si bien un diagrama es extremadamente útil para comunicar/documentar un diseño, el proceso de diseño real implica mucho pensamiento y lluvia de ideas, y cuando el diseño ha sido pensado, uno de tus compañeros de equipo puede ayudarte a armar rápidamente un diagrama cuidadosamente dibujado. imagen fuera de ella. La gente malinterpreta lo anterior como falta de independencia o capacidad, mientras que yo veo esto como pura interdependencia, ya que estoy seguro de que el compañero de equipo por sí solo nunca podría haber ideado ese diseño por sí solo y en -A su vez, si dependo de él para documentar el diseño, que así sea. La mayoría de los obstáculos que enfrento son la inaccesibilidad basada en herramientas. Por ejemplo, la accesibilidad de todos los productos de Oracle ha ido disminuyendo progresivamente a lo largo de los años (qué vergüenza) y un entorno de equipo básicamente me permite una capa adicional de defensa contra estos, además de mis lectores de pantalla y scripts personalizados.
Soy un desarrollador ciego y trabajo en Windows, GNU Linux y MacOS X. Cada plataforma tiene diferentes flujos de trabajo para usuarios ciegos. Esto depende del lector de pantalla que utilice el desarrollador ciego. Las herramientas de desarrollo no son completamente accesibles para los desarrolladores ciegos. Puedo escribir código y usar funciones de compilación en todos los IDE, pero hay muchos problemas si tengo que diseñar una interfaz usando herramientas de diseño como Interface Builder, XGlade u otras. Cuando estaba desarrollando con Borland Delphi podía agregar un control, un botón por ejemplo, y podía modificar cada atributo visual del control usando la ventana del inspector de objetos. Muchos IDE utilizan ventanas de inspección de objetos para modificar atributos visuales y no visuales, pero el problema para un desarrollador ciego es agregar nuevos controles porque el método para agregar un nuevo control consiste en arrastrar y soltar un control desde la paleta al lienzo. Visual Studio 200x utiliza métodos alternativos para hacer esto, pero la interfaz del IDE cambia en cada nueva versión y esto es un gran problema porque los lectores de pantalla para Windows necesitan soporte especial, mediante scripts, para identificar cada área de algunas aplicaciones no estándar. Un desarrollador ciego puede utilizar Visual Studio 2008 con su lector de pantalla, pero cuando aparece una nueva versión de este IDE tiene que esperar una nueva versión de scripts para esta versión del IDE. Xcode con Interface Builder aún no tiene alternativa para arrastrar y soltar tareas. Se lo pregunté muchas veces a Apple pero están trabajando en otras cosas. Publiqué 3 aplicaciones en la App store (Buscaminas accesible, Fruitmachine accesible y Programar a ciegas RSS) y tuve que diseñar toda la interfaz por código. Es un trabajo duro pero puedo gestionar todas las funciones de cada control. Eclipse tiene un editor de código accesible, pero otras herramientas de desarrollo como la consola de depuración, los complementos para el diseño o el área de documentación presentan problemas para las herramientas de asistencia para usuarios ciegos.
La documentación también es un problema para los desarrolladores ciegos. Muchos ejemplos y demostraciones utilizan imágenes para mostrar la explicación (establezca la configuración del entorno como puede en la imagen)
Creo que la cuestión no es ser ciego. La cuestión es que las empresas y los grupos de desarrollo piensan que la accesibilidad afecta al software final pero no afecta al software en desarrollo. Creen que un usuario ciego debería ser un cliente, pero un usuario ciego no puede ser un compañero de desarrollo.
Las asociaciones de ciegos piden accesibilidad para productos y servicios pero se olvidan de los desarrolladores ciegos. Las personas ciegas pueden trabajar como abogados, periodistas o profesores, pero un desarrollador ciego es un concepto extraño incluso para los ciegos. Muchas veces me siento solo porque algunos amigos míos ciegos no pueden entender mi trabajo.
Puedes leer mi opinión sobre este tema en este artículo, en español, en mi blog http://www.programaraciegas.net/2010/11/05/la-accesibilidad-en-crisis-para-los-desarrolladores-ciegos/ Hay una herramienta de traducción en la página web. Lo siento pero no lo traduje.
Emacs tiene varias extensiones para permitir a los usuarios ciegos manipular archivos de texto. Tendrías que consultar a un experto en el tema, pero emacs tiene capacidades de conversión de texto a voz. Y probablemente más.
Además, está BLinux:
http://leb.net/blinux/
Linux para ciegos. Existe desde hace mucho tiempo. Más de diez años creo, y muy maduro.