Сохранен 71
https://2ch.hk/pr/res/1661602.html
Прошлые домены не функционирует! Используйте адрес ARHIVACH.VC.
24 декабря 2023 г. Архивач восстановлен после серьёзной аварии. К сожалению, значительная часть сохранённых изображений и видео была потеряна. Подробности случившегося. Мы призываем всех неравнодушных помочь нам с восстановлением утраченного контента!

Каким должен быть современный язык программирования?

 Аноним 19/04/20 Вск 10:36:16 #1 №1661602 
coding.png
Опишите минимальные требования к современному языку для системного программирования. Интересуют как технические, так и нетехнические требования.
IDE? Куча готовых библиотек? Совместимость между версиями?
Из нетехнических, например, должна ли за ЯП стоять богатая корпорация (и насколько богатая)? Что ещё?
sageАноним 19/04/20 Вск 12:44:09 #2 №1661746 
>>1661602 (OP)
Такие ебанутые вопросы может рожать только тот кто не программировал.
Аноним 19/04/20 Вск 13:08:54 #3 №1661759 
>>1661746
Сразу видно, что ты никогда не задумывалась о создании языка программирования.
sageАноним 19/04/20 Вск 13:38:40 #4 №1661784 
>>1661759
Я же долбаеб создавать что-то не имею потребности
Если бы у тебя была потребность, то ты бы знал что нужно, а так ты просто еблан которому нечем заняться

Пиздуй в /b вниманиеблдствовать
Аноним 19/04/20 Вск 13:46:58 #5 №1661796 
>>1661602 (OP)
> системного
C всех устраивает, придумывать для него хипстерский синтаксис только из-за того, что ему 50 лет, глупо.
Аноним 19/04/20 Вск 13:53:58 #6 №1661804 
>>1661784
>Я же долбаеб

Достаточно...
Аноним 19/04/20 Вск 13:54:07 #7 №1661805 
>>1661796
С был бы лучше если он бы был похож на котлин

Вот сам оцени:
fun sum(a: Int, b: Int): Int {
return a + b
}
Аноним 19/04/20 Вск 13:55:12 #8 №1661807 
>>1661796
>C всех устраивает

Отучаемся говорить за всех.
Аноним 19/04/20 Вск 14:09:32 #9 №1661819 
>>1661805
синтаксис V ослепляет глаза своей красотой

fn add( x int, y int) int {
return x+y
}
Аноним 19/04/20 Вск 14:12:21 #10 №1661824 
>>1661819
>fix

fn sum(x int, y int) int {
return x+y
}
Аноним 19/04/20 Вск 14:20:15 #11 №1661830 
>>1661824
>>1661819
Без двоеточий не то
Аноним 19/04/20 Вск 14:46:05 #12 №1661875 
>>1661819
Зачем писать "return"? Современный язык должен обходиться без этого.
Аноним 19/04/20 Вск 15:12:15 #13 №1661908 
>>1661875
fun sum(a: Int, b: Int) = a + b
Аноним 19/04/20 Вск 15:19:26 #14 №1661911 
>>1661602 (OP)
>Каким должен быть современный язык программирования?
Менеджер пакетов как у питона или лучше, стандартная библиотека с поддержкой сети, gui, асинхронности, широкий стандартный функционал для работы с текстом, возможность выполнения каких-то легко интегрируемых скриптов на уровне lua или лучше (если это компилируемый язык).
Возможность динамической типизации для кода, где эффективность не так важна и нужна выразительность кода; возможность статической типизации для чего-то ресурсоёмкого.

Джава и питон довольно близки к.

С++ очень не хватает менеджера пакетов и какой-то нормальной стандартизированной системы сборки. Возможно нужно больше синтаксического сахара - позаимствовать из того же питона операторы по типу with, срезы, сделать всякие операции преобразования в текст (питоновский __str__) стандартными операциями подлежащими перегрузке, добавить генераторы.
Это всё и сейчас можно сделать по сути, но синтаксис будет угрёбищный как у шаблонов, всякие многострочные template<typename T, std::enable_if_t<std::is_same<typename std::remove_reference<T>::type, int>::value, int> = 0> - вот это пиздец просто (это вроде бы проверка на тип шаблона, чтобы он компилировался только с интом или ссылкой на него - но вообще чёрт его знает что это), который отбивает желание этим пользоваться.

