Переведён (https://github.com/vlang/v/releases) в разряд открытых компилятор для языка V (https://vlang.io/). V представляет собой компилируемый в машинный код язык со статической типизацией, сосредоточенный на решении задач по упрощению сопровождения разработки и обеспечению очень высокой скорости компиляции. Код компилятора, библиотек и сопутствующих инструментов открыт (https://github.com/vlang/v) под лицензией MIT.Синтаксис V во многом походит на язык Go с заимствованием некоторых конструкций из Oberon, Rust и Swift. Язык максимально упрощён и, по заявлению разработчика, для изучения базовых основ достаточно 30 минут на изучение документации (https://vlang.io/docs). При этом язык остаётся достаточно мощным и может применяться для выполнения тех же задач, что и при использовании других языков программирования.
К созданию нового языка побудило желание добиться баланса между свойственным языку Go простоты синтаксиса, скорости компиляции, простоты распараллеливания операций, переносимости и сопровождаемости кода с производительностью С/C++, защищённостью Rust и генерацией машинного кода на этапе компиляции Zig. Также хотелось получить компактный и быстрый компилятор, способный работать без внешних зависимостей, избавиться от глобальной области видимости (глобальных переменных) и обеспечить возможность "горячей" перезагрузки кода.По сравнению с C++ новый язык существенно проще, обеспечивает более высокую скорость компиляции (до 400 раз!), практикует приёмы безопасного программирования, избавлен от проблем с неопределённым поведением и предоставляет встроенные средства для распараллеливания операций. По сравнению с Python язык V быстрее, проще, безопаснее и удобнее в сопровождении. По сравнению с Go в V нет глобальных переменных, нет null, все значения переменных всегда обязательно должны быть определены, все объекты по умолчанию являются неизменяемыми (immutable), поддерживается только один вид присвоений ("a := 0"), существенно более компактный runtime и размер итоговых исполняемых файлов, наличие прямой переносимости с Си, отсутствие сборщика мусора, более быстрая сериализация, возможность интерполяции строк ("println('$foo: $bar.baz')").
fn main() {
areas := ['game', 'web', 'tools', 'science', 'systems', 'GUI', 'mobile']
a := 10
if true {
a := 20
}
for area in areas {
println('Hello, $area developers!')
}
}
Особенности проекта:
- Компактный и быстрый компилятор, который вместе со стандартной библиотекой занимает около 400 КБ. Высокая скорость компиляции достигается благодаря прямой генерации машинного кода и модульности. Скорость компиляции составляет примерно 1.2 млн строк кода в секунду на одном ядре CPU (Intel i5-7500 @ 3.40GHz). Самосборка компилятора, который также написан на языке V (также имеется эталонный вариант на Go), занимает примерно 0.4 сек. К концу года ожидается завершение работы над дополнительными оптимизациями, которые позволят уменьшить время сборки компилятора до 0.15 сек. Для сравнения самосборка Go требует 512 Мб дискового пространства и выполняется за полторы минуты, Rust требует 30 Гб и 45 минут, GCC - 8 ГБ и 50 минут, Clang - 90 Гб и 25 минут,
Swift - 70 ГБ и 90 минут;
- Программы компилируются в исполняемые файлы без внешних зависимостей. Размер исполняемого файла простого http-сервера после сборки составляет всего 65 КБ;- Производительность скомпилированных приложений находится на уровне сборок программ на языке Си;
- Возможность бесшовного взаимодействия с Си-кодом, без дополнительных накладных расходов. Из кода на языке V могут вызываться функции на языке Си и наоборот, код на языке V может вызываться в любых языках, совместимых с Си;
- Поддержка трансляции проектов на C/C++ в представление на языке V. Для трансляции используется парсер от Clang. Не все возможности стандарта Си пока поддерживаются, но текущих возможностей транслятора уже достаточно для перевода (https://github.com/vlang/doom) на язык V игры DOOM. Транслятор с C++ пока находится на начальной стадии развития;- Встроенная поддержка сериализации, без привязки к runtime;
- Минимизация операций распределения памяти;
- Обеспечение безопасности: отсутствие NULL, глобальных переменных, неопределённых значений и переопределения переменных. Встроенные средства для проверки выхода за границы буфера. Поддержка обобщённых функций (Generic). Не изменяемые по умолчанию объекты и структуры;
- Возможность "горячей" перезагрузки кода (отражения изменений в коде на лету без перекомпиляции);
- Средства для обеспечения многопоточности. Как в языке Go для запуска нового потока выполнения используется конструкция вида "run foo()" (по аналогии с "go foo()"). В будущем планируется поддержка goroutines и планировщика потоков;
- Поддержка операционных систем Windows, macOS, Linux, *BSD. До конца года планируется добавить поддержку Android и iOS;
- Управление памятью на этапе компиляции (как в Rust), без применения сборщика мусора;
- Наличие многоплатформенного тулкита для вывода графики, использующего для отрисовки GDI+/Cocoa и OpenGL (в планах поддержка API DirectX, Vulkan и Metal). Имеются средства для работы с 3D-объектами, скелетной анимацией и управления камерой.- Наличие библиотеки для формирования графических интерфейсов с родными для каждой ОС элементами оформления. В Windows используется WinAPI/GDI+, в macOS - Cocoa, в Linux - собственный набор виджетов. Библиотека уже используется при разработке Volt (https://volt-app.com/) - клиента для Slack, Skype, Gmail, Twitter и Facebook.
Планируется создание похожего на Delphi приложения для проектирования интерфейса, предоставление декларативного API, похожего на SwiftUI и React Native, и обеспечение поддержи создания мобильных приложений для iOS и Android;
- Поддержка кросс-компиляции. Для сборки исполняемого файла для Windows достаточно запустить "v -os windows", а для Linux - "v -os linux" (поддержка кросс-компиляции для macOS ожидается позднее). Кросс-компиляция в том числе работает и для графических приложений;
- Встроенный менеджер зависимостей, пакетный менеджер и инструментарий сборки. Для сборки программы достаточно запустить "v .", без использования make и внешних утилит. Для установки дополнительных библиотек достаточно выполнить, например, "v get sqlite";
- Наличие встроенного web-фреймворка, которые использован для создания сайта, форума и блога разработчиков проекта. Поддерживается предкомпиляция HTML-шаблонов, без из обработки при каждом запросе;
- Наличие плагинов для разработки на языке V в редакторах VS Code (https://github.com/0x9ef/vscode-vlang) и Vim (https://github.com/ollykel/v-vim).
URL: https://www.reddit.com/r/vlang/comments/c3wpnb/v_has_been_op.../
Новость: https://www.opennet.me/opennews/art.shtml?num=50944
Поприветствуем же убийцу всех языков и замену гошке с растом!
О да. Судя по заявленным возможностям это просто идеальный "конь".Но как кто-то уже когда-то тут высказался : "языки с := присвоением - не жильцы" (с) неизвестный автор.
А auto это нормально?
Нормально
IMAO - auto это раковая опухоль.
auto == := (c) Well known author (me).
> А auto это нормально?ну можешь писать, никто не мешает
for (std::vector<std::map<int, std::string>>::const_iterator it = container.begin(); it != container.end(); ++it) { }
Это как раз показатель, что С++ с темплейтами ушёл не туда. auto - костыль для того, чтобы подобный неюзабельное дело прятать
И по умолчанию константные переменные сомнительный костыль... Переменные на то и переменные чтобы их менять, их 99% мутируемые, везде писать этот ключ дабы не выстрелить в небо и снаряд не прилетел обратно на тебя?
ждем дальше плюсы без шаблонов
Наоборот, это хорошо. Если переменная мутабельная, я это явно укажу. А если на самом деле неиммутабельная и компилятор об этом знает, открывается огромный простор для оптимизациию.
Черт, что я написал? Идиот!Читать "на самом деле иммутабельная" :)
Если компилятор на совсем идиот, то он и дополнительных подсказок увидит отсутствие записи в переменную и применит всё те же оптимизации. Так что сишно-плюсовый "const" и прочие иммутабельности -- это больше для людей, чем для компьютера.
Для этого требуется LTO.
Это избыточность, необходимая для проверки компилятором корректности использования.
И по умолчанию константные переменные сомнительный костыль... - я пишу на Си и по моему опыту большинство локальных переменных константные, большинство указателей restrict и указывают на данные, которые я не буду менять через этот указатель.
Ембедерщик что-ли? Не показатель
Из переменных могут быть разве что счётчики в циклах и временные переменные. Для чего может возникнуть необходимость менять те же указатели?
Менять указатель - тот же обход буфера в цикле через *s++. Если имелось ввиду менять содержимое памяти по указателю - тот же пример. А какие у вас переменные, что вы их не меняете?
просто ты латентынй функиональщик.
Язык erlang, слышал такой?
Совсем не мутабельный
Некоторые языки не оперируют словом переменная.Нет спорной терминологии - нет проблем
> языки с := присвоением - не жильцыПодозреваю, речь идёт всё же не о присвоении, а о сокращённом объявлении переменной, как в Go.
Хотя не, не дочитал пример. Тогда и правда не жилец.
> Хотя не, не дочитал пример. Тогда и правда не жилец.doc
> Please note the difference between := and =
> := is used for declaring and initializing, = is used for assigning.
Хм. А это тогда как понимать?
a := 10
if true {
a := 20
}
Как объявление одноимённой переменной с другой областью видимости, которая никак не используется? Отличный пример для новости!
Не вижу никаких проблем. Область видимости для переменной одна и та же. Можешь хоть постоянно использовать := , это не будет ошибкой. Просто визуально в коде не поймешь где переменную объявили.
Тип, при присвоении через := или auto определяется плагином для текстового редактора. Пора уже вылазить из нотпад.экзе.
Да! Слежу за проектом. Всячески желаю успеха и продвижения!
Присоединюсь, шикарный язычина наклевывается.А если прокинут, то что делать будем?
в вебасембли компилировать)
Возможность "горячей" перезагрузки кода (отражения изменений в коде на лету без перекомпиляции);Hot code reloading
TODO
Написано слишком пафосно. Философский, блин, камень. Перпетум, бля, мобиле.
Интересно, кто-то вспомнит об этом языке через 3 года?
Увидим...
Основная проблема не в том, что слишком пафосно, а в том, что почти ничего из обещанного не реализовано.
У сообщества случился бомбит, реддит и хакерньюс раскрывают драму.
> бомбит, реддит и хакерньюсЗвучит, как обострение заболеваний. :)
Ага, "бомбит", "реддит" и "хакерньюсит".
ссылочки на самые драматические нити.
Пока сам я накопал https://github.com/medvednikov/vid
Красивое описание, скриншотик и 12 коммитов на readme, лол. Больше в дереве сорцев жизни не было обнаружено.
прошло без месяца три года: я только узнал об этом языке благодаря https://github.com/vlang/gitlyактивность на https://github.com/vlang:
3 первых в списке проекта - последние изменения ~30 минут
держу в курсе:)
А пафос? Пафос остался или они таки повзрослели, помудрели, да и язык оброс костылями, необходимыми для выполнения реальных задач и никаких х400 к компиляции больше нет?
закончится алфавит для названий когда?
Юникод длинный.
Предлагаю язык: ↑
↑++
Всем известно, что ★ гораздо удобнее.
Но веб захватили 🐘 с 🐬
> ↑++⁰C++
> ⁰C++°C же. Ты, небось, и C♯ вместо C# пишешь?
>> ⁰C++
> °C же. Ты, небось, и C♯ вместо C# пишешь?C⋄
Это разные языки
Уже есть такой, на нём сегу программируют.
😎
Будут двухбуквенные, например, VX ;)
Ратую за трехбуквенные)
> Ратую за трехбуквенные)На заборе-то вот чего написано, а там ....awk, sed, c++, ibm, roi, и kpi, и сео!...
...лежат.
А можно ещё записывать в Шестнадцатеричная система счисления.
Зачем нужен еще один Паскаль, когда есть Си?
Они бы хоть довели этот V до состояния сборки, а тоmkdir ~/code && cd ~/code
git clone https://github.com/vlang/v
cd v/compiler
makeи получаем портянку:
cc -std=c11 -w -o vc v.c
v.c:341:3: error: expected specifier-qualifier-list before ‘_Atomic’
_Atomic int fn_cnt;
^
v.c: In function ‘Fn_str’:
v.c:13789:21: error: unknown field ‘fn_cnt’ specified in initializer
.fn_cnt = 0,
^
v.c:13790:21: error: unknown field ‘obfuscate’ specified in initializer
.obfuscate = 0};
^
v.c: In function ‘new_table’:
v.c:13808:3: error: unknown field ‘obfuscate’ specified in initializer
Table *t = ALLOC_INIT(Table, {
^
v.c:13808:3: error: unknown field ‘fn_cnt’ specified in initializer
v.c: In function ‘Table_cgen_name’:
v.c:14653:12: error: ‘Table’ has no member named ‘obfuscate’
if (table->obfuscate && string_ne(f->name, tos2("main")) &&
^
v.c:14673:12: error: ‘Table’ has no member named ‘fn_cnt’
table->fn_cnt++;
^
v.c:14674:24: error: ‘Table’ has no member named ‘fn_cnt’
int tmp68 = table->fn_cnt;
^
v.c:14678:18: error: ‘Table’ has no member named ‘fn_cnt’
idx = table->fn_cnt;
^
make: *** [vc] Error 1
И это все на свежей Oracle Linux 7, правда gcc не самый новый
gcc version 4.8.5 20150623 (Red Hat 4.8.5-36.0.1) (GCC)
но пардон, на кого тогда рассчитан этот v ?
Какой, однако, свежий компилятор...
Под Debian 9 тоже нифига не собирается компилятор./vc -o v .
Makefile:4: recipe for target 'v' failed
make: *** [v] Segmentation faultВерсия gcc новая
gcc version 6.3.0 20170516 (Debian 6.3.0-18+deb9u1)
На какой ОС его собирает автор?
Может всё-таки стоит бампнуть версию, не? А то так можно на многое критовать
https://github.com/vlang/v/issues/486
У меня по другому:./vc -o v .
Makefile:4: recipe for target 'v' failed
make: *** [v] Ошибка сегментирования (сделан дамп памяти)Ubuntu 18.04
а потому чтоopenat(AT_FDCWD, "/home/xxx//code/v//os", O_RDONLY|O_NONBLOCK|O_CLOEXEC|O_DIRECTORY) = -1 ENOENT (Нет такого файла или каталога)
fstat(1, {st_mode=S_IFCHR|0620, st_rdev=makedev(0x88, 0xc), ...}) = 0
--- SIGSEGV {si_signo=SIGSEGV, si_code=SEGV_MAPERR, si_addr=0x702ae7c7} ---
+++ killed by SIGSEGV +++
Ошибка сегментирования
ну или если пути норм, то access("/usr/local/Cellar/llvm/8.0.0/bin/clang", F_OK) = -1 ENOENT (Нет такого файла или каталога)
Ясно. Выносите.
А я думал что в лифте о го-шниках неправду пишут, ан нет ...
О, да неужели
```
V 0.1.0
Use Ctrl-D to exit
For now you have to use println() to print values, this will be fixed soon>>>
```
> на свежей Oracle Linux 7
> gcc version 4.8.5Протухла на 6 лет твоя оракла. Небойсь все дыры в одном месте собрали.
> наличие прямой переносимости с Си
> отсутствие NULL
Так это же макрос, который в любом случае приводится к 0 .
Ну на самом деле это не ноль, а ноль с типом данных, но это уже в C++.
ты себе сам "+" поставил?
> https://github.com/freebsd/freebsd/blob/master/sys/sys/_null.hможешь любой другой ролевантный src открыть
Хорошая пиар компания совершенно ненужного проекта.
> По сравнению с Go в V нет глобальных переменныхИ чем это хорошо ?
Когда в языке нет плохого, это хорошо
Но как жи тагда праграмировать???!!!111
Не нужноВо-первых, скорость компиляции мало кого интересует.
Во-вторых, язык похож на попытку довести го до ума, при этом оставив все проблемы го на месте. Как бы добавили дженерики, но отказались от оверлоада функций, добавив оверлоад для операторов - ШТОАААаа?
В-третьих, вместо нормально проработанных эксепшенов очередной гейпарад - "return error('User $id not found')" - за такую завязанность на таком низком уровне руки убивают (почему строка? почему хуман-ридбл? а если нужен перевод? а если нужно подругому сформулировать в ЮАй? и т.д.)Единственная фишка го, на котором построен весь хайп - это "простота" (ну ок, еще тот факт что гугл толкает это поделие). Простота именно в кавычках, потому те вещи, что в других языках даются бесплатно (ОО например), в го нужно реализовывать руками (и получать 10 слегка отличающихся вариантов различной степени сырости). В этом V языке даже эта фишка уже пропадает (а проблемы остаются)
>>В-третьих, вместо нормально проработанных эксепшеновА есть они где нормальные? Если язык заявлен как не имеющий побочных эффектов - проще результат функции проверять, чем catch с assert расковыривать.
>>бесплатно (ОО например)
ОО уходит в свою нишу и там еме и место.
>Если язык заявлен как не имеющий побочных эффектовНе заявлен, там есть возможность для сайдэффектов. Вы доку читали?
>проще результат функции проверять, чем catch с assert расковыривать.
Проще вообще ничего не проверять, а обрабатывать ошибку там, где ее и нужно обрабатывать - на самом верхнем уровне.
>ОО уходит в свою нишу и там еме и место.
Под "нишей" вы понимаете 99% всего ПО?
>Проще вообще ничего не проверять, а обрабатывать ошибку там, где ее и нужно обрабатывать - на самом верхнем уровне.Используйте инструкцию GOTO. Чем Исключения по факту и являются.
>Под "нишей" вы понимаете 99% всего ПО?Долго палец сосали?
Если осознать что ОО процентах в 90 проектов нафиг не упало, жизнь становится куда легче.
>Если осознать что ОО процентах в 90 проектов нафиг не упало, жизнь становится куда легче.99% всего софта используют ОО, но у хомячков опеннета какой-то другой линукс, без ОО
только ситхи все возводят в абсолют, статистика против вас
>статистика против васКакая статистика? Кеды, гном, електрон, линукс - все построено на принципах Объектно-Ориентированного Программирования
>линукс
>построено на принципах Объектно-Ориентированного ПрограммированияА Линус знает?
>А Линус знает?думаю да, https://www.kernel.org/doc/Documentation/kobject.txt
Да ладно, то же классическое юниксовое "всё есть файл" -- вполне себе ОО с полиморфизмом, где за единым интерфейсом скрыты разные реализации. От записи write(file, buffer, count) вместо file.write(buffer, count) суть не меняется.
>Да ладно, то же классическое юниксовое "всё есть файл" -- вполне себе ОО с полиморфизмомАнальный секс тоже.
одного меня бесят := ?
узнали? согласны?
Как в колледже преподаватель-паскалист научил, так и пишем.
это мне напомнило эпизод из "кремниевой долины" (s3e06), когда ГГ расстался с девушкой только потому, что он было сторонник таба, а она - пробелов =D
Не видел ни одного проекта где бы пользовались табуляцией.
Так же не видел ни одного человека, который по 8 раз на пробел нажимал.
это потому что ты пишешь на скриптовых языках (я угадал)
а какой смысл вкладывали в такие сложности авторы? может присваивание из двух символов дает +5 к улетности?
If (a = 5)
Как учил великий Вирт, := - это "присвоить значение". Ибо "=" - это равно. Использовать всем известный математический символ сравнения в качестве присвоения - это вносить путаницу в неокрепшие умы неофитов.Видимо, авторы еще не успели испортиться под влиянием не менее великого Страуструпа и решили, что красота языка важнее предпочтений старперов.
> Как учил великий Вирт, := - это "присвоить значение". Ибо "=" -
> это равно. Использовать всем известный математический символ сравнения в качестве присвоения
> - это вносить путаницу в неокрепшие умы неофитов.Так тут всё наоборот.
Присваивание значения через =
Объявление "переменных" (которые по умолчанию константы) через :=
В школе на уроках математики пишем x = 1
здесь x := 1
Наблюдая афедронную эксплозию у участников секты Вирта, не примену поспособствовать её усилению цитатой документации:Please note the difference between := and =
:= is used for declaring and initializing, = is used for assigning.
> В школе на уроках математики пишем x = 1Потому что это РАВЕНСТВО, а не присвоение!
>> В школе на уроках математики пишем x = 1
> Потому что это РАВЕНСТВО, а не присвоение!Ну да. При этом в V равенство, а не присвоение :=
> Объявление "переменных" (которые по умолчанию константы) через :=
> В школе на уроках математики пишем x = 1
> здесь x := 1Вообще-то равенство - это когда можно написать 1=x без изменения семантики. Такое возможно лишь в некоторых, великих ЯП:
?- X='hello', 1 + 2 = Y, write(X), 1 + 4 =:= Y + 2.
hello
X = hello,
Y = 1+2
>[оверквотинг удален]
>> здесь x := 1
> Вообще-то равенство - это когда можно написать 1=x без изменения семантики. Такое
> возможно лишь в некоторых, великих ЯП:
>
> ?- X='hello', 1 + 2 = Y, write(X), 1 + 4 =:=
> Y + 2.
> hello
> X = hello,
> Y = 1+2
>Во. Так мы придём к тому, что бывает сравнение, а бывает декларация.
>[оверквотинг удален]
>> Вообще-то равенство - это когда можно написать 1=x без изменения семантики. Такое
>> возможно лишь в некоторых, великих ЯП:
>>
>> ?- X='hello', 1 + 2 = Y, write(X), 1 + 4 =:=
>> Y + 2.
>> hello
>> X = hello,
>> Y = 1+2
>>
> Во. Так мы придём к тому, что бывает сравнение, а бывает декларация.Ну-ну:
?- 1 + 2 + 4 = X + 4, 1 + 2 = Y,write([X,Y]), Y = X.
[1+2,1+2]
X = Y, Y = 1+2.
В V сравнение ==
присваивание =
к чему тут ссылки на Вирта?
>>> В школе на уроках математики пишем x = 1
>> Вообще-то равенство - это когда можно написать 1=x без изменения семантики. Такое возможно лишь в некоторых, великих ЯП:
>> пролог
> В V сравнение ==
> присваивание =
> к чему тут ссылки на Вирта?Наверное, к чтению перед жмяканием на "ответить"?
Школьное (и не только) написание подразумевает именно равенство (можно писать 1 = x или f(x) = x² + y = g(x)), поэтому и отсылки на "школьный" синтаксис в этом контексте немного "мимо".
> можно писать 1 == x или f(x) == x² + y == g(x))Вот и я о чём.
>> можно писать 1 == x или f(x) == x² + y == g(x))
> Вот и я о чём.Ни о чем? Тем более, "поправляя" без понимания смысла.
Еще раз, для невнимательных:
?- 1 + 2 + 3 = 1 + X + 3, 1 + 2 = Y,write([X,Y]), Y = X.
[2,1+2]
false.?- 1 + 2 + 3 = 1 + X + 3, write(X), 3 + 2 + 1 = 3 + X + 1.
2
X = 2.?- X=1, 2=X.
false.?- 1=X, X=2.
false.?- 1=X, X=1.
X = 1.?- X=1, 1=X.
X = 1.
тут нет разделения на "декларацию" и "сравнение" (и семантика намного ближе к "школьному" употреблению), в отличие от.
Могу ещё раз."Тут", то есть в языке V, оператор сравнения (ил "равенства", как его называют некоторые) записывается как ==
> Могу ещё раз.
> "Тут", то есть в языке V, оператор сравнения (ил "равенства", как его
> называют некоторые) записывается как ==Осталось бы прояснить, причем тут изначальное
> Объявление "переменных" (которые по умолчанию константы) через :=
> В школе на уроках математики пишем x = 1
> здесь x := 1Но мне уже не интересно …
> Осталось бы прояснить, причем тут изначальное
>> Объявление "переменных" (которые по умолчанию константы) через :=
>> В школе на уроках математики пишем x = 1
>> здесь x := 1Объяснял же. Это декларации. В частности, по завершению решения уравнения, в ответе не пишем 1 = х.
> Но мне уже не интересно …
Я за вами бежала три дня и три ночи, что бы рассказать как Вы мне безразличны (с)
> В частности, по завершению решения уравнения, в ответе
> не пишем 1 = х.А кто не дает? Семантически это одно и то же. При решении уравнения ответ читается как равенство "икс равен пяти", а не присвоение и проч.
Что вам тут и пытались разъяснить.
К тому же, вы не можете вначале написать x=1, а в ответе x=2.
>> В частности, по завершению решения уравнения, в ответе
>> не пишем 1 = х.
> А кто не дает?МарьИванна ставит двойку и заставляет всю тетрадку переписывать .(
> Семантически это одно и то же.
А вот с этой гипотезой - к авторам функциональных языков, откуда в V заимствован вывод типов при объявлении.
> При решении
> уравнения ответ читается как равенство "икс равен пяти", а не присвоение
> и проч.
> Что вам тут и пытались разъяснить.Где вы вообще у меня увидели, что я такие объявления называю присваиванием?
> К тому же, вы не можете вначале написать x=1, а в ответе
> x=2.Потому что "в школе" это не присваивание, а декларация (равенства, если так хотите).
В V декларация :=
а "школьная" декларация в V имеет семантику присваивания. То есть всё наоборот.
Спасибо. Я как то даже не потрудился глянуть в это поделие.
А a == b Вас не бесит?
> А a == b Вас не бесит?Для этого есть Source Insight. Вместо != показывает ≠.
Ну дык а := ты можешь заменить на ←
если цитирующие доку нам не врут - ← = замена =, а := - =что в нормальных языках программирования = полсотни лет, а идиотским синтаксисом вирта никто кроме пейсателей буков в учебники так и не пользуется (поскольку выбрать не просто лишний символ, а еще и требующий нажатия shift, мог только прохвессор кислых щей, не пользующийся компьютером в принципе - каковым Вирт и был) - это уже мелочи.
> выбрать не просто лишний символ, а еще и требующий нажатия shift,
> мог только прохвессор кислых щей, не пользующийся компьютером в принципе - каковым Вирт и был) - это уже мелочи.Хм, а я-то думал что это из Алгола заимствовано было, а оно во как оказывается.
Да и Бэкус c Перлисом в качестве кислощейных "прохвессоров" … срывает покровы.
Чего только не узнаешь на opennetleaks *ушел в потрясенном состоянии*
так алгол и был теоретическим языком для теоретиков - его вообще никто не предполагал использовать по прямому назначению - пока один советский прохфессор не понял задачу неправильно и не написал таки работающий компилятор - о чем не факт что вообще узнали в остальном мире (у Вирта хотя бы изначально были студенты для этой цели - то есть он вообще-то для компиляции, а не для демонстрации прекрасностей самого языка это все придумал, даром что сам предпочитал не мараться о низкие материи)> Чего только не узнаешь на opennetleaks *ушел в потрясенном состоянии*
не уходите, у меня для вас еще более ужасная новость: на языках, написанных практиками - практически весь этот ваш юникс и линукс написаны, и даже винда, проклятая.
А на языках прохфессоров кислых щей - практически, ничего.
А баллистику как считали на фортране, так и считают - и да, там тоже =, если вы не в курсе.
> так алгол и был теоретическим языком для теоретиков - его вообще никто
> не предполагал использовать по прямому назначению - пока один советский прохфессор
> не понял задачу неправильно и не написал таки работающий компилятор -Гм-хм.
Т.е. Z23 с прилагающимся "из коробки" ALGOL 60 у вас там не существовал, да и о Дейкстре (http://www.dijkstrascry.com/node/4) Вы не слышали?
> Dijkstra and Zonneveld, by contrast, did succeed in building one of the first ALGOL60 compilers which could handle almost all of the language, including the recursive procedure. It was completed in August 1960 and impressed several researchers. In Naur's words:.
> на языках, написанных практиками - практически весь этот ваш юникс и линукс написаны, и даже винда, проклятая.Да-да, только количество костылей, всяких "ДОНТС" при написании и сложность современных компиляторов для отлова самых распространенных грабель написания и оптимизации "немного" зашкаливает, а так все норм, че.
> А на языках прохфессоров кислых щей - практически, ничего.
Ну-ну. То ли дело анонимы на опеннете, куда там каким-то Дейктрам и Бэкусам :rolleyes:
>а-да, только количество костылей, всяких "ДОНТС" при написанииТут ещё нужно добавить и огромную нужду в статических анализаторах одной из задач которых отлавливание перепутанных "=" и "==".
>>а-да, только количество костылей, всяких "ДОНТС" при написании
> Тут ещё нужно добавить и огромную нужду в статических анализаторах одной из
> задач которых отлавливание перепутанных "=" и "==".Я вполне еще помню "ДОС" в виде сравнения с константами и прочим "100500 == x", в качестве подстраховки.
Однако там все еще хуже -- угадайте откуда пошли префиксы "tv_, st_" в классическом:
struct timeval {
time_t tv_sec; /* seconds */
suseconds_t tv_usec; /* and microseconds */
};
struct stat {
dev_t st_dev; /* ID of device containing file */
ino_t st_ino;
(подсказка: общий namespace для всех struct и union в K&R)
Зато адепты[0] могут в комментариях хвалиться "экономией" на знаке ":".[0] Есть подозрение, что это классическая "любовь на расстоянии" ;-)
Можно ещё вспомнить стандарт MISRA C для ошибко-устойчивого программирования на этом языке. Т.е. вначале создаётся язык от профессоров некислых щей, а потом к нему костыли от которых некислощевый язык превращается в нечто пригодное для программирования критичных к ошибкам систем.
> Можно ещё вспомнить стандарт MISRA C для ошибко-устойчивого программирования на этом языке.
> Т.е. вначале создаётся язык от профессоров некислых щей, а потом кпотом на нем пишут что-то стоящее - и вот только потом, когда к языку приобщаются неосиляторы, начинаются:
> нему костыли от которых некислощевый язык превращается в нечто пригодное для
> программирования критичных к ошибкам систем.иначе бы про C помнили примерно как про BCPL - "была такая неуклюжая попытка сделать язык для быстрого программирования, но, поскольку программы на нем получались неработающие из-за плохого синтаксиса, провоцирующего ошибки, а компилятор был вдвое медленнее фортрана - о нем все забыли, и вернулись к истокам, то бишь к алголу и паскакалю. А двое неудачников-авторов были уволены из беллабс за нецелевое расходование электричества, и их дальнейшая судьба неизвестна."
> Т.е. Z23 с прилагающимся "из коробки" ALGOL 60 у вас там не существовалу нас тут он точно не существовал, да и вообще существовал неведомо где - я вот впервые услышал это название. Вы его точно не сегодня в викивракии откопали по запросу algol60 ?
> да и о Дейкстре (http://www.dijkstrascry.com/node/4) Вы не слышали?
мы не слышали ни об одной его программе, получившей более-менее массовое распространение, а не "impressed several researchers". Отчасти, конечно, потому что прохвессор творил во времена, когда с массовым вообще было не очень - сколько там их в мире могло поместиться, по мнению IBM - 100? Так что он-то мог позволить себе бумажное программирование и теоретизирование без программирования вообще.
Только когда дошло до практики - вся его наука надолго оказалась не у дел.А вот поделие советского прохфессора, неверно понявшего посыл, таки стояло на каждой БЭСМ6, а их, кажется, было выпущено даже и не одна сотня. (только вряд ли там был 60)
Ну пох-то поумнее их всех будет, неучей да самозванцев. Светило и надежда прогрессивной науки, епт.
> если цитирующие доку нам не врут - ← = замена =, а
> := - =Ну с Паскалем там (по крайней мере, было в 3й версии) сильно хуже, чем в С. Всё ж там капризы только за наши деньги. Но идея в целом понята верно. Почему её не реализовали в других самых лучших редакторах энд девелоперз энверонментз?
> Ну дык а := ты можешь заменить на ←Вот. Если захотеть, можно что угодно заменить по своему вкусу. О чём спорят все эти люди?
> А a == b Вас не бесит?нет
Ну тогда у Вас просто синдром утёнка.
Синдром утенка это === все-таки.
> Ну тогда у Вас просто синдром утёнка.ничё подобного, только практичность, только лень
операция присваивания - частая, каждый раз набирать лишний символ ... бесит)
в V := -- это не присваивание, а объявление и присваивание. Аналогичная конструкция в C++ этоauto a = 1;
В V, как мы видим, короче. И не на один символ.
> В V, как мы видим, короче. И не на один символ.ну, кстати, попробовал - auto быстрее и не сбиваешься при наборе. Все же упражнение на одновременное нажатие двумя мизинцами - это для особо одаренных пианистов.
> Ну тогда у Вас просто синдром утёнка.А у меня синдром дока, который не видел доки?
num := 777
s := if num % 2 == 0 {
'even'
}
else {
'odd'
}
println(s) // ==> "odd"
>[оверквотинг удален]
>
> num := 777
> s := if num % 2 == 0 {
> 'even'
> }
> else {
> 'odd'
> }
> println(s) // ==> "odd"
>Вы хотите сказать, что в V оператор равенства == ?
>[оверквотинг удален]
>> num := 777
>> s := if num % 2 == 0 {
>> 'even'
>> }
>> else {
>> 'odd'
>> }
>> println(s) // ==> "odd"
>>
В Вашей терминологии, именно так.
Ну а то, что оператор (что делает?) сравнивает, значит он оператор сравнения; а == означает равенство (значит это знак равенства) -- уже детали.
Нашёл.
https://vlang.io/docs#ifВот это самый настоящий бред освободить оператор =, но при этом для равенства задействовать оператор == !
> Нашёл.
> https://vlang.io/docs#if
> Вот это самый настоящий бред освободить оператор =, но при этом для
> равенства задействовать оператор == !В ML:
декларация (все "переменные" константы, тип выводится по Хиндли-Милнеру) =
присваивание (ссылочным типам) := или <- (для указателей)
сравнение ==Автор, похоже, впечатлился языками, производными от производных, но где-то случился "испорченный телефон".
Я понимаю, что в рунете принято критиковать по принципу "не читал, но осуждаю", так сказать культурно-историческая психологическая травма. Но меру-то надо знать, а?Оператор = не свободен. Он занят, причём ровно для того же, для его он используется в C/C++, для присваивания. Это прям там в доках и написано.
> Я понимаю, что в рунете принято критиковать по принципу "не читал, но
> осуждаю", так сказать культурно-историческая психологическая травма. Но меру-то надо
> знать, а?Ничего Вы не понимаете!
Я на работе, у меня нет времени изучать документацию, да ещё и на английском, к каждой новости.
Я оперирую только текстом из новости, в которой написано
> все объекты по умолчанию являются неизменяемыми (immutable), поддерживается только один вид присвоений ("a := 0"),И во всех примерах, даже не в объектах, для присваивания используется оператор := !
> Оператор = не свободен. Он занят, причём ровно для того же, для
> его он используется в C/C++, для присваивания. Это прям там в
> доках и написано.Если Вы это действительно нашли в доках, то почему вместо того, чтобы чесать языком печатая всякую глупость, просто привести ссылку на доку и процитировать нужный текст? А?
>> Я понимаю, что в рунете принято критиковать по принципу "не читал, но
>> осуждаю", так сказать культурно-историческая психологическая травма. Но меру-то надо
>> знать, а?
> Ничего Вы не понимаете!
> Я на работе, у меня нет времени изучать документацию, да ещё и
> на английском, к каждой новости.Ну да, ну да. На работе он. Времени у него нет. А вот на то, чтобы поcpaться в комментах о никому не нужном языке время есть.
> Я оперирую только текстом из новости, в которой написано
>> все объекты по умолчанию являются неизменяемыми (immutable), поддерживается только один вид присвоений ("a := 0"),Хех. Я не читал новость настолько внимательно: смысла читать перевод, если есть ссылка на оригинал?
> Если Вы это действительно нашли в доках, то почему вместо того, чтобы
> чесать языком печатая всякую глупость, просто привести ссылку на доку и
> процитировать нужный текст? А?Во-первых, я не на работе и время у меня есть. Во-вторых, поглумиться над нашими национальными особенностями мне доставляет особенное удовольствие. Во-третьих, ссылка на эту доку была выше в треде. А насчёт цитаты:
> Please note the difference between := and =
> := is used for declaring and initializing, = is used for assigning.
== пишется быстро, при том, что используется не часто.
= пишется быстрее чем := и используется часто и без шифта.
Сами подумайте, что лучше или у вас какая-то другая клавиатура?
> == пишется быстро, при том, что используется не часто.
> = пишется быстрее чем := и используется часто и без шифта.
> Сами подумайте, что лучше или у вас какая-то другая клавиатура?Ещё бы думать научиться с той же скоростью.
> == пишется быстро, при том, что используется не часто.
> = пишется быстрее чем := и используется часто и без шифта.
> Сами подумайте, что лучше или у вас какая-то другая клавиатура?1 В моём коде я сравниваю куда чаше чем присваиваю!
При этом присваиваю один раз и забываю, а вот над равенством я думаю и могу много раз изменять условия, которых может быть и за десяток.2 Невообразимо больше времени уходит не на печать кода, а на его чтение и анализ!
И в первую очередь он должен быть легко читаемым, а не легко печатаемым!3 Двоеточие находится рядом с правым шифтом, где и знак равенства, и набирается := без особых проблем.
Илюша, научись уже слепой печати.
"без особых проблем" набирается не то что рядом, а ровно наоборот.Но тебе, двумя пальчиками, оно все "без особых проблем".
> Илюша, научись уже слепой печати.
> "без особых проблем" набирается не то что рядом, а ровно наоборот.
> Но тебе, двумя пальчиками, оно все "без особых проблем".Такт я и набираю := слепо не глядя на клаву.
при этом я слепо набирать текст не могу.
> "без особых проблем" набирается не то что рядом, а ровно наоборот.Равзе что если кнопочки излишне мелкие.
Но как раз в RU-раскладке shift и ":" совсем не рядом.> Но тебе, двумя пальчиками, оно все "без особых проблем".
А сколько надо? Мизинец на shift, указательный на один ряд вверх и в сторону.
Ну и разница заметна разве что если нужно печатать на скорость, под диктовку, выдавая никак не меньше 300 знаков в минуту.
> Но как раз в RU-раскладке shift и ":" совсем не рядом.о, программисты на 1С пожаловали. А что, у вас там разьве := ? 8-O
>> Но как раз в RU-раскладке shift и ":" совсем не рядом.
> о, программисты на 1С пожаловали.Странные у вас фантазии.
Т.е. вы вроде как владеете "слепой печатью" (нашли чем хвастаться в почти 2020ом), но не в курсе где, в самых распространенных раскладках, ":"? Яснопонятно.
> Странные у вас фантазии.Нет, он просто намекает что когда программист пишед код, у него одна раскладка. если это не программист на 1С. Так понятнее?
>> Странные у вас фантазии.
> Нет, он просто намекает что когда программист пишед код, у него одна
> раскладка. если это не программист на 1С. Так понятнее?Я ж и говорю про виляни^W фантазии и стандартный на опеннете ход -- "если нечего возразить по теме, обвини в <виндузятничестве, криворукости, жопоскритничестве/вебмакакности/одинэсности> (вставить нужное)" …
Теоретически я мог бы сделать фотки моих клавиатур - там русских букавок вообще немаэ, но … слишком много чести.
Кстати, что там с ответами на изначальные вопросы о "сложности набора" := (это у нас правый мизинец+ правый согнутый указательный, потом правый прямой средний. Да-да, я слепую печать еще в прошлом веке освоил, ага). Причем оно примерно одинаково в раскладках US, DE, GB, FR (плюс испанский и финский).
Да и смысл "экономии" этой доли секунды для ":" -- Вы что, выдаете код со скоростью 300-400 знаков (т.е. 30-60 слов) в минуту, правда-правда?
> Нет, он просто намекает что когда программист пишед код, у него одна
> раскладка. если это не программист на 1С. Так понятнее?и, похоже, ошибся - этот человек вообще никогда не пишет кода, ни на каком языке, включая 1С - то есть он даже не понял, о чем мы.
(в 1C _тоже_ одна раскладка - другая ;-) более того, именно ради этого они такой язык и сделали - чтобы не переключаться без конца - учитывая, что в прекрасной венде это делается любым из трех очень неудобных способов)
>> А сколько надо? Мизинец на shift, указательный на один ряд вверх и в сторону.
> и, похоже, ошибся - этот человек вообще никогда не пишет кода,Если для Вас "писать код" означает выдавать под диктовку минимум 500 знаков в минуту/12ч в день (и за каждую запинку -- палкой, палкой!), то да, это действительно не ко мне. Поэтому ваши "страдания" понятны только вам, увы.
Что только не придумывают местные Ванги, лишь бы не отвечать на неудобные вопросы …
> Если для Вас "писать код" означаетвот и началось верчение ужом.
Признайтесь уже - не писали и не пишете вы никакого кода. Только комменты на опенетике, где, действительно, у вас русская раскладка.И да, писание кода не заключается в выдавливании из себя по символу в минуту. Ну, во всяком случае, я еще не видел таких причудливых писателей. Обычно код сначала придумывается - в голове, потом записывается - и вот эта вторая операция - рутинная, чем она быстрее и надежнее - тем лучше, поскольку лично я вот однозадачен, и пока не запишу кусок - следующий придумывать не начну.
при траблшутинге, если что - когда, действительно, 90% времени ты код читаешь, ситуация такая же - дочитав и решив исправить какое-то место, ты уже не будешь обдумывать каждый символ.
И времени на колочение по клавишам, на самом деле, уходит довольно много. То есть это часы, даже в небольшом проектике.
>> Если для Вас "писать код" означает
> вот и началось верчение ужом.
> Признайтесь уже - не писали и не пишете вы никакого кода. Только
> комменты на опенетике, где, действительно, у вас русская раскладка.Вот и продолжились странные фантазии и стандартные "ходы" на опеннете.
Но с интригой перебор - мне уже почти не интересно, какая нетрадиционно-альтернативная зашоренность взглядов могла привести к таким выводам.> - и вот эта вторая операция - рутинная, чем она быстрее
> и надежнее - тем лучше, поскольку лично я вот однозадачен, и
> пока не запишу кусок - следующий придумывать не начну.Научитесь слепому 8-10 пальцевому набору. Помогает! Хотя да, в преклонном возрасте придется постараться, но оно того стоит!
> при траблшутинге, если что - когда, действительно, 90% времени ты код читаешь,
> ситуация такая же - дочитав и решив исправить какое-то место, ты
> уже не будешь обдумывать каждый символ.Слепой набор спасет Вас! В этом случае пальцы все делают "сами". Да-да!
> И времени на колочение по клавишам, на самом деле, уходит довольно много. То есть это часы, даже в небольшом проектике.
Не пойму, то ли это опять виляние чисто по привычке, то ли кое-кто при "Илюша, научись уже слепой печати." скромно умолчал о собственных пробелах в умениях …
В общем, освойте уже слепую печать в раскладке с латинскими буковками и посмотрите внимательно на ЯПы "семейства Сишных" (но не на плюсяы, если антипатия к ":" врожденная. А то ж не приведи Бит, инфаркт хватит)
Тогда Вы наконец узнаете, где располагаются клавиши для скобок и ";", которые в распространенных ЯП употребляются никак не реже знака равенства.
А то как-то странно даже, что потребность жмяканья на +"{}(); вас не ничуть смущают …
> Научитесь слепому 8-10 пальцевому набору. Помогает! Хотя да, в преклонном возрасте придетсявы уже забыли с чего началось или делаете вид?
Помогает - только вот необычные язычки с оператором присваивания, набираемым нажатием трех клавиш в правильной последовательности одними мизинцами - вызывают обоснованные подозрения в том, что их разработчики были п-сами...зачеркнуто - набирали двумя пальчиками, или вообще программировали в тетрадочке, поэтому и не видели в этом никакой проблемы.> Тогда Вы наконец узнаете, где располагаются клавиши для скобок и ";", которые
; не требует одновременно другим мизинцем вовремя нажать и вовремя отпустить shift, его набирать вполне удобно.
скобки в общем-то тоже> в распространенных ЯП употребляются никак не реже знака равенства.
> А то как-то странно даже, что потребность жмяканья на +"{}(); вас неиз этого списка неудобны только {}, но они и логически, и физически отделены от окружающего кода, это бесит гораздо меньше чем :=
Паскалевские операторные "скобки", если что, действительно набираются быстрее.Самая же отвратительная в околосишных языках последовательность, на мой взгляд, /* */ (набираю на keypad, ага)
>> Научитесь слепому 8-10 пальцевому набору. Помогает! Хотя да, в преклонном возрасте придется
> вы уже забыли с чего началось или делаете вид?Стоило ответить в вашем же стиле и сразу вспомнилась исходная тема? Ох!
> Помогает - только вот необычные язычки с оператором присваивания, набираемым нажатием трех
> клавиш в правильной последовательности одними мизинцами - вызывают обоснованные подозрения
> в том, что их разработчики были п-сами...зачеркнуто - набирали двумя пальчиками,
> или вообще программировали в тетрадочке, поэтому и не видели в этом никакой проблемы.Я уже выше писал (но Вы предпочли не заметить и пофантазировать о чем-то постороннем) о раскладках.
Разъясняю мыслю -- далеко не у всех буковки на клавиатуре русские.
Далеко не все обладатели латинских буковок на клавиатуре, отличной от US/GB заморачиваются с изучением "той самой единственной-верной" раскладки.
Поэтому "удобство" нажатия определенных клавиш следует оценивать не только глядя на родную клаву с залипшими после компота кнопками в раскладке US (тем более, раскладки вроде как после 60х могли сильно поменяться).> набираемым нажатием трех клавиш в правильной последовательности одними мизинцами
И об этом я тоже писал-справшивал, вполне нормально кстати:
> А сколько надо? Мизинец на shift, указательный на один ряд вверх и в сторону.
> это у нас правый мизинец+ правый согнутый указательный, потом правый прямой среднийТ.е. нажимать "как удобно", а не "как учили на курсах, спроектированных еще для пиш-машинки мохнатых годов" Вам в голову не приходило, но "виноваты" другие?
> из этого списка неудобны только {}, но они и логически, и физически
> отделены от окружающего кода, это бесит гораздо меньше чем :=
> Паскалевские операторные "скобки", если что, действительно набираются быстрее.(могу подкинуть ->, комбинации <= >= +=)
В общем, тупо личная неприязнь/заморочка.
(зато, млин, всю "подоплеку" чуть ли не клещами вытягивать пришлось).
И вся "оценка" отталкивается именно оттуда. Понятненько.
> Разъясняю мыслю -- далеко не у всех буковки на клавиатуре русские.надо же, как интересно.
Вы таки программист на 1С но в варианте для Румынии?Буковки на клавиатуре у всех остальных могут быть любые, но вот программированием они занимаются - на английской (в крайнем случае - немецкой) раскладке. За неимением в природе 1Са с румынским словарем.
> Т.е. нажимать "как удобно", а не "как учили на курсах, спроектированных еще для пиш-машинки
> мохнатых годов"угу, там ведь учили - как неудобно, назло врагу, а не как максимально эффективно и быстро, ну конечно же.
Мне удобно - не двигать кисть с рабочей позиции, и не нащупывать каждый раз клавиши. А что вы там, кстати, врали, что слепым набором владеете?
> Могу подкинуть ->, комбинации <= >= +=
встречаются значительно реже, набираются удобнее :=
>> Разъясняю мыслю -- далеко не у всех буковки на клавиатуре русские.
> надо же, как интересно.
> Вы таки программист на 1С но в варианте для Румынии?Надо же, как интересно - опять пошли бурные фантазии. Вы таки фантазер на опеннете, но в варианте "для Гасконии"?
> Буковки на клавиатуре у всех остальных могут быть любые, но вот программированием
> они занимаются - на английской (в крайнем случае - немецкой) раскладке.
> За неимением в природе 1Са с румынским словарем.Советую для начала посмотреь в википедии, кем была половина проектировщиков алгола по национальности. Как впрочем и Вирт.
Потом прошу предоставить результаты репрезентативного опроса разработчиков. Мне аж интересно, откуда опять такая непоколебимая уверенность (а то ж были уже прецеденты).
> угу, там ведь учили - как неудобно, назло врагу, а не как
> максимально эффективно и быстро, ну конечно же.Угу, это ж я (и только я) ною про неудобство нажатия :=.
Интересно, сколько знаков в минуту выдают "эффективные и быстрые".> Мне удобно - не двигать кисть с рабочей позиции, и не нащупывать каждый раз клавиши.
> А что вы там, кстати, врали, что слепым набором владеете?Для начала: зачем вообще двигать "кисть с рабочей позиции"? И зачем нащупывать? (т.е. даже попробовать не судьба - некогда, нужно ж фантазии на опеннете печатать. Не говоря уже о том, что позиционировать кисть в слепую в общем-то невиликая трудность).
Вы точно владеете слепым набором и это не стандартная "техника опеннета -- обвини первым"?
(кстати, для начала неплохо узнать, что это "набор не глядя на клавиши", а не "набор именно так, как когда-то выучил некий пох". Ну или для начала научиться различать "десятипальцевый классический, как учили некого поха" и просто "слепой" наборы)
>> Вы таки программист на 1С но в варианте для Румынии?
> Надо же, как интересно - опять пошли бурные фантазии. Вы таки фантазеря таки пытаюсь угадать, откуда берутся дятлы, стойко не способные сообразить, что для программирования у всех, кроме румын, одна и та же раскладка.
вероятно второе предположение все же ближе всего к истине, и вы никогда ниакого кода кроме как в тетрадочке не писали.>> Буковки на клавиатуре у всех остальных могут быть любые, но вот программированием
>> они занимаются - на английской (в крайнем случае - немецкой) раскладке.
>> За неимением в природе 1Са с румынским словарем.
> Советую для начала посмотреь в википедии, кем была половина проектировщиков алгола по_клавиатуры_ у них (тех немногих, которые не рассматривали его как язык не предназначенный для практического применения, каковым он и был задуман) были точно такие же как у всех, поскольку использовались пишущие машинки или кнопки от них. Уже сильно позже появились еще и без полного набора ascii иногда https://profit.kz/Content/Images/PCmuzeum28CM7209.JPG
(ничего необычного никто не замечает? Ага, вот поэтому и триграфы ;-)> Для начала: зачем вообще двигать "кисть с рабочей позиции"? И зачем нащупывать?
затем что иначе : у меня под мизинцем. Да, я не программирую на 1С, поэтому раскладка клавиатуры при работе с кодом у меня английская.
> (т.е. даже попробовать не судьба - некогда, нужно ж фантазии на
> опеннете печатать. Не говоря уже о том, что позиционировать кисть в
> слепую в общем-то невиликая трудность).просто неудобно и сбиваешься, а то и промахиваешься. Собственно, с вашим любимым : - то же самое.
> я таки пытаюсь угадать, откуда берутся дятлы, стойко не способные сообразить,
> что для программирования у всех, кроме румын, одна и та же раскладка.Результаты опроса где, о "недятел"? Или опять "это знают все!" -- и все эти суждения "о делах мирских", не отрывая зад от кресла?
> вероятно второе предположение все же ближе всего к истине, и вы никогда
> ниакого кода кроме как в тетрадочке не писали.Предположение, что вы опять толкаете предположения и "догадки с высоты дивана" под видом фактов, скорее всего все же ближе к истине и вы никогда не видели не только "интернациональное сборище погроммистов" вживую, но скорее всего и клавиатуры.
> _клавиатуры_ у них (тех немногих, которые не рассматривали его как язык не
> предназначенный для практического применения, каковым он и был задуман) были точно
> такие же как у всех, поскольку использовались пишущие машинки или кнопкиА теперь загуглите фотки этих пишущих машинок и сравните с актуальными клавиатурами.
https://i.etsystatic.com/13071313/r/il/ff7b68/1893608492/il_...
https://upload.wikimedia.org/wikipedia/commons/8/8c/RoyalQui...
Таб справа, половина привычных символов отсутствует.
Во-во, "такие как у всех", оно и видно.
(и бить там нужно было по клавишам "резко и с оттягом", чтобы буковки значится на бумаге проявлялись -- уж никак не "левым мизинцем слегка прижать)> просто неудобно и сбиваешься, а то и промахиваешься.
Освойте уже слепую печать и не промахивайтесь мимо кнопок.
>> Для начала: зачем вообще двигать "кисть с рабочей позиции"? И зачем нащупывать?
> затем что иначе : у меня под мизинцем. Да, я не программирую
> на 1С, поэтому раскладка клавиатуры при работе с кодом у меня английская.Скажите, какое слово вам было непонятно в
> это у нас правый мизинец+ правый согнутый указательный, потом правый прямой среднийИ какая это тогда по вашему была раскладка?
Кстати, столь частое упоминание (при старательном отрицании) 1С наводят на совсем другие мысли.
Но если вам таки нечего возразить именно по теме (кроме в очередной раз "у меня личные заморочки и фобии, а значит они у всех! А кто не понимает - 1Сник!" или "Великий Я не может себе представить, а значит вы все врети!" ), то оставьте их при себе и разрешите откланяться.
Или вам важно по каким-то причинам оставить "последнее слово" за собой? Тогда ладно, так уж и быть, фантазируйте и далее.
>> == пишется быстро, при том, что используется не часто.
>> = пишется быстрее чем := и используется часто и без шифта.
>> Сами подумайте, что лучше или у вас какая-то другая клавиатура?
> 1 В моём коде я сравниваю куда чаше чем присваиваю!Просто первый попавшийся пример:
let neg x =
match x with
| false -> true
| true -> false
;;
Готлин какой-то :)
> решении задач по упрощению сопровождения разработкиЧто это значит?
для изучения ... достаточно 30 минут ... документации
любой дежурный оператор сможет поддерживать...через полчаса изучения документации...
Приходилось видеть формулировки "язык общего назначения", или "для того-то". Тут как бы для "переписать всё на V".
V for Vasyan
Сегодня точно не 1 апреля?
не. но скоро пятница...
Пятница начинается в понедельник
И я покритикую, а то таки пафоса многовато.> По сравнению с C++ новый язык ... обеспечивает более высокую скорость компиляции (до 400 раз) ... Скорость компиляции составляет примерно 1.2 млн строк кода в секунду на одном ядре CPU
Однако "V can also emit C, then the compilation speed drops to ≈100k lines/second/CPU."
Налицо нечестное сравнение. Либо не сравнивать с С++, либо сравнивать на похожем коде. А то я щас быстренько запилю компилятор ассемблера и напишу, что он работает в миллион раз быстрее компилятора С++. Причем с доказательствами.
> Налицо нечестное сравнение. Либо не сравнивать с С++, либо сравнивать на похожемТам много "странностей". Хотя бы:
> Судя по проведённым разработчиком тестам самосборка Go требует 512 Мб дискового пространства и
> выполняется за полторы минуты, Rust требует 30 Гб и 45 минут, GCC - 8 ГБ и 50 минут,
> Clang - 90 Гб и 25 минут, Swift - 70 ГБ и 90 минут;Иногда собираю шланг, при этом свободного места на диске 72GB.
GCC вообще собирается в tmpfs (size=5GB) на 8ГБ ОЗУ, которых хватает и на сборку gcc8 и запущенный жирноли^W браузер …
> Налицо нечестное сравнение.Какая разница, честное или нет. Этот язык, судя по тому, что говорят, ничего не умеет из описанного. Я могу написать компилятор, который ничего не умеет, и он будет компилировать себя столько времени, сколько требуется на fork+exec+exit.
что бы транслятор назывался компилятором, он должет превращать высокоуровненый язык в низкоуровненый. добавьте команду world.
> что бы транслятор назывался компилятором, он должет превращать высокоуровненый язык в низкоуровненый.
> добавьте команду world.Пожалуйста, забери эти терминологические тонкости себе. Мне они не нужны.
V значит вендетта ?
Да, вендетта сишечке
V значит wip ( https://vlang.io/ )
Визитёры. https://ru.wikipedia.org/wiki/V_(мини-сериал,_1983) Для рептилоидов, короче. :)
Если это действительно всё правда, и быстродействие скомпилированного кода не сильно отличается от C, то это лучший ЯП со времён C!
Чудес не бывает. Чаще скорость компиляции увеличивается отключением оптимизации, или злокачественным упрощением языка.Если писать на Си в очень "дубовом" стиле, то он и без оптимизации способен на сверх эффективный код. Но так писать, не только не понравится, но и черевато граблепроходством, и перерасходом времени.
всё неправда
> нет null, все значения переменных всегда обязательно должны быть определены
> Обеспечение безопасности: отсутствие NULLАвтор вообще понимает для чего нужен NULL? С базами данных он знаком?
>> нет null, все значения переменных всегда обязательно должны быть определены
>> Обеспечение безопасности: отсутствие NULL
> Автор вообще понимает для чего нужен NULL? С базами данных он знаком?Автор в процессе.
mut m := map[string]int{} // Only maps with string keys are allowed for now
m['one'] = 1
println(m['one']) // ==> "1"
println(m['bad_key']) // ==> "0"
// TODO: implement a way to check if the key exists
>> нет null, все значения переменных всегда обязательно должны быть определены
>> Обеспечение безопасности: отсутствие NULL
> Автор вообще понимает для чего нужен NULL? С базами данных он знаком?JSON не то что NULL, он ничего кроме строк не понимает, но это не помешало ему вытеснить XML и стать самым востребованным форматом передачи данных, включая внутри некоторых СУБД.
> JSON не то что NULL, он ничего кроме строк не понимаетЭто вы явно глупость ляпнули.
>> JSON не то что NULL, он ничего кроме строк не понимает
> Это вы явно глупость ляпнули.Согласен!
Полез проверять в JS, работает нормально, в PHP:
https://www.php.net/manual/ru/function.json-encode.php
> int $options = 0
> options
> Битовая маска, составляемая из значений ... JSON_NUMERIC_CHECK ...Это оказывается он в PHP так по умолчанию, через жопу работает, а я думал это так везде.
> в PHP ... через жопу работаетКто бы мог подумать...
> JSON не то что NULL, он ничего кроме строк не понимаетЧто за бред? JSON естественно текстовый формат, но null он поддерживает.
> > let number = 1.1, string = "строка", array = [], object = {}, boolean = true, NULL = null;
> > let data = [number, string, array, object, boolean, NULL];
> > JSON.stringify(data);
> < [1.1,"строка",[],{},true,null]
Благодарю за поправку!
В комментарии выше отписал.
это будет фича новой версии - автор откроет для себя Null и расскажет об этой классной штуке миру.
Пишу на html, осваиваю javascript. Подскажите, стоит ли изчуать этот язык?
Осваивайте дальше javascrit, всё равно пригодится. Когда освоите глубоко, посмотрите и другие на актуальные, а не экспериментальные средства разработки.
Пишу на md, осваиваю json. Подскажите, зачем так жить?
>> указано на использование для удаления каталога команды rm через вызов os.system("rm -rf $path"), но автор проекта опроверг данные сообщения и заявил, что они опубликованы троллем и не соответствуют действительности (поиск по коду в GitHub также не находит подобные факты использования os.system).Все там было:
https://github.com/vlang/v/commit/b5c3cda33b53b7eee9c2b4f2be...
С какой-то демонсрацией этот V.
...около 10 сообщений с демонсрацией низкого качества кода...
Я не буду использовать этот язык скорее всего.
Я тоже, давай дружить.
Крутой язык, давно ждали, а то Rust совсем упоротый!
Ну наконец то их открыли.
Свелосипедили Golang? Мда. Закапывайте.
Ну прям "святой грааль"!!
У тебя ещё остались командные заклинания? Тогда ты знаешь, что делать.
Нет, грааль - это GraalVM.
> и обеспечить возможность "горячей" перезагрузки кода.Прям by-design. Наконец-то.
Есть такой старый дядя Вирт, учебники Паскаля в РФ его продавали. Он пару известных языков, компиляторов и ОС написал. В заключение он сделал два вывода:1. Чтобы написать что-то простое надо намного больше таланта и времени чем что-то сложное.
2. Язык программирования, его компилятор, ОС в которой будут выполнятся проги и процессор надо разрабатывать паралельно одной большой командой. Все 4 компонента должны одновременно проектироватся/подгонятся друг под друга.
Сабж, для всех платформ, всех графических интерфейсов, будет одинаково плох для всех.
> 2. Язык программирования, его компилятор, ОС в которой будут выполнятся проги и процессор надо разрабатывать паралельно одной большой командой. Все 4 компонента должны одновременно проектироватся/подгонятся друг под друга.Ну и где этот его Оберон?
Если бы СССР не распался, то скорее всего взлетел бы.
Неа. Практика показывает прямо противоположное: самый успешно взлетевший язык — сишечка, и именно по той причине, что не имеет привязки ни к архитектуре, ни к ОС.
>не имеет привязки ... к ОСИмеет привязку к оригинальному Юниксу, а все последующие системы копировали идеи из Юникса.
Именно потому, что Юникс выстрелил, сишка и выстрелила
для тех кто опоздал родиться а книжек нечитатель - оригинальный был на asm pdp9.
А сишечка была в нем для одной полу-игрушки, space travel, которую немножко заманались кросскомпилять на соседней 11 в обеденный перерыв у соседей, которым она принадлежала. Саму систему на ней переписали сильно позже, и на другой железке, pdp9 не осилила бы.А юникс выстрелил потому , что решал реальные задачи реальных пользователей - поскольку после игрушки и отжатия под нее таки 11й, для него, внезапно, написали troff.
Оберон это давно пройденный вариант.Сегодня самый новый, кажись, "компонентный Паскаль" называется. А ОС "синяя бутылка". Используется в современных истребителях еврофайтер, управляет энергетикой ЕС, включая атомные АС.
Уже ведь есть FPC + Lazarus.
К слову - находящийся на стадии, когда 90% времени тратится на доводку 10% недостающего функционала.
Пишите кто что тяжёлое компилировал гигов так в пятьдесят , то за сколько собралось ? Ну и железо какое.
Отличный язык. Мне нра.
тем временем автора хацкнули через дырки в его языке и окружении: https://christine.website/blog/OVE-20190623-0001
> тем временем автора хацкнули через дырки в его языке и окружении: https://christine.website/blog/OVE-20190623-0001ниоткрываетца.
кажется, чувак не сдаст свой курсовик в срок.
>> тем временем автора хацкнули через дырки в его языке и окружении: OVE-20190623-0001
> ниоткрываетца.
> кажется, чувак не сдаст свой курсовик в срок.Чегой-та? Раздел "работа на будущее", или как там его, с настоящим CVE- будел смотреться даже _лучше_, солиднее и настоящее.
был правильный и хороший язык - FORTH но милионы мух не могут ... и если бы его развитие... а пролог...
понастальгировали :)
FORTH это такой LISP наоборот?
эмм... язык-то конечно был хороший, но дурдом и так переполнен - а вы еще хотите добавить туда поехавших на почве программирования на форте и прологе ;-)
очередной автор не понял, зачем нужна избыточность, и радостно избавился от терминатора. молодец, люблю таких: сразу ясно, что глубже изучать смысла нет.
Его звали Джон Конор.
Необходимо создать языки y и z для полной совместимости)
В общем и целом, его довольно бодренько пилят. Всё ещё неюзабельно (я не могу собрать на нём кастомный модуль), но с каждым днём всё ближе к цели.
Хоть какое-то продолжение школы Вирта. А другой научно обоснованной школы программирования и нет. Всё остальное делалось на глазок сиюминутными вставками вкусностей по потребностям, даже С. Итоговый апофегей всего - супермонстрище С++. Только гордые заокеанские хозяева планеты всей не могут это признать. А боинги в результате бьются. А вот на Луну они же летали на МОДУЛА, детище того же Вирта!
А V хорошо развился за это время.
Уже можно сказать что он юзабелен и вполне стабилен(хоть язык еще синтаксически немного меняется).