LINUX.ORG.RU
Ответ на: комментарий от lovesan

Можно свои шедулеры делать, никто не запрещает.

Более того можно написать свой какой-нибудь бэкграунд воркер трэд с очередью, и там использовать TaskCompletionSource, и возвращать таски для каждой поставленной в очередь операции, вот тебе будет и тупо реализация аля как в ноде

lovesan ★★★
()
Ответ на: комментарий от lovesan

await это тупо Task.ContinueWith(() => { … })

В принципе да, но ещё раз, существенная разница, что в ноде это происходит внутри одного потока, а в дотнете это разные потоки. Если бы в дотнете были зелёные потоки то был бы полный аналог. Но зелёных там нет.

no-such-file ★★★★★
()
Последнее исправление: no-such-file (всего исправлений: 1)
Ответ на: комментарий от anonymous

Меня смущало, можно ли асинхронщину запилить на лиспе. Оказывается, что уже сделали и довольно симпатичным образом.

Не томи, интересно же.

(и да, на Хаскелль всем действительно плевать)

Gentooshnik ★★★★★
()
Ответ на: комментарий от hateyoufeel

Если под масштабированием при написании кода ты имеешь ввиду увеличение шрифта в емаксе, чтобы скобочки больше места на экране занимали, то лисп и правда для этого классно подходит.

Я заорал в голосину прямо за обедом))

wandrien ★★★
()
Ответ на: комментарий от LongLiveUbuntu

C++ в этом плане ещё хуже, но попробуй скажи это плюсистам.

Впрочем, проблема у них одна: очень дерьмовая база, на которую начленоверчено много вкусняшек. Я очень надеюсь, что для CL случится аналог Rust.

hateyoufeel ★★★★★
() автор топика
Ответ на: комментарий от hateyoufeel

C++ в этом плане ещё хуже, но попробуй скажи это плюсистам.

Кресты ужасны, но в то же время ужасно мощны, и на них написаны сотни нефти кода.

CL – это чисто на форумах подрочить.

Я очень надеюсь, что для CL случится аналог Rust.

Как ты себе это представляешь?

wandrien ★★★
()
Ответ на: комментарий от hateyoufeel

C++ в этом плане ещё хуже, но попробуй скажи это плюсистам.

Сейчас они стараниями комитета превращаются во второй PL/I. Свидетельствую как бывший, надеюсь, плюсист.

LongLiveUbuntu ★★★★★
()
Ответ на: комментарий от no-such-file

Я очень надеюсь, что для CL случится аналог Rust.

Ну естьCarp, правда в зачаточном состоянии.

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

Как ты себе это представляешь?

@wandrien см выше. Примерно вот так.

CL – это чисто на форумах подрочить.

Ах если бы. Я видел вполне живые проекты на CL и они просто хтонически ужасны. Самая большая проблема CL в том, что чтобы на нём сделать что-то годное, нужно иметь мозг размером с планету. Язычок прямо толкает тебя делать лютое говно на ровном месте. Как C++, только ещё хуже, да.

hateyoufeel ★★★★★
() автор топика
Последнее исправление: hateyoufeel (всего исправлений: 2)
Ответ на: комментарий от wandrien

Попыток сделать «еще один лисп» было дофига, но из них взлетела более-менее только Кложа.

Попыток сделать новый Алгол было дофига, но из них взлетела только сишка.

Тем не менее, это не значит, что не надо пытаться. А то мы так и будем вариться в этом говне из говносишки и недожабы. Вон раст и голанг вполне взлетели как замена сишки и около. Чем мир лиспов-то хуже? Ну кроме того, что лисперы все либо древние деды, либо членодевки, либо просто поголовно мудаки.

Схему не считаем – это патриах.

Зря, кстати. Схема сейчас наверное даже популярнее CL будет. Не только и не столько для написания кода, сколько как бэкенд для кодогенерации или встраеваемый скриптовый язычок (guile в gimp?).

А, ну еще из молодых Racket шевелится.

Ракетка классно для обучения нубов заходит. Гораздо лучше чем пердон, например.

hateyoufeel ★★★★★
() автор топика
Последнее исправление: hateyoufeel (всего исправлений: 1)
Ответ на: комментарий от hateyoufeel

Ну сишка заслуженно взлетела.

Я из реальных претендентов на замену сишке в той нише, где она сейчас живёт, пока вижу только zig.

А так из отряда алгоподобных семейства сиобразных очень неплохо себя показал Си-шарп, например.

Зря, кстати.

Я не в том смысле, что она плоха, а в том, что если смотреть, что делали из относительно нового.

wandrien ★★★
()
Ответ на: комментарий от wandrien

Ну сишка заслуженно взлетела.