>>1661875
Как тогда понять где происходит return, а где нет?
Вот у тебя есть функция mul(a, b) - она записывает два числа в лог и перемножает их. Если в твоей функции fn используется mul - как программа поймёт хотел ли ты просто записать два числа в лог или помимо этого ещё и вернуть их как результат функции?
Аноним 19/04/20 Вск 15:40:50 #15 №1661920 
>>1661911
>как
a = mul // хотел
mul // не хотел
Аноним 19/04/20 Вск 15:44:38 #16 №1661925 
image.jpg
>>1661911
>Как тогда понять где происходит return, а где нет?
Растовское неставленье точкизапятой выглядит достаточно элегантно
Аноним 19/04/20 Вск 16:02:44 #17 №1661945 
>>1661911
>Как тогда понять где происходит return, а где нет?

https://play.rust-lang.org/?version=stable&mode=debug&edition=2018&gist=dbbdb5239544d1b27579fdcda398e24c
Аноним 19/04/20 Вск 16:09:46 #18 №1661959 
>>1661911
>С++ очень не хватает менеджера пакетов

vcpkg и conan почему-то не взлетели.
Аноним 19/04/20 Вск 16:22:37 #19 №1661973 
>>1661959
Зато взлетел ебучий язык программирования cmake.
Аноним 19/04/20 Вск 16:35:52 #20 №1662008 
>>1661973
>cmake
Какой язык, такая и система сборки
Аноним 19/04/20 Вск 17:09:33 #21 №1662065 
Пока язык V много обещает на будущее. Например перевод any_lang > V > any_lang, приложение для андроид, всякие плющки с синтаксисом и т.д.
Буду ждать 1.0v
Аноним 19/04/20 Вск 17:19:48 #22 №1662100 
>>1662065
Ну в одном он уже обосрался - в названии. Получается такая же ебала, как с go, когда надо что-то искать и писать go lang, golang, go.
Аноним 19/04/20 Вск 17:31:52 #23 №1662115 
>>1662008
Проблема в сраном сообществе линукса, нет ничего более тормозящего развитие и порождающего уродства чем эта оргия говна.
Аноним 19/04/20 Вск 17:35:49 #24 №1662119 
>>1662115
Сделай своё
Аноним 19/04/20 Вск 17:36:09 #25 №1662120 
>>1662119
Вот вот.
Аноним 19/04/20 Вск 17:37:56 #26 №1662124 
>>1662119

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

