Как стать автором
Обновить

Комментарии 32

«Во время работы незрячие программисты не пользуются выравниванием кода. Вообще. Мы расставляем все отступы уже после написания программы, для тех, кто будет работать с ней визуально»

Ерунда полная. Потом вот от таких нескольких людей формируется мнение о всех незрячих. Ерунда полнейшая, у каждого индивидуально. Я вот пишу на python, и всегда использую отступы,, да и на C++ использую, да и на php с html использую, с ними гораздо проще следить за уровнями блоков, чем разбираться в каше к какому блоку принадлежит та или иная строчка. И тот пример с чтением тоже ерунда. мало кто так использует скринридер, чтобы он читал абсолютно каждый символ. чтение таких символов как скобки, фигурные скобки, двоеточие и прочие не нужно. И так понятно где они стоят. А когда нужно проверить именно конкретный символ то только его и смотрят, а читать все время все символы ерунда. Ну и с пробелами тоже ерунда. В итоге несколько публичных незрячих программистов вводят в заблуждение зрячих людей о манере работы всех незрячих программистов.
Вот полностью поддерживаю.
А самое интересное, что одни и те же заблуждения переходят из одной статьи в другую.
Согласен. Все такие статьи как под копирку, будто все их пишут из одного и того же источника, только слова немного переставляют. Всегда одни и те же утверждения будто так и только так удобно.
Скажите пожалуйста, а как происходит у вас процесс отладки кода?

В невизуальном режиме код можно отлаживать кучей способов. Вот как, например, у меня это происходит:


  1. Простой запуск кода, пока не получишь нужный результат.
  2. Тесты. Юнит, функциональные и т.п.
  3. Ошибки, выводимые статическим анализом + компилятором в зависимости от языка.
  4. Синтаксические ошибки может и ide подсказать.
  5. Дебагер. Лично я для php пока xdebug так и не освоил. Всегда хватало функции dd плюс все предыдущее. К тому же есть сомнения, что xdebug заведется на связке PHPStorm + wsl2 + docker. Но я надеюсь, что в обозримое время устраню этот пробел. :)
Я тоже поначалу прогонял свои проекты через разные анализаторы, flake8, pylint, много встречал интересных советов там даже на работающие правильно куски кода, но как писать более правильно. Многие советы из этих линтеров взял на вооружение и стал сразу применять в своем коде. Потом перестал этим заниматься так как занимает много очень времени, а смысла большого для своих мелких проектов нет кроме самообучения и повышения качества кода. Потом на фрилансе когда получил один проект, он вырос в довольно большой объем, около 20000 строк кода примерно сейчас, причем проект еще не завершен, реализовано наверно половина, может чуть больше. И это весь код мой, никакого генерированного от фреймворков, таких как django, так как проект не веб пока, делается как локальная программа с GUI на wxpython. Хотя в будущем есть планы по переводу его на веб часть с django. Так вот просто не хватает времени на линтеры, хотя и хочется снова их использовать. Может еще что новое узнаю. Но пока ограничиваюсь tracebackами если есть ошибки, и побольше гоняю программу в реальной работе, тестируя ее работоспособность в различных вариациях, но бывает конечно когда не все удается предусмотреть и от заказчика прилетает файл ошибок с tracebackом. Специально сделал простенький bat файлик, чтобы на время пока проект не завершен все ошибки скидывались в файл, который и присылают мне на изучение и исправление.

Я говорил скорее об анализе типов. В статически типизированных языках, как правило, этим занимается компилятор. А для моего основного php можно прицепить статический анализатор, который еще на стадии CI запретит передавать int в строковый аргумент и вызывать метод на nullable значении. :) Это дает дополнительные гарантии, хоть и требует чуть более кропотливого написание кода.


А вообще, если честно, я в том числе уже с трудом представляю разработку проекта и без тестов. Те же функциональные тесты чаще всего немногословны и при этом покрывают основную часть возможностей системы. Так что такие дополнительные инструменты бывают очень полезны, особенно на длинной дистанции.

