盲人程序员如何编程?全靠每分钟450个单词-程序员宅基地

640?wx_fmt=png

昨天有人给我发了一篇文章,我一看到图就觉得很奇怪,这个人坐在一个小隔间里,戴着耳机,敲着键盘,但是他的面前却没有屏幕, 他在干什么?

他叫Tuukka Ojala, 是一个Web开发程序员,他坐在那里编程。

但是,他是一个盲人。

如何使用电脑?

盲人使用电脑都很不容易,怎么编程呢?Tuukka Ojala使用了一个屏幕阅读器的软件,可以把屏幕上的文本变成布莱叶盲文(需要特殊的盲文显示设备)或者合成的语音。 

这种合成的语音语速非常快,每分钟要说450个单词,而正常的语速是120-150个单词。

大家感受下这疯狂的语速:

对普通人来说,这语速太快了,但是Tuukka Ojala已经练出来了,这速度不在话下。 

鼠标对Tuukka Ojala来说是没用的,他主要用键盘,用箭头键/Tab键在一个窗口内移动,用alt+tab在窗口之间切换。屏幕阅读器也有一些快捷键,可以读取窗口各个部分的文本。

但是当“阅读”网页的时候,他就和普通人不一样了,因为普通人可以快速地浏览,而他不得不一行一行地去听那些文本。 

Tuukka Ojala 在命令行上花费了很多时间,除了浏览器和编辑器之外,他很少使用GUI程序,他也发现命令行通常比GUI做事情更快。 

Tuukka Ojala 主要用Windows办公,既然主要用命令行,为啥不使用Linux?  这是因为Windows 有着最好的Accessibility (无障碍访问),并且有一个开源的,很活跃的屏幕阅读软件NVDA。虽然Windows有些固有的不足,但是通过使用Git Bash,也算是有了一些补偿。

如何编程?

那他到底怎么去编程呢?  比如怎么去阅读代码?  

实际上Tuukka Ojala 必须像听小说一样去听这些源代码,如果代码库很大,他是听不过来的,在这种情况下,他必须把一些代码在脑海中抽象一下:这个组件使用x作为输入,然后返回y, 而不考虑具体的实现细节。

我觉得这是很有难度的,普通程序员拥有在代码中导航的奢侈能力,但对于Tuukka Ojala来说只好尽可能把代码给记住,他自己也承认由于看不见,他的记忆力反而发达了。

你可能觉得像缩进和代码格式化对于盲人来说是什么用处的,实际上不是这样,当他使用布莱叶盲文来“阅读”代码的时候,这能给他一个很好的感觉,让他知道在什么地方,就像视力正常的程序员一样。

另外当他把一个代码块缩进的时候,也会有语音的提示,这让他在脑子中画出一张代码的地图,所以清晰良好的代码风格对Tuukka Ojala也是一件好事。

使用什么IDE?

一年前,他主要用Notepad++,一个轻量级、制作精良的编辑器, 虽然还有一些更高级的轻量级编辑器例如Sublime和Atom,但是他的屏幕阅读器和这些工具之间没法良好协作 --- Accessibility 是头等大事。 

后来由于要开始大型的Java项目,他开始转向了 IntelliJ IDEA,从此IDEA一直是他的首选。他是他对IDE有一种根深蒂固的反感,因为他觉得对Accessibility 支持不好,并且效率低下。 

作为盲人,怎么和前端代码打交道?

前端开发是可视化的,盲人很难参与,但是Tuukka Ojala 却做过相当一部分Angular和React工作,例如他曾经花了几个星期,对一个Angular应用增加了国际化的支持,他根本不需要视觉的支持。

像Bootstrap这样的库对他来说是天赐之物,利用其中的网格系统,他可以设计用户界面的粗略版本,当然,在真正交付之前,还需要经过人眼确认一遍。这至少说明,他可以开发前端代码到一定的程度,只要不触及太多的表示层。 

刚看到这篇文章的时候觉得惊奇,看完后就觉得震撼,我脑海中想象着他编程的场景:

一边听着屏幕阅读器发出的声音,一边在脑海中建立程序的结构,思考该如何写代码,输入代码,屏幕阅读器给他反馈,然后运行,出了问题还要去调试,还得靠听......  

看起来轻而易举的事情,对他来说得付出更多的努力才行。

最后再给这位帅哥来个正脸,向他致敬:

640?wx_fmt=jpeg

文章来源: 

https://www.vincit.fi/software-development-450-words-per-minute/

往期 精彩回顾

640?wx_fmt=jpeg

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/coderising/article/details/101444300

智能推荐

在浏览器输入URL回车之后发生了什么?(超详细版)-程序员宅基地

文章浏览阅读385次。原文地址:https://4ark.me/post/b6c7c0a2.html作者:4Ark前言这个问题已经是老生常谈了,更是经常被作为面试的压轴题出现,网上也有很多文章,但最近闲的无聊..._7、浏览器输入url回车的时候发生了什么?

Linux kernel: How to debug mutex deadlock 如何调试mutex死锁_mutex debug-程序员宅基地

文章浏览阅读1.6k次。和userspace调试lock一样,主要是要:1. 找到lock死锁的地方,打印出调用栈2. 找出这个mutex目前被谁占用了 针对1:在kernel config中,Kernel Hacking这个大项中,enable跟lock/mutex相关的config,比如CONFIG_DEBUG_MUTEX,以及CONFIG_DETECT_HUNG_TASKS, 这样当死锁发生时,稍微_mutex debug

