−1
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
// Making Wrong Code Look Wrong
// by Joel Spolsky
// https://www.joelonsoftware.com/2005/05/11/making-wrong-code-look-wrong/
us = UsRequest("name")
usName = us
recordset("usName") = usName
sName = SFromUs(recordset("usName"))
WriteS sName
В упомянутой роскомговном статье «Making Wrong Code Look Wrong» Спольски упоминает венгерскую нотацию, как способ to make wrong code look wrong.
Я хотел бы обсудить ЯП, в котором поверх (допустим, динамической) системы типов есть некоторый набор правил, основанный на Apps Hungarian. У переменных и функций сравниваются префиксы, и язык не даёт тебе присвоить количество мух в переменную, которая хранит количество слонов, хотя и то и то — int. Если же ты знаешь, что делаешь, можно использовать функции вида <prefix>From<suffix> и <prefix>To<suffix>, причем во избежание бойлерплейта, можно положить все такие функции существующими и тривиальными (возвращающими входное значение), если не определено другое.
Что хорошего и плохого было бы в таком языке? Дискасс.
Запостил: vistefan,
11 Июля 2018
vistefan 11.07.2018 15:21 # 0
roskomgovno 11.07.2018 21:08 # 0
guest8 11.07.2018 21:23 # −999
roskomgovno 11.07.2018 21:26 # 0
guest8 11.07.2018 22:10 # −999
vistefan 11.07.2018 22:15 # −1
guest8 11.07.2018 22:19 # −999
Sim_salapim 11.07.2018 22:21 # 0
roskomgovno 11.07.2018 22:21 # −1
Sim_salapim 11.07.2018 22:25 # 0
вообще-то я считал, что ты дефекате, но в последнее время отметаю эту версию. он слишком занятой человек, чтобы сидеть под файкой.
Ты либо инканус, либо пи. если вы с ним не одно лицо.
Бля, знешь, я бы пожалуй отсосал тебе. Ну, или вам обоим.
vistefan 11.07.2018 22:53 # +1
guest8 11.07.2018 23:09 # −999
bormand 11.07.2018 23:22 # +1
В итоге на гк я почти забил. Последнее время даже ленту комментов листаю по-диагонали.
Sim_salapim 11.07.2018 23:23 # −1
guest8 11.07.2018 21:28 # −999
guest8 11.07.2018 21:58 # −999
vistefan 11.07.2018 22:34 # 0
Например, валидный код, а — невалидный, потому что непонятно: десять чего? Можно ещё предусмотреть возможность задавать особые правила и касты на основании суффиксов, например:
km = 1000m
h = 60min
d = 24h
y = 365d
length(m, km)
time(h, min, d, y)
Задаешь такие правила в соответствии с задачей, и получаешь полиморфизм. Вовсюда, куда лезет время, влезут и минуты, и года. Я к чему клоню? Как вам в целом идея: динамический язык, в котором ты сам на ходу изобретаешь правила, которые проверяют код статически, и при этом не прибегаешь к ООП и типизации вообще, имея нахаляву полиморфизм и ворнинги с еррорами, которые появляются, когда ты делаешь что-то СЕМАНТИЧЕСКИ неправильное для задачи, а не просто пропустил запятую. Проблема, рассматриваемая в статье Спольски как раз в том, что валидный код порой таит в себе вёдра говна. Валидный код не значит корректную программу. Поэтому я и пытаюсь вынести на обсуждение способы на этапе компиляции или статической проверки обнаружения семантических ошибок.
vistefan 11.07.2018 22:16 # 0
Безусловно, мы обсуждаем некий HQ9+, но всё же. Кроме того, можно ввести правило, по которому, например, с переменными и функциями без префиксов можно делать всё, что угодно.