Ну в python внедрили аннотации типов, но благо их применение не обязательно. Да иногда конечно указание типов полезно, возможно, я даже пробовал начать их применять, но чаще это лишние затраты времени, ничего мне не дающие. Я начинал программировать с C/C++, как-то привык контролировать все типы, что создаю. Да там их проверяет компилятор, но вот не знаю, может это выработалось на подсознательном уровне или может это мое субъективное мнение, но и в python я всегда сам знаю где какой тип у меня и без указания. Единственное где может возникнуть вопрос — это получение данных из импортируемых библиотек, но и там если я не правильно начну обрабатывать возвращаемый тип — сразу вылезет traceback, благо python хоть и динамический, но со строгой типизацией, так что такое сразу вылезет. А иногда наоборот использую возможность динамической типизации в своих целях, после плюсов где надо писать зубодробительные шаблоны, тут все получается быстро и просто. Ну снова видимо повторюсь, каждому свое. Для меня переход со статической типизации на динамическую увеличил продуктивность работы. Вполне согласен, что у других может быть наоборот.

Не знаю, разрабатываете ли вы один или в команде. Для хотя бы средних кодовых баз, где ты писал только часть, типизация помогает быстро понять, что принимает и возвращает метод. Плюс отловить какие-то базовые ошибки. В php почти во всех библиотеках указаны типы. Даже когда сам язык не позволял делать это нативно, типы аргументов прописывали в комментах к функции. Плюс в статическом анализаторе можно выставить уровень строгости. Например, для моего текущего проекта я выставил его на 3. Т.к. при 2 он уже требовал, чтобы все поля класса без дефолтных значений инициализировались через конструктор, на что мы пока не готовы.

Ну на C++ работал в команде, но там понятно.
А python все пока сам, как-то с командой не складывается.
А насчет docker. Сейчас тоже вожусь с одной темой, специально для этого еще изучаю основы nodeJS. Так вот там тоже docker. А точнее vue-storefront. Так с ним вообще не понятное. vue-storefront-api завел нормально, причем как на debian в виртуалке, так и на windows. А вот фронтенд часть vue-storefront клиент для браузера который, так и не могу никак завести, ни на windows, ни на debian. Разработчик, от которого пришла сборка docker-compose со всем необходимым все заводит на ubuntu и вроде все просто, а у меня на debian никак. Неужели между разными линуксами тоже такая проблема совместимости, я вообще думал docker для того и создали, чтобы избавиться от проблем совместимости на различных платформах, не даром у него внутри свой образ линнукса разворачивается, но вот что-то никак.

Я работаю с докер в ubuntu, установленной на wsl2. Вообще в докере можно много чего накрутить, что потом будет плохо переноситься. Но мб и вам такая связка подойдет. Или дело не в разности системы.

Да подошло бы, сам хочу винду десятку, чтобы wsl2 заюзать. Но для этого надо ноут новый прикупить, никак не соберусь. Мой старичек с windows 8.1 уже реально слаб для этого, он и виртуалку с линуксом крутит уже в напряге, а еще и докер при этом. А я еще как-то умудрился запустить докер в виртуалке и пока он билдился еще докер в винде, там по скайпу с расшаренным столом пытались разобрать мою проблему. То что это было жутко тормознуто говорить не буду, 2Гб оперативы на виртуалку при полном объеме в 4Гб с двумя запущенными докерами это жесть =)
Ну в простых случаях print искомых данных в ключевых местах. В более сложных случаях делаю специальные тесты, чтобы проверить и отладить работу отдельных функций. Но в большинстве случаев стараюсь разбивать код на мелкие функции, чтобы каждая занималась только одной определенной задачей, насколько это возможно. Так и проще отлаживать просто по результатам tracebackа.
Да и про зрячих тоже ерунды много, а именно:
Что поделать, если у современных разработчиков консольные редакторы вызывают священный ужас, а название Vim у них ассоциируется со средством для мытья посуды»


Многие любят Vi/Vim, без всяких священных ужасов.

Работая вместе с другими программистами, я частенько замечал, что у меня процесс написания кода идет куда быстрее, чем у коллег. В немалой степени это происходит потому, что я многое держу в голове, и мне не нужно постоянно проверять данные.