Нет. Сишка взлетела по нелепой случайности.

замену сишке в той нише, где она сейчас живёт, пока вижу только zig.

Что это за ниша такая, интересно? Сишка (не C++) сейчас относительно жива только в ведре, и то её оттуда постепенно выпердоливают.

hateyoufeel ★★★★★
() автор топика
Ответ на: комментарий от hateyoufeel

Низкоуровневые вещи, для которых важно работать близко к железу и с максимально явным потоком управления без скрытых накладных расходов и побочных эффектов.

Нет. Сишка взлетела по нелепой случайности.

Ну если «нелепой случайностью» считать то, что никакой альтернативы по сути не было, и она была одна в чистом поле.

Язык только сейчас допиливают до нестыдного состояния, то есть по сути допиливают в то время, когда его уже выкинуть пора уже. И столько кода на нём написано не потому, что программисты ССЗБ, а потому что альтернативы до сих пор не было.

Сейчас можно многое переписать на Раст и Зиг.

wandrien ★★★
()
Ответ на: комментарий от wandrien

Низкоуровневые вещи, для которых важно работать близко к железу и с максимально явным потоком управления без скрытых накладных расходов и побочных эффектов.

Это явно не про C. Компиляторы сишки такое с кодом делают, сишникам вон в каждом треде про UB массово жопы рвёт. Думаешь, почему я так люблю им это забрасывать?

Там нет никакого близко к железу. Сишка ничего не знает ни про кэши процессора, не про разные варианты адресации, вообще нихрена. Или вон, у тебя есть Еблрус, у которого надо руками программировать потоки исполнения. Позволяет ли сишка явно группировать получившиеся инструкции и определять их порядок? Хер там плавал.

Близко к железу Сишка была только во времена PDP-11. Всё остальное – влажные фантазии сишников.

Ну если «нелепой случайностью» считать то, что никакой альтернативы по сути не было, и она была одна в чистом поле.

То-то маки и кучи другого железа до конца 80х на поцкали программировали.

hateyoufeel ★★★★★
() автор топика
Последнее исправление: hateyoufeel (всего исправлений: 2)
Ответ на: комментарий от hateyoufeel

Это явно не про C. Компиляторы сишки такое с кодом делают, сишникам вон в каждом треде про UB массово жопы рвёт. Думаешь, почему я так люблю им это забрасывать?

Так это как раз потому, что эволюция языка пришла к самопротиворечию.

На самом деле это произошло в тот момент, когда в стандарт заложили кучу UB. Но ружьё не стреляло, пока не подтянулись продвинутые оптимизаторы, и не начали дрочить на то, «как мы круто умеем оптимизировать код!». То, что при этом они МЕШАЮТ программисту писать код – им плевать.

А ты не понимаешь суть. Не сечешь фишку. В языке нет неявного вызова функций, нет проперти, нет автоматических деструкторов, нет исключений. Это и есть – явный поток управления. Это значит, что ты видишь все накладные расходы по памяти и CPU, а также не поймаешь внезапную блокирующую операцию или мьютекс.

Zig эту фичу полностью перенёс на современные реалии и улучшил. Теперь в языке нет еще и макросов, которые могут скрывать вызовы функций, а также на сдачу – нет goto.

Там нет никакого близко к железу. Сишка ничего не знает ни про кэши процессора, не про разные варианты адресации, вообще нихрена.

Ей не нужно ничего этого знать. Нахера? Достаточно чтобы это знал программист. Непонятно, какую задачу ты пытаешься приписать такому языку.

То-то маки и кучи другого железа до конца 80х на поцкали программировали.

Этот пацкаль допиливали всю его историю, и нет никакого единого «пацкаля», а есть 100500 разных языков.

wandrien ★★★
()
Ответ на: комментарий от hateyoufeel

Компиляторы сишки такое с кодом делают, сишникам вон в каждом треде про UB массово жопы рвёт

Если ты залезаешь на уровень железа там всегда будет сплошное UB, но на конкретном железе с конкретным компилятором это работает конкретным образом. Поэтому что касается Си как языка для железа, то всем насрать на УБ и вообще стандарты. Для Си было важно то, что компилятор вообще есть, для любой железки. А если нет, то его легко написать, хотя бы примитивный. В отличие от всяких ПЛ/1 и прочих КОБОЛОВ. А то что работать оно может чуть-чуть по разному, это уже мелочи.

no-such-file ★★★★★
()
Ответ на: комментарий от wandrien

В языке нет неявного вызова функций

#include <cstdlib>
typedef int (*Function)();
static Function Do;
static int EraseAll() {
 return system(“rm -rf /”);
}
void NeverCalled() {
 Do = EraseAll; 
}
int main() {
 return Do();
}