Это просто уебанская философия.
Аноним 19/04/20 Вск 17:42:10 #27 №1662131 
>>1662124
Ни одного аргумента за хуевость cmake так и не прозвучало
Пукофилософ хуев
Аноним 19/04/20 Вск 17:42:21 #28 №1662132 
>>1661805
>>1661819
>2020
>не иметь type inference
let add x y = x + y
Аноним 19/04/20 Вск 17:59:33 #29 №1662156 
>>1662132
У борщехлёбов всё охуенно, пока не спотыкаешься о
Couldn't match expected type `Int' with actual type `Float'

Дженерики
Аноним 19/04/20 Вск 18:27:39 #30 №1662174 
>>1661973
Всё же он лучше всего остального. Я загружаю проект с cmake - и он запускается сразу или в течении нескольких минут почти без исключений. А когда я открываю проект с чем угодно ещё - он может часами жаловаться на глупые ни о чём ни говорящие ошибки которые не понятно как фиксить и что ему из зависимостей и в каком месте нужно поставить.
Но про язык программирования это да.
Аноним 20/04/20 Пнд 00:40:03 #31 №1662468 
>>1661925
Выглядит отвратительно! Что дальше, значащие пустые строки и пробелы в конце строки?
Аноним 20/04/20 Пнд 00:50:01 #32 №1662472 
>>1662468
А дальше питон. Раз в JS, Go, Rust и Kotlin решили прибить гвоздями форматирование, следующим шагом будет авторасстановка фигурных скобочек. А затем и неканоничные идентификаторы перестанут приниматься.
Аноним 20/04/20 Пнд 05:40:07 #33 №1662560 
>>1662472
>Rust
>решили прибить гвоздями форматирование

Ты что-то путаешь, или ты про rustfmt, но там тоже всё можно на свой вкус настроить https://github.com/rust-lang/rustfmt/blob/master/Configurations.md
Аноним 20/04/20 Пнд 12:42:45 #34 №1662736 
>>1662065
В переводе лучше всего преуспели такие языки как nim и haxe.
Аноним 20/04/20 Пнд 14:48:40 #35 №1662888 
>>1662156
Будто что-то плохое, зато мозг включишь и не будешь бездумно складывать разные типы.
Аноним 20/04/20 Пнд 14:50:04 #36 №1662892 
>>1662472
>неканоничные идентификаторы
Это типа slave и master и все, что содержит слово white?
Аноним 21/04/20 Втр 19:39:22 #37 №1663896 
>>1661602 (OP)
https://github.com/ziglang/zig
Аноним 22/04/20 Срд 03:41:36 #38 №1664206 
>>1662892
Ещё про race не забудь! Race condition -- табу
Аноним 23/04/20 Чтв 09:21:01 #39 №1665172 
>>1663896
Современному языку null не нужен.

https://www.infoq.com/presentations/Null-References-The-Billion-Dollar-Mistake-Tony-Hoare/
Аноним 23/04/20 Чтв 17:00:54 #40 №1665613 
>>1665172
> null не нужен
Подменивать понятия не нужно. null нужен, но с nullable-типами.
Аноним 23/04/20 Чтв 17:50:44 #41 №1665673 
>>1665613
Это тот костыль из котлина который?

Вообще тогда как-то так
good tier: union types
normal tier: maybe monad
low tier: nullable
dolboebooshka tier: null
Аноним 23/04/20 Чтв 18:04:18 #42 №1665685 
>>1665673
> union types
Как эта небезопасная хрень поможет, если нужно хранить не значения разных типов, а либо одно, либо ничего?

> maybe monad
В жабе есть ебучий Optional, тот же Maybe.

> nullable
У него своих проблем хватает, говорят.

> null
Гроб гроб кладбище NPE
Аноним 23/04/20 Чтв 18:34:59 #43 №1665709 
>>1665685
>Как эта небезопасная хрень поможет, если нужно хранить не значения разных типов, а либо одно, либо ничего?

Ну разумеется что кроме них должны быть ещё обычные sum-types и intersection types.
А nullable это просто частный случай union types.
Аноним 24/04/20 Птн 14:21:11 #44 №1666386 
В современном языке не должно быть макросов. Нужда в макросах говорит о невыразительности языка, и макросы уродуют синтаксис.
Аноним 24/04/20 Птн 14:57:03 #45 №1666407 
>>1661602 (OP)
Не надо делать язык, если не можешь вдогонку выпустить добротную экосистему.

Достаточно посмотреть на vlang.

Проблема не в языках, а в том, что вы тупые мартыханы ни во что, кроме копипасты не можете.
Аноним 24/04/20 Птн 15:29:55 #46 №1666446 
>>1666407
что не так с влангом?
Аноним 26/04/20 Вск 07:21:23 #47 №1667808 
>>1666407
>добротную экосистему

Что значит "добротную"? Какие обязательные требования должны быть соблюдены, чтобы её можно было так называть?
Аноним 27/04/20 Пнд 17:33:39 #48 №1669305 
>>1667808
ДОБРОТНЫЙ, -ая, -ое; -тен, -тна, -тно. Сделанный хорошо, прочно, из очень хорошего материала; отличающийся высоким качеством, большой прочностью. Добротный драп. Добротная кожа. На подкладку [для шинели] выбрали коленкору, но такого добротного и плотного, который, по словам Петровича, был еще лучше шелку. Гоголь, Шинель. Полушубок на нем добротный, из мягких романовских овчин, хорошие сапоги. Овечкин, Без роду, без племени. Дома были добротные, сбитые из бревен, крытые железом и черепицей. Э. Грин, В стране Ивана.

Аноним 27/04/20 Пнд 17:53:08 #49 №1669326 
>>1669305
Что значит "сделанная хорошо" и "отличающаяся высоким качеством" экосистема языка? Какие обязательные требования должны быть соблюдены, чтобы её можно было так называть?
Аноним 27/04/20 Пнд 17:54:46 #50 №1669329 
>>1661602 (OP)
"Думаю, давно пора извлечь уроки из истории. Ни один здравомыслящий человек не потащит в проект новый язык, пока вы хотя бы не покажете ему нормальные инструменты разработки, не расскажете парочку саксесс сторис и не покажете десяток программистов на этом языке, живущих поблизости. Программисты же, пожалуй, кроме самых молодых, никогда не станут тратить свое время и здоровье на изучение очередного самого правильного языка, пока вы не покажете им нормальные инструменты разработки (не поделки типа Racer), пару десятков тысяч готовых библиотек (не «experimental», «unstable» и так далее), не расскажете парочку саксесс сторис и не покажите десяток открытых вакансий в их городе. Проблема курицы и яйца. Очень редко эту проблему удается успешно решить (условно тут можно привести в пример Go и Scala), в основном благодаря вложению времени и денег со стороны некоторой крупной компании (Google, Typesafe), по каким-то своим соображениям заинтересованных в популяризации языка."
https://eax.me/cpp-will-never-die/
Аноним 30/04/20 Чтв 11:50:16 #51 №1672227 
Признаки устаревшего языка http://www.compiler.su/priznaki-ustarevshego-yazyka.php
Аноним 30/04/20 Чтв 13:42:29 #52 №1672311 
>>1672227
> постфиксные операции «++» и «--», которые для большинства — загадочны
Дальше не читал.
Аноним 30/04/20 Чтв 13:53:00 #53 №1672324 
ifelse.png
>>1672311
А зря, там он ссылается на статьи и топит за них, судя по всему он же и автор, где вместо "непонятных" ifelse/elif, то есть вместо
if x:
.....
elseif y:
....
elseif z:
...
else:
...

предлагает пикрил. Типа видна структура и нет неоднозначности.

Чувок просто топит за какой-то очередной наркоманский язык с непонятными ограничениями.

Аноним 30/04/20 Чтв 16:47:32 #54 №1672498 
Современный язык должен поддерживать так называемую "горячую замену кода" (hot code reloading).
Аноним 30/04/20 Чтв 17:49:28 #55 №1672605 
Современный язык программирования не должен быть.
sageАноним 30/04/20 Чтв 19:11:25 #56 №1672734 
>>1672498
> язык должен поддерживать так называемую "горячую замену кода"
А зачем? Вот было у тебя system("rm -rf / x"), опечатался ты. Ну поменял ты строчку, файлы-то это уже не вернет. Распидорасило стейт программы из-за ошибки в логике - ты исправил ошибку, но стейту опять же пизда, нужно перезапускать программу.
sageАноним 30/04/20 Чтв 20:18:48 #57 №1672816 
>>1672734
Твой перезапуск программы тоже файлы не вернёт, и?

Пизда или не пизда стейту - это разраб должен решать, а не языкоклепатели.

мимо
sageАноним 30/04/20 Чтв 21:31:54 #58 №1672909 
>>1672816
> Пизда или не пизда стейту - это разраб должен решать
Так а ему-то откуда знать? Каким образом ты решишь, есть ли у тебя еще один баг, или это последствия прошлого наложились? Я могу понять пользу лайврелоада в песочницах уровня shadertoy, там сломалось - и хуй с ним. Но я совершенно не понимаю, как можно отлаживать сложный код в таких условиях.
Аноним 02/05/20 Суб 09:38:19 #59 №1674188 
Cовременному языку не нужна VM.
Аноним 03/05/20 Вск 14:47:59 #60 №1675427 
Я бы с удовольствием кодил на окамле, который бы поддерживал модель акторов и компилировался в байткод для beam vm (Erlang\Elixir).
Аноним 03/05/20 Вск 17:11:39 #61 №1675568 
Чтоб были дженерики в рантайме и нативные легкие потоки как в go
Аноним 03/05/20 Вск 22:46:59 #62 №1675854 
>>1675568
>дженерики
>легкие потоки
>https://stackoverflow.com/questions/5847642/haskell-lightweight-threads-overhead-and-use-on-multicores
Хаскиль?
Аноним 04/05/20 Пнд 10:43:27 #63 №1675981 
>>1675427
максим?
Аноним 04/05/20 Пнд 11:35:25 #64 №1676017 
>>1672909
Просто ты быдло. Ну или статикодебил.
На нормальных платформах пацаны ебашат хот код свап и прямо на запущенной ноде по ремоут шелу мигрируют стейт, более того платформа поддерживает более одной версии кода.
Аноним 04/05/20 Пнд 11:41:26 #65 №1676020 
>>1675427
А нахуя? На окамле пишут когда вроде хочешь ФП, но при этом нужен нормальный перформанс и некая предсказуемость по потреблению ресурсов. Если оно будет в результате работать на BEAM то от скорости окамла там мало что останется. А сам по себе окамл наверное самый уёбищный из ФЯ, так что хз зачем такое нужно. Если прямо так хочется статику на BEAM, то лучше уже на хаскеле написать компилятор из хаскеля в BEAM-байткод (а может уже есть?)
Аноним 04/05/20 Пнд 12:28:34 #66 №1676063 
hqdefault.jpg
>>1676017
Сейчас, с распространением всяких K8s все эти технологии усатых инопланетян из 80х больше не нужны.
Аноним 04/05/20 Пнд 14:54:12 #67 №1676215 
>>1661911

Два чаю, уважаемый. Примерно то же самое хотел сказать. Дополню лишь хотелкой о продуманности системы типов.

После python дико горит от JS, где функционал словно впиливался по мере необходимости, без попыток посмотреть на шаг вперёд. Завезли `шаблонные ${строки}` -- замечательно. А если нужно явно отформатировать строку?

Всё в том же JS не хватает миксинов и множественного наследования.

В Java грустно с операторами. Допустим, имплементируем класс, инкапсулирующий матрицу. Нельзя определить метод `__add__` и тем самым позволить в коде просто сложить матрицы выражением `C = A + B`

В сях и крестах не хватает модулей и менеджера пакетов

Один лишь SQL совершенен :)
Аноним 04/05/20 Пнд 15:56:55 #68 №1676293 
>>1676063
Твой кубернетес сильно поможет, если жирный монолит, который никто не будет переписывать на микросервисах, стартует по 5-10 минут?
Аноним 04/05/20 Пнд 18:04:04 #69 №1676443 
>>1676293
Не понял к чему ты? Разговор шёл про хот код спап вроде.
Кубер делает то же самое, запускает второй контейнер, делает нужный перебинд и когда второй готов - вырубет первый.
sageАноним 04/05/20 Пнд 18:04:56 #70 №1676444 
>>1676215
>не хватает миксинов и множественного наследования
Привет, говноед.
Аноним 04/05/20 Пнд 20:09:57 #71 №1676622 
ocaml.jpg
>>1676020
>самый уёбищный из ФЯ
В чем это выражается?
Как по мне, так окамл практичный, простой и безопасный - писать на нем одно удовольствие. Единственная его проблема это то, что он не может в многопоточность. Мне нравится elixir\erlang и их реализация многопоточности. Хотелось бы совместить плюсы обоих экосистем.
Вообще тут хорошо бы зашел транспайлер окамла в erlang. Взять, к примеру, bucklescript. Простой и удобный интероп который учится за день, если ты знаешь и окамл и жс.
comments powered by Disqus