Хорошие программисты всегда погружаются в работу и держат все в голове. Без этого они не смогли бы стать хорошими программистами.

Кроме того, с таким приложением гораздо труднее допустить опечатку: программа четко озвучивает все вводимые символы и не дает перепутать кириллическую «с» с английской «си» или одинарную кавычку с апострофом».

IMHO опечатки — это уже на уровне тактильной работы с клавиатурой. Кроме того, при слепой печати, ты всегда смотришь на экран и сразу все видишь.
Согласен с вами, тем более что у меня есть с чем сравнивать. Изначально я программировал зрячим, а зрение потерял уже во взрослом возрасте, а не с детства. Так что да, какие навыки работы были со зрением, так большинство осталось и без. У зрения есть одно преимущество, когда надо вносить изменения в несколько блоков кода сразу, расположенных в поле одного экрана, то удобно видеть сразу весь экран целиком и вносить правки в другой блок кода, основываясь на другом. А без зрения приходится чаще скакать между ними или чуть больше запоминать, но опять же это не критично.
Ну про отступы правда, особенно, если учесть, что IDE сама все выравнивает, а вот проговаривание пунктуации, я лично, всегда включаю. При чтении обычного текста это конечно исбыточно, но читать код с включенной пунктуацией значительно удобнее.
Ну а я не считаю, что удобнее. Я и сам знаю где какие знаки стоят исходя из самого кода, а если где-то синтаксическая ошибка и надо проверить правильность знаков — тогда можно и по символьно проверить, но это бывает все же не часто. Так что как я и писал — у каждого индивидуально, у каждого свое удобно. А в таких статьях всегда почему-то говорят про всех незрячих. Пускай тогда так и пишут, что конкретно вот этому товарищу из Финляндии удобно так, но это ничего еще не значит что так удобно всем. Ну это так, мое имхо.

Поддержу. Отступы в коде — это де-факто отраслевой стандарт. Их чтение я, например, обычно выключаю. Но при дебаге или работе с yaml или python возвращаю обратно. И озвучиваются они либо звуковым сигналом, высота которого зависит от уровня вложенности, либо сообщением вроде "4 spaces, 2 tabs" и только при переходе на другой уровень вложенности. Так что оно почти не мешает.

Это перевод?

Это компиляция нескольких статей, плюс мб что-то от себя. Многое взято отсюда

Спасибо

Если однострочные электромеханические брайлевские дисплеи стоят так дорого — не лучше ли вместо них сделать многострочный брайлевский дисплей по технологии принтера? Тут много вариантов — можно печатать на бумаге, а можно — выдавливая точки с нагревом на многократно-используемой зацикленной полимерной ленте, которая потом стирается прокатыванием между нагретыми валиками. При достаточно большом размере такого дисплея-принтера так можно полностью воспроизвести экран обычного монитора.

Лаг слишком уж огромный, в современном то мире сидеть ждать пока оно там прокатает ленту

Тоже об этом подумал во время прочтения. Но это громоздко, к тому же сказывается на продуктивности.

Не знаю, как было раньше, но сейчас продукты jetbrains вполне хорошо доступны.

Раньше они приобретались не по подписке.

Про Mac и VoiceOver — как и для зрячих — сплошная вкусовщина. Я на маке с VoiceOver программирую C/C++, Objective-C, Swift, Java, Python… Про IDE от JB— просто ложь, всё там норм с A11y.

Представьте какого слушать обычную после такого зачитывания, если даже мне после 1.5x на ютубе надоедает слушать обычную медленную речь

Сложно поверить, однако это есть здесь и сейчас. Казалось бы что может связать слепого с программированием?? Ответ прост - болшое желание заниматься любимым делом и помогать людям.

Незрячим намного проще работать с компьютером, нежели, например, самостоятельно передвигаться по улице. :) Так что эта область относительно других очень доступна.

У многих людей на фотографиях глаза как будто совсем запавшие куда-то внутрь — это причина слепоты или следствие слепоты? Глаза вот такие, поэтому слепой, или слепой, глаза не используются, около-глазные мышцы атрофируются и не держат глаз в правильном месте?
Зарегистрируйтесь на Хабре, чтобы оставить комментарий