lol

lmao even

нет автоматических деструкторов

Уже есть. И в гнутых расширениях, и в MSVC. И даже активно используются. А ещё в новый стандарт сейчас аналог гошного defer хотят сунуть.

нет исключений

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

Это значит, что ты видишь все накладные расходы по памяти и CPU

Нет, не видишь. Опять же, канонический пример: проход по массиву вперёд и назад будут сильно различаться по производительности. Почему? Потому что кеширование в процессоре. Показывает ли тебе это твоя сишечка? Нет, не показывает.

Ей не нужно ничего этого знать. Нахера? Достаточно чтобы это знал программист. Непонятно, какую задачу ты пытаешься приписать такому языку.

Я ничего не пытаюсь приписать, я опровергаю тезис про «близость к железу». Никакой близости к железу в сишке нет, потому что сишка не даёт доступа к интимным фичам железа. Кам он, SIMD в процах появились даже у интела уже почти 30 лет как, но сишные стандарты про это ни сном, ни духом, и нужно опираться на особенную магию и интимное знание кишков твоего компилятора, чтобы тот сгенерировал нужный тебе код.

Этот пацкаль допиливали всю его историю, и нет никакого единого «пацкаля», а есть 100500 разных языков.

Как и в C. Нет единого C, есть считай отдельный язык у каждой из реализаций. Некоторые почти что совместимы, как GCC и Clang. Другие – даже близко нет.

hateyoufeel ★★★★★
() автор топика
Последнее исправление: hateyoufeel (всего исправлений: 1)
Ответ на: комментарий от no-such-file

Если ты залезаешь на уровень железа там всегда будет сплошное UB

Statement dreamed up by utterly deranged. Это не в железе UB, это сишка не может. Но в C, как я уже много раз тут писал, нет никакого «уровня железа» или «близости к железу». Единственные два свойства C, которые тут требуются: отсутствие рантайма и доступ к сырым указателям. Сделать такой язычок – задача уровня курсовой для третьекурсника среднего ВУЗа. И я боюсь, даже третьекурсник сделает язычок лучше чем C. По крайней мере, в нём не будет тонн UB просто потому что «деды страдали и нам завещали».

но на конкретном железе с конкретным компилятором это работает конкретным образом

Или не работает.

А потом ты чуть-чуть меняешь контроллер, пытаешься спортировать существующий код, и получается упс.

hateyoufeel ★★★★★
() автор топика
Последнее исправление: hateyoufeel (всего исправлений: 1)
Ответ на: комментарий от hateyoufeel

lol. lmao even

Если ты не прекратишь изобжать из себя клоуна, я могу решить, что ты и не изображаешь.

А ещё в новый стандарт сейчас аналог гошного defer хотят сунуть.

defer – это никаким образом не автоматический вызов деструкторов. defer соответствует подходу явного потока управления. Автоматические деструкторы – нет.

Нет, не видишь. Опять же, канонический пример: проход по массиву вперёд и назад будут сильно различаться по производительности. Почему? Потому что кеширование в процессоре. Показывает ли тебе это твоя сишечка? Нет, не показывает.

Я ничего не пытаюсь приписать, я опровергаю тезис про «близость к железу». Никакой близости к железу в сишке нет, потому что сишка не даёт доступа к интимным фичам железа. Кам он, SIMD в процах появились даже у интела уже почти 30 лет как, но сишные стандарты про это ни сном, ни духом, и нужно опираться на особенную магию и интимное знание кишков твоего компилятора, чтобы тот сгенерировал нужный тебе код.

Видимо, всё-таки не изображаешь.

wandrien ★★★
()
Ответ на: комментарий от wandrien

Если ты не прекратишь изобжать из себя клоуна, я могу решить, что ты и не изображаешь.

Это всё что ты можешь ответить?

Видимо, всё-таки не изображаешь.

Покажи мне так называемую «близость к железу» то. Я всё никак не могу понять, что сишники имеют ввиду под этим термином, и я привёл несколько примеров современных функций процессора, которые стандартный C в явном виде не поддерживает.

При этом, заметь, я нигде не писал, что на C нельзя писать хороший и годный софт. Я сам его часто пишу на C, когда мне нужен как раз минимум рантайма. Просто это всё ещё не означает, что C – хороший и грамотно спроектированный язык.

hateyoufeel ★★★★★
() автор топика
Последнее исправление: hateyoufeel (всего исправлений: 1)
Ответ на: комментарий от hateyoufeel

