J для смертных. Заключение
Предыдущая статья цикла J для смертных. Коробки и циклы
Советы
Хотите узнать секрет того, как хорошо писать статьи? Напишите 500 статей
Roger Hui
- Помните, что исходный код читают гораздо чаще, чем пишут. Для J это особенно актуально.
- Давайте глаголам значимые названия. Не используйте имена типа v1, v2 и т.п.
- Обязательно пишите комментарии для каждого глагола с примером вызова глагола.
- Обязательно пишите юнит-тесты.
- Ставьте в тацитных глаголах пробелы и скобки даже там, где они необязательны. Выражения
+/:+*:\~1:
и + /: (+ *:\~ 1:)
вычисляются хоть и одинаково, но последнее читается легче.
Здесь необходимо отметить, что код гуру-программистов на J нередко нарушает все указанные выше рекомендации.
- Учитывайте, что глагол может быть вызван не так, как вы это задумывали: предусмотрите и монадный и диадный вызов. Сообщения об ошибках у J не очень информативны.
- Делайте компактные определения глаголов. Два глагола длиной по 20 символов читаются человеком легче, чем один глагол длиной в 40 символов.
- Если глагол рассчитывает «книжную» математическую формулу, то пишите его в тацитной форме только в том случае, если это значительно повышает эффективность вычислений. В остальных случаях пишите с явным указанием операндов.
- Используйте циклические императивные и рекурсивные конструкции только при необходимости. Хотя они иногда и облегчают чтение программы, но они очень медленны. Используйте наречия «/», «\» и подобные им.
- Рассмотрите возможность определять все файлы как ООП-модули.
- По возможности, не используйте глобальные переменные.
- Прочитайте книгу "J for C programmers". Обратите особое внимание на главы с названием "Loopless code".
Что читать дальше
Никогда не давайте более одного объяснения происходящему — последнее всегда будет правильным
Кеннет Айверсон
- http://vector.org.uk - очень солидный журнал от Британской ассоциации APLщиков. Статьи в основном про язык APL, но много статей и по языкам J, Q, K. Все можно скачать в электронном виде. Крайне рекомендуется.
- http://nsl.com - название сайта расшифровывается как «no stinking loops». На сайте много примеров разной степени сложности. В основном на языке K. Есть, к примеру, реализация ленивого подмножества языка К на самом К.
- http://www.jsoftware.com/jwiki/Links - сборник ссылок на полезные ресурсы по языку J.
- http://jsoftware.com/forums.htm - список почтовых рассылок J. (активность достаточно высокая - например, в основном разделе «Programming»в среднем по 8-12 сообщений в день).
- http://www.jsoftware.com/jwiki/Essays - не забывайте и про этот «неиссякаемый источник мудрости»- сборник статей и примеров с комментариями. Среди эссе можно найти, например, решатель судоку в 30 строчек.
Вместо прощания
Однажды я сказал Кену «Знаете, Кен, вы - мой любимый проектировщик языков программирования, а Дон Кнут - мой любимый программист». Кен сразу же спросил: «А что не так с моим программированием?»
Joey Tuttle
20 октября 2013