IntelliJ IDEA(2019)常用快捷键_ctrl+shift+f 在idea2019-程序员宅基地

文章浏览阅读6.4k次。  本文记录下常用的快捷键,便于使用。快捷键说明Ctrl+Shift + Enter语句完成“!”否定完成Ctrl+E最近的文件Ctrl+Shift+E最近更改的文件Shift+Click可以关闭文件Ctrl+[ OR ]可以跑到大括号的开头与结尾Ctrl+F12可以显示当前文件的结构Ctrl+F7可以查询当前元素在当..._ctrl+shift+f 在idea2019

cxf-rs 和 swagger 的点-程序员宅基地

文章浏览阅读224次。1. 从web.xml 说起 <servlet> <servlet-name>CXFServlet</servlet-name> <servlet-class>org.apache.cxf.transport.servlet.CXFServlet</servlet-class> ...

安卓手机垃圾清理神器!彻底清理你的手机垃圾!手机瞬间飞起来!_安卓手机彻底清理垃圾-程序员宅基地

文章浏览阅读2.1w次,点赞5次,收藏8次。使用安卓手机的小伙伴经常会遇到一个令人头疼的问题“手机时间一久,各种缓存数据和垃圾文件会越来越多,不及时清理的话,不见占用储存空间,而且还会拖慢手机的运行速度”,大家可能使用过很多垃圾清理软件,清理以后感觉效果不明显(我其实是想说其实没卵用~)今天为大家带来一款手机垃圾清理神器!软件安装就是高级版,所有功能免费使用!亲测效果杠杠滴!与某管家、某卫士等软件相比,这款软件不仅干净无广告,没..._安卓手机彻底清理垃圾

基于卡尔曼滤波器融合的激光IMU激光里程计学习_ieskf-程序员宅基地

文章浏览阅读3.6k次,点赞3次,收藏53次。主要学习的是港科大今年开源的LINS算法.该算法是直接在lego上面改的,主要针对的还是16线激光.算法主要的核心是在激光里程计节点, 只需要重点学习这部分就可以了._ieskf

随便推点

WEB UI设计规范_web ui 设计规范-程序员宅基地

文章浏览阅读4.6k次。Web应用界面设计规范(Design Specification for Web UI)主讲人:ARay目录:一、软件界面规范的重要性及其目的二、用户体验为何如此重要三、Web规范体系介绍四、界面设计开发流程五、应该遵循的基本原则六、界面设计规范一、软件界面规范的重要性及其目的 ①使最终设计出来的界面风格一致化,开发编码人员相互之间开发更轻松,遵_web ui 设计规范

Dll注入:Windows消息钩子注入-程序员宅基地

文章浏览阅读336次。SetWindowsHook()是Windows消息处理机制的一个平台,应用程序可以在上面设置子程以监视指定窗口的某种消息,而且所监视的窗口可以是其他进程所创建的。当消息到达后,在目标窗口处理函数之前处理它。钩子机制允许应用程序截获处理window消息或特定事件。HHOOK WINAPI SetWindowsHookEx(__in int idHook, \\钩子类型..._进程监控 setwindowshook

【iOS】Xcode9 自动化脚本打包_xcode 打包的xcarchive文件-程序员宅基地

文章浏览阅读4.3k次。由于从Xcode8开始不再支持xcrun来导出ipa包(不是完全不可用,需要手动拷贝Xcode7.x版本中的PackageApplication文件到高版本Xcode中的对应的路径下,路径地址:/Applications/Xcode 7.3.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin)。所以本文主要介绍如何_xcode 打包的xcarchive文件

Mybatis之 SqlSession简介_mybatis sqlsession-程序员宅基地

文章浏览阅读6.1k次。SqlSession 的创建需要借助于 SqlSessionFactory。SqlSessionFactory 是 Mybatis 的关键对象。每个基于 MyBatis 的应用都是以一个 SqlSessionFactory 的实例为核心的。SqlSessionFactory 的实例可以通过 SqlSessionFactoryBuilder 获得。如下图所示:SqlSessionFactory 可以理解为是创建 SqlSession 的工厂,SqlSessionFactory 是线程安全的,一旦被创建,应_mybatis sqlsession

解决Ubuntu 安装vim 的Package vim has no installation candidate问题,100%有效_ubuntu1804离线 安装vim软件包-程序员宅基地

文章浏览阅读2.9w次,点赞12次,收藏23次。当输入sudo apt-get install vim-gtk时出现了下面问题:nigel@yq-ubuntu:~/worksp$ sudo apt-get install vim-gtkReading package lists... DoneBuilding dependency tree Reading state information... DonePa_ubuntu1804离线 安装vim软件包

Android 安卓10.0无法保存图片,无法读取手机图片并显示解决方法!!!_安卓10.0调用相机无法保存图片-程序员宅基地

文章浏览阅读9.4k次,点赞13次,收藏14次。只需要在 AndroidManifest.xml (清单)文件中 application 标签中添加以下属性即可!android:requestLegacyExternalStorage="true"_安卓10.0调用相机无法保存图片

推荐文章

热门文章

相关标签