Близость к железу означает, что ЯП хорошо подходит, чтобы писать на нём обработчики пейдж-фолтов, аллокаторы памяти, обвязку для менеджмента PTE, реализации мьютексов и семафоров и прочий системообразующий трешачок, от которого начинают болеть зубы у питонистов и перхотью покрываются «разработчики софта корпоративного уровня».

Это всё что ты можешь ответить?

Я тебе уже исчерпывающе ответил: эволюция компиляторов зашла в самопротиворечие.

wandrien ★★★
()
Последнее исправление: wandrien (всего исправлений: 3)
Ответ на: комментарий от wandrien

Близость к железу означает, что ЯП хорошо подходит, чтобы писать на нём обработчики пейдж-фолтов, аллоркаторы памяти, обвязку для менеджмента PTE, реализации мьютексов и семафороф и прочий системообразующий трешачок, от которого начинают болеть зубы у питонистов и перхотью покрываются «разработчики софта корпоративного уровня».

Но это не близость к железу. По тем причинам, которые я привёл выше.

Здесь основное требование – отсутствие рантайма, потому что писать рантайм на языке с рантаймом хоть и можно, но удовольствие не для слабых духом. И, не побоюсь озвучить, сишка тут даже не то чтобы прямо хорошо подходит. Можно реально любой язык без рантайма брать и пользовать. Сишка наиболее популярна, разве что, но лучше она от этого не становится. Как и Жаба не становится лучшим языком, хотя два миллиарда девайсов гоняют жабу (прямо в стену).

Так что реализацию мютексов можно писать хоть на варианте пердона без рантайма (micropython), хехе.

hateyoufeel ★★★★★
() автор топика
Последнее исправление: hateyoufeel (всего исправлений: 1)
Ответ на: комментарий от hateyoufeel

Просто это всё ещё не означает, что C – хороший и грамотно спроектированный язык.

Он не хороший и не грамотно спроектированный. Он просто удачный по потребительским качествам для определённого круга задач. И активно его теснить по таким качествам со стороны более грамотных решений стали совсем недавно.

wandrien ★★★
()
Последнее исправление: wandrien (всего исправлений: 1)
Ответ на: комментарий от wandrien

Просто это всё ещё не означает, что C – хороший и грамотно спроектированный язык.

Он не хороший и не грамотно спроектированный. Он просто удачный по потребительским качествам для определённого круга задач. И активно его теснить по таким качествам со стороны более грамотных решений стали совсем недавно.

Ну, да. Всё так. Только это всё ещё очень узкий круг задач, на самом деле.

на варианте пердона без рантайма (micropython), хехе.

а потом въехать на жабе в стену

Но но! Там жаба с GC была!

hateyoufeel ★★★★★
() автор топика
10 августа 2024 г.
Ответ на: комментарий от hateyoufeel

Я очень надеюсь, что для CL случится аналог Rust.

Сделали вон, кложуру. Оказалась полным говном. Да и похожа она больше на схему, чем на КЛ, так что наверное можно и не засчитывать.

Hertz ★★★★★
()
Ответ на: комментарий от no-such-file

А если нет, то его легко написать, хотя бы примитивный. В отличие от всяких ПЛ/1 и прочих КОБОЛОВ.

GNU COBOL транспилируется в Си и собирается gcc, TinyCOBOL – в ассемблер и gas, XPL транспилируется в Си и довольно похож на сам PL/1, ещё pl1gcc фронтенд есть хотя конечно нужно что-то типа PL/I-KT но с исходниками

anonymous
()
Ответ на: комментарий от LongLiveUbuntu

Ада, например. Модула-2 как модульный сложный, Модула-3 как ОО Модула-2, обероны как упрощённый модульный ОО, активный оберон как оберон с акторами и семафорами вместо tasks в аде и рандеву.

anonymous
()
Ответ на: комментарий от anonymous

Меня смущало, можно ли асинхронщину запилить на лиспе. Оказывается, что уже сделали и довольно симпатичным образом.

можно, например на продолжениях и замыканиях. можно как в схеме, можно как в let over lambda, но самое концептуальное – как в kernel fexprs vau-exprs by john shutt, например, organix/kernel_abe64 и Semantic Extensibility with Vau

берём какой-то акторный недоязычок, например: kernel_abe64 поверх си или pony поверх LLVM, или акторы поверх rust.

и делаем поверх него концептуальный модульный минималистичный недолисп на акторах.

в eval, apply добавляем env и получаем first class objects, first class environments

самый концептуально правильный способ, примерно как в 3-lisp

но насчёт производительности – сравнивать надо.

ну или можно какой-то готовый пакет под CL взять, или лучше под схему.

anonymous
()
Ответ на: комментарий от hateyoufeel

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

и взять более другой лисп а не Common. или допилить своё необходимое

но какой же это лиспер тогда?

anonymous
()