1.1, Аноним (-), 21:58, 03/03/2018 [ответить] [﹢﹢﹢] [ · · · ]
| +5 +/– |
> По аналогии с Python в Nim в качестве разделителей блоков применяются отступы.
Зачем? Даже Гвидо признал что это было не лучшей идеей.
| |
|
|
3.3, Аноним (-), 22:53, 03/03/2018 [^] [^^] [^^^] [ответить]
| +4 +/– |
http://www.yaml.org/faq.html
> Tabs have been outlawed since they are treated differently by different editors and tools. And since indentation is so critical to proper interpretation of YAML, this issue is just too tricky to even attempt. Indeed Guido van Rossum of Python has acknowledged that allowing TABs in Python source is a headache for many people and that were he to design Python again, he would forbid them.
Но, возможно, он бы стал требовать просто по 4 пробела. Или нет, по 5. Хотя нет, по 3 было бы лучше всего - ведь это так сильно меняет программу, сколько пробелов в каждой строке ставить.
p.s. Я до сих пор не могу найти лучшего кандидата на первое место в списке "самые идиотские решения в ЯП", чем задание синтаксической конструкции отступами.
| |
|
4.4, Аноним (-), 22:57, 03/03/2018 [^] [^^] [^^^] [ответить]
| +8 +/– |
Вы прочитали то, что процитировали? Он не против отступов, он против табуляций. Чтобы творческие личности могли в один отступ два пробела вставить, а в другой шесть. Пробелы хороши в функциональных языках - там всё равно нет отступов, лишь выравнивание. Но в императивных языках запрещать надо, скорее, пробелы, чем табуляции.
| |
|
5.5, анонимус (??), 00:00, 04/03/2018 [^] [^^] [^^^] [ответить]
| +2 +/– |
Было бы логичней, как раз, в начале строки пользоваться табуляцией, а после первого непробельного символа разрешить только пробел. Один таб -один отступить и форматирование не разваливается при разном размере таба.
| |
|
6.10, Аноним (-), 02:11, 04/03/2018 [^] [^^] [^^^] [ответить]
| +/– |
> Было бы логичней, как раз, в начале строки пользоваться табуляцией, а после
> первого непробельного символа разрешить только пробел.
А не логичней было бы сперва ознакомиться с мат.частью, а уж потом рассуждать на тему "как правильнее"?
Обычно под «форматированием пробелами» понимаются только пробелы в начале строки. После первого непробельного символа - хоть трава не расти.
>Один таб -один отступить и форматирование не разваливается при разном размере таба.
Разный размер таба в одном файле?
| |
|
7.39, анонимус (??), 07:53, 05/03/2018 [^] [^^] [^^^] [ответить]
| +/– |
>Обычно под «форматированием пробелами» понимаются только пробелы в начале строки.
Это и есть глупость
>После первого непробельного символа - хоть трава не расти.
Если после непробельных символов используется таб, то форматирование разъедется при открытии файла в другом редакторе с другим размером таба.
>Разный размер таба в одном файле?
В разных редакторах у разных пользователей
| |
|
8.48, Аноним (-), 14:39, 05/03/2018 [^] [^^] [^^^] [ответить] | +/– | Ну, если авторитет опеннета так считает Самому компилятору интерпретатору это д... большой текст свёрнут, показать | |
|
|
6.15, Ydro (?), 11:24, 04/03/2018 [^] [^^] [^^^] [ответить]
| +7 +/– |
То есть кроме отступов, табуляций и пробелов вас двоих ни чего не беспокоит в Nim? :-)
| |
6.21, Аноним (-), 14:24, 04/03/2018 [^] [^^] [^^^] [ответить]
| +3 +/– |
> Было бы логичней, как раз, в начале строки пользоваться табуляцией, а после
> первого непробельного символа разрешить только пробел. Один таб -один отступить и
> форматирование не разваливается при разном размере таба.
Хорошо, что не все программисты школьники-дегенераты, и поэтому пользуются пробелами.
| |
|
7.27, вапвап (?), 19:05, 04/03/2018 [^] [^^] [^^^] [ответить]
| +1 +/– |
К отступам и пробелам чувствительна СКВ, поэтому, чтобы не париться с мержами конфликтов, я бы рекомендовал пользоваться автовыравнием, которое заточено под корпоративный стандарт.
Зачем вообще париться над пробелами, если можно просто нажать "выровняйся всё само"?
Меньше творчества в коде => меньше конфликтов => проще жизнь.
| |
7.36, Аноним (-), 21:44, 04/03/2018 [^] [^^] [^^^] [ответить]
| +1 +/– |
> Хорошо, что не все программисты школьники-дегенераты, и поэтому пользуются пробелами.
Как раз пробелами пользуются только те, кто не понимает, что такое отступ. "Я тут накопипастил со стека и у меня код разъехался. Поэтому я больше не буду пользоваться табуляциями, а некорректное форматирование буду пробелом добивать до того, от чего глаза не вытекают."
| |
7.38, Аноним (-), 22:07, 04/03/2018 [^] [^^] [^^^] [ответить]
| +/– |
> Хорошо, что [...] пользуются пробелами.
Можете привести пару (а лучше больше) объективных уважительных причин использовать пробелы в отступах вместо табуляций, пожалуйста?
| |
7.40, анонимус (??), 07:54, 05/03/2018 [^] [^^] [^^^] [ответить]
| –2 +/– |
> Хорошо, что не все программисты школьники-дегенераты, и поэтому пользуются пробелами.
Дегенераты как раз пользуются пробелами в начале строки
| |
|
|
5.57, nich (ok), 18:53, 06/03/2018 [^] [^^] [^^^] [ответить]
| +/– |
Гвидо против табуляции, и правильно. Все осходники, использующие табуляцию, рано или поздно (на практике очень рано) начинают выглядеть как гaвно. Первое, что я делаю в не моем проекте, это заменяю все табы на пробелы. Только после этого с исходниками можно нормально работать. Разрабы, которые использовали там табы, даже ничего не замечают, потому что тем, кто использует табы, обычно положить, что их исходники выглядят как полное гaвно.
| |
|
4.6, Аноним (-), 00:12, 04/03/2018 [^] [^^] [^^^] [ответить]
| –1 +/– |
> p.s. Я до сих пор не могу найти лучшего кандидата на первое место в списке "самые идиотские решения в ЯП", чем задание синтаксической конструкции отступами.
Ты, наверно, до того как начал использовать питон, код не форматировал в принципе, вот сейчас и испытываешь боли, что заставляют это делать на уровне синтаксиса языка?
| |
|
5.7, Аноним (-), 01:05, 04/03/2018 [^] [^^] [^^^] [ответить]
| +/– |
Не знаю, как он, но спасибо что решили за всех, как им форматировать
| |
|
6.32, Аноним (-), 20:23, 04/03/2018 [^] [^^] [^^^] [ответить]
| –1 +/– |
В Golang, так любимом ненавистниками Python, форматирование тоже принудительное. С фигурными скобками, но отформатировать как тебе хочется не выйдет.
| |
|
7.42, angra (ok), 10:32, 05/03/2018 [^] [^^] [^^^] [ответить]
| –1 +/– |
> В Golang, так любимом ненавистниками Python, форматирование тоже принудительное. С фигурными скобками, но отформатировать как тебе хочется не выйдет.
ЕМНИП оно принудительное только в паре мест, где нельзя перенести открывающую фигурную скобку на следующую строку. Связано это с парсингом, а не стилем. А так можно хоть однострочники писать:
package main;import "fmt";func main() {fmt.Println("Hello, world")}
Другое дело, что в сообществе Go принято пропускать исходник через gofmt. Но к этому никто не принуждает, просто правило хорошего тона.
| |
|
|
|
4.8, Онаним (?), 01:45, 04/03/2018 [^] [^^] [^^^] [ответить]
| +/– |
> Но, возможно, он бы стал требовать просто по 4 пробела. Или нет, по 5. Хотя нет, по 3
Оптимално по 2 ящетаю. Серьёзно.
Вообще уверен он имел вииду именно это. Я тоже поначалу плевался на эту идею, но потом мне стало очевидно, что для языка программирования (YAML - язык сериализации данных, а не программирования, так что там другая история) это оптимально ибо отступы всё-равно все всегда ставят и фигурные скобочки как и обязательные точки с запятыми в конце строк в C#-подобных языках - бессмысленный балласт.
На деле Python используется ОЧЕНЬ широко и никто особо не переживает по поводу этих отступов, так что всё в порядке. Некоторые небольшие проблем ощущаются только в момент копипастинга кода и те PyCharm решает за секунду.
| |
4.9, Аноним (-), 02:04, 04/03/2018 [^] [^^] [^^^] [ответить]
| +2 +/– |
>> Indeed Guido van Rossum of Python has acknowledged that allowing TABs in Python source is a headache for many people and that were he to design Python again, he would forbid them.
https://nim-lang.org/docs/manual.html
> Indentation consists only of spaces; tabulators are not allowed.
Все верно сделанно.
> Но, возможно, он бы стал требовать просто по 4 пробела. Или нет, по 5. Хотя нет, по 3 было бы лучше всего - ведь это так сильно меняет программу, сколько пробелов в каждой строке ставить.
Хоть 1, хоть 10. Главное, не поддаваться порывам творческой натуры и не менять количество пробелов в одном блоке.
Кстати, обычно даже довольно простые текстовые редакторы вполне настраиваются на автозамену нажатия таба на определенное количество пробелов.
| |
|
|
|
|
|
3.37, Tita_M (ok), 21:44, 04/03/2018 [^] [^^] [^^^] [ответить]
| –1 +/– |
Имелось ввиду зачем ориентироваться на паскаль если можно было вдохновляться тем же обероном.
| |
|
|
1.12, leap42 (ok), 05:53, 04/03/2018 [ответить] [﹢﹢﹢] [ · · · ]
| +7 +/– |
> позволяет добиться производительности близкой к Си, если не учитывать затраты на выполнение сборщика мусора
а если ещё какие-нибудь не учитывать, то даже быстрее получится
а если вообще никакие не учитывать, то все расчёты будут мгновенными
| |
|
2.19, Аноним (-), 13:07, 04/03/2018 [^] [^^] [^^^] [ответить]
| +/– |
Ну GC там и вправду мало жрущий. К тому же легко отключается. Хоть полностью, хоть по частям.
| |
2.31, Аноним (-), 19:22, 04/03/2018 [^] [^^] [^^^] [ответить]
| +/– |
>> позволяет добиться производительности близкой к Си, если не учитывать затраты на выполнение сборщика мусора
> а если ещё какие-нибудь не учитывать, то даже быстрее получится
Хочешь - не учитывай, никто не мешает:
https://nim-lang.org/docs/manual.html
> Nim distinguishes between traced and untraced references. Untraced references are also called
> pointers. Traced references point to objects of a garbage collected heap, untraced references
> point to manually allocated objects or to objects somewhere else in memory. | |
2.45, Аноним (-), 13:45, 05/03/2018 [^] [^^] [^^^] [ответить]
| +/– |
>> позволяет добиться производительности близкой к Си, если не учитывать затраты на выполнение сборщика мусора
>а если ещё какие-нибудь не учитывать, то даже быстрее получится
Ну так в случае с Java так и получается :)
| |
|
1.13, Anonymoustus (ok), 06:35, 04/03/2018 [ответить] [﹢﹢﹢] [ · · · ]
| +/– |
> Исходный код на языке Nim компилируется в представление на C, C++ или JavaScript. В дальнейшем полученный C/C++ код компилируется в исполняемый файл при помощи любого доступного компилятора
Что за блажь такая — всё усложнять дважды делать одну работу? В чём фишка?
| |
|
2.14, juniper рулит (?), 07:45, 04/03/2018 [^] [^^] [^^^] [ответить]
| +/– |
обычное дело в эти дни, вы видимо имеете очень смутное представление об устройстве современных компиляторов
| |
|
|
4.46, Crazy Alex (ok), 14:27, 05/03/2018 [^] [^^] [^^^] [ответить]
| +/– |
А потом как смогли - стали делать нормальные компиляторы. И по сей день продолжают.
| |
|
3.17, Anonymoustus (ok), 12:22, 04/03/2018 [^] [^^] [^^^] [ответить]
| +/– |
> обычное дело в эти дни, вы видимо имеете очень смутное представление об
> устройстве современных компиляторов
Анонимы опеннета, видимо, патологически неспособны понять написанное, а отсутствующее понимание компенсируют многозначительным гулом голосов из своей головы.
Ещё раз вопрос к залу: зачем писать на каком-то третьем языке, чтобы затем это несколько раз последовательно транслировать в нижележащие уровни? У современных кодеров совсем уже нет мозгов писать сразу на каком-то одном языке, что надо придумывать по несколько надстроек друг над другом?
| |
|
4.18, Аноним (-), 13:04, 04/03/2018 [^] [^^] [^^^] [ответить]
| +/– |
> Анонимы опеннета, видимо, патологически неспособны понять написанное, а отсутствующее понимание компенсируют многозначительным гулом голосов из своей головы.
> Ещё раз вопрос к залу: зачем писать на каком-то языке, чтобы затем это несколько раз последовательно транслировать в нижележащие уровни? У современных кодеров совсем уже нет мозгов писать сразу в машинных кодах, что надо придумывать по несколько надстроек друг над другом?
Fixed*
| |
4.20, Аноним (-), 13:53, 04/03/2018 [^] [^^] [^^^] [ответить]
| +1 +/– |
Просто у Nim дико маленокое комьюнити и написать полноценный фасад к какому-нибудь LLVM они не осилили
| |
|
5.23, Аноним (-), 15:45, 04/03/2018 [^] [^^] [^^^] [ответить]
| +/– |
> Просто у Nim дико маленокое комьюнити и написать полноценный фасад к какому-нибудь
> LLVM они не осилили
Один чувак осилил, но Araq (создатель языка) сказал, что он добавит LLVM в главный репозиторий только если LLVM бекенд предоставит какие-то преимущества над C/C++.
| |
|
6.28, Аноним84701 (ok), 19:09, 04/03/2018 [^] [^^] [^^^] [ответить]
| +/– |
> Один чувак осилил, но Araq (создатель языка) сказал, что он добавит LLVM
> в главный репозиторий только если LLVM бекенд предоставит какие-то преимущества над C/C++.
В чем-то он прав – обратная совместимость в LLVM довольно регулярно ломается, в отличие от.
И поэтому просто портировать мало, нужно еще и поддерживать.
Так что понятно, что (максимум "полтора", если мне не сильно изменяет память) разработчика/автора дополнительный "чемодан без ручки" скорее всего не особо вдохновляет.
| |
|
|
4.25, DerRoteBaron (?), 18:12, 04/03/2018 [^] [^^] [^^^] [ответить]
| –1 +/– |
Аналогично, зачем писать на любом сколько-нибудь высокоуровневом языке, если все можно написать в машинных кодах? Или в байткоде llvm если нужна переносимость.
Зачем транслировать язык X в язык Y? Например, затем, что реализация Y есть под платформу P и она популярна, при этом язык X предоставляет удобные абстрации для предметной области A и/или задачи T, которую надо решать.
Если задачу T можно решить на языке Y, это еще не значит, что ее удобно решать на этом языке, а при решении не придется написать существенное количество велосипедов.
| |
|
5.35, Аноним (-), 20:30, 04/03/2018 [^] [^^] [^^^] [ответить]
| –2 +/– |
Не стоит метать бисер перед Anonymoustus. Он объявился в новостях недавно, а уже успел себя зарекомендовать.
| |
|
4.26, Василий Теркин (?), 19:03, 04/03/2018 [^] [^^] [^^^] [ответить]
| +/– |
Компиляторы с/cpp есть практически под все известные платформы. Поэтому авторы ограничили свои усилия работой над самим ЯП и транслятором для него. Вполне разумно.
| |
|
|
2.41, анонимус (??), 07:59, 05/03/2018 [^] [^^] [^^^] [ответить]
| +/– |
>>Исходный код на языке Nim компилируется в представление на C, C++ или JavaScript. В дальнейшем
>Что за блажь такая — всё усложнять дважды делать одну работу? В чём фишка?
Так Си и есть высокоуровневый ассемблер.
| |
|
1.22, Аноним (-), 15:29, 04/03/2018 [ответить] [﹢﹢﹢] [ · · · ]
| +1 +/– |
Есть же Crystal. Прекрасный руби-подобный синтаксис, быстрый....
Have a syntax similar to Ruby (but compatibility with it is not a goal)
Statically type-checked but without having to specify the type of variables or method arguments.
Be able to call C code by writing bindings to it in Crystal.
Have compile-time evaluation and generation of code, to avoid boilerplate code.
Compile to efficient native code.
| |
|
2.30, Аноним (-), 19:16, 04/03/2018 [^] [^^] [^^^] [ответить]
| +3 +/– |
> А может проще сразу писать на C/C++
Так они тоже транслируются.
Поэтому для любителей истинной простоты есть hex-редакторы.
В них и машкод и микрокод под задачу написать можно.
| |
|
3.51, XYZ (?), 15:05, 05/03/2018 [^] [^^] [^^^] [ответить]
| +/– |
Так hex-код тоже транслируется в нули и единицы. А вообще проще всего взять батарейку, две иголки и сраду подавать нужное напряжение в нужных участках материнской платы.
| |
|
|
1.43, adolfus (ok), 13:31, 05/03/2018 [ответить] [﹢﹢﹢] [ · · · ]
| +1 +/– |
"язык системного программирования" и "сборщик мусора" -- взаимноисключающие параграфы
| |
|
2.47, Crazy Alex (ok), 14:29, 05/03/2018 [^] [^^] [^^^] [ответить]
| +/– |
Давно нет. Разве что вы под "системным" понимаете исключительно ядро и драйверы. Впрочем, язык всё равно пришибленный.
| |
2.50, Аноним (-), 14:52, 05/03/2018 [^] [^^] [^^^] [ответить]
| +2 +/– |
> "язык системного программирования" и "сборщик мусора" -- взаимноисключающие параграфы
Т.е. ЯП, в которых есть подключаемый сборщик мусора -- не системные?
http://www.hboehm.info/gc/
A garbage collector for C and C++
| |
|
3.53, Анонс (?), 07:51, 06/03/2018 [^] [^^] [^^^] [ответить]
| –3 +/– |
Чукча не видит разницу между покдлючаемым гц и по умолчанию.
| |
|
4.56, Аноним (-), 14:38, 06/03/2018 [^] [^^] [^^^] [ответить]
| +2 +/– |
> Чукча не видит разницу между покдлючаемым гц и по умолчанию.
Чего - "по умолчанию", о великий знаток?
Или ты пользуешься обычными указателями и дергаешь alloc/dealloc ручками или используешь указатель на GC-объект.
https://nim-lang.org/docs/manual.html
> Nim distinguishes between traced and untraced references.
> Traced references point to objects of a garbage collected heap, untraced references
> point to manually allocated objects or to objects somewhere else in memory.
> Traced references are declared with the ref keyword, untraced references are declared with the ptr keyword. In general, a ptr T is implicitly convertible to the pointer type.
Интересно, какие принципы и обеты не позволяют экспертам перед комментированием даже поверхностно ознакомиться с темой?
| |
|
|
2.54, Аноним (-), 09:35, 06/03/2018 [^] [^^] [^^^] [ответить]
| +/– |
> взаимноисключающие
Как ни загляну в комменты — обязательно узнаю новое слово. Что означает?
| |
|
1.55, Ын (?), 10:34, 06/03/2018 [ответить] [﹢﹢﹢] [ · · · ]
| +/– |
только BASIC из zx spectrum 48 самый понятный и запоминающийся
| |
|