Pull to refresh
35
0.3
Valentin Nechayev @netch80

Программист (backend/сети)

Send message
> нижне-немецкий главнее, как норма во всей Германии

Вы, очевидно, перепутали. Вот посмотрите на две основных изоглоссы — в стандартный язык попал вариант выше (по течению) == южнее обеих линий (machen, Apfel), хотя много других черт — по «средненемецким» диалектам.

> Так же и в русском. Есть норма, но где-то на юге другой диалект.

Или на севере. Но это уже совсем другой вопрос.
В вики большинство символов IPA снабжено файлами со звучанием. Часть из них откровенно кривовата, jIMHO, но по крайней мере даёт общее представление.

А так вкратце:
Ћ — мягкое [ч] или очень мягкое [к], в зависимости от диалекта (я не буду вкапываться в то, в каком месте сильная палатализованность становится палатальностью);
en.wikipedia.org/wiki/Voiced_alveolo-palatal_fricative или en.wikipedia.org/wiki/Voiceless_palatal_plosive
Ђ — её звонкий вариант — мягкое [дж] или очень мягкое [г], но тут существенно, что [дж] должно быть слитным (как в английском); en.wikipedia.org/wiki/Voiceless_palatal_plosive или en.wikipedia.org/wiki/Voiced_palatal_plosive
Џ — твёрдый [дж]; en.wikipedia.org/wiki/Voiced_retroflex_affricate
С́ (если таки речь про кириллическую) — краткий вариант нашей Щ; en.wikipedia.org/wiki/Sje en.wikipedia.org/wiki/Voiceless_alveolo-palatal_sibilant
З́ — звонкий вариант предыдущей; en.wikipedia.org/wiki/Zje en.wikipedia.org/wiki/Voiced_alveolo-palatal_fricative

Вообще, да, упрёк автору — уж такие вещи можно было привести.
Ну да, с 50й минуты более традиционная позиция. Я сейчас уже не приведу ссылки, но описанный АС «альтернативный» подход регулярно выдвигался и рассматривается «в среднем по больнице» как маловероятный.
> Описание "[ʑ] — это звук в припеве песни «Подо**ем» (1996) киевской группы Грин Грей, обозначенный в заглавии этой песни звёздочками" было бы понятнее?

Думаю, отдельного вводного раздела со ссылками на вики (где есть образцы произношения) и на примеры с ютуба хватило бы.
По-моему, год назад в какой-то статье где мы оба комментировали был такой пример. Чем плохо?
(а ещё всякие forvo есть)
> В подтверждение того, что Щ получилась не из ШТ, указывают на формы этих букв в глаголице:

Тут нет единства, и позиция, что Щ из вертикально слившихся ШТ, имеет не меньшее распространение.

> У югославов *tj → /ć/ [tɕ / c] и *dj → /đ/ [dʑ / ɟ]

Югославы — они разные бывают… я бы уточнил, что это для штокавского языка.

> Более вероятная цепочка — *świstję → *świsćę → *świśćę → świszczę

Боюсь, лингвисты вас ой отругают за смешение стилей. Или орфография — вневременная — или письменность современного типа — но тогда исторические формы нельзя в ней записывать.

А вы на московскую или питерскую школу больше ориентировались? У них подходы к исторической фонологии заметно различны…
> Почему не взять джуниора, у которого уже есть базовые айти навыки, и не взрастить из него управленца?

Я несколько раз наблюдал, что толковые люди на должность типа тимлида получаются скорее из хороших QA, чем из собственно разработчиков. И это вполне логично: разработчику карьера роста скорее в сторону усиления экспертности (глубже и/или шире), а не на управление людьми, а QA изначально комплексная область.
> То есть -r это что-то плохое чем никто не пользуется?

Это флаг, который явно говорит «удаляй каталог несмотря на наличие содержимого», и если он указан — то это значит преодолеть соответствующую защиту.

> Или это нормальный флаг без которого папочку не удалить если в ней что-то есть?

Если вы уверены, что надо удалить с содержимым — да. Но надо вначале стать уверенным (или слишком уверенным).
Для удаления пустого каталога отдельно есть rmdir, и я его регулярно зову в случае, если хочу получить эффект «непустое не удалять!»

> И если человек влез и погиб то виноват будет не он, а тот кто замок сломал.

В этой аналогии, как вы представляете себе, чтобы один сломал замок, а другой влез?
Админ ходит по системам и по ночам пишет `alias rm='rm -rf'`, или как?
Я, наоборот, часто вижу `alias rm='rm -i'` как защитное средство, и поддерживаю (в интерактивном режиме).

> У вас же почему-то «ты че дурак не прочитал что написано» — ну ок

И опять же хромая аналогия. Пусть есть на двери обычная ручка, которая чтобы войти (это как вообще вызвать rm), а есть особая, которую ещё надо нажать несмотря на красный цвет и предупреждение. Кто захочет это делать просто так? Ну да, может, 0.1% захочет. Ну так и файлы себе постоянно удаляют даже с предупреждением.
Цель всех этих средств — не тотальная защита от всей глупости, это невозможно — полный дурак или самоубийца всегда найдёт метод — а защитить от ненамеренных ошибок. А для них опций типа -r, -f достаточно (при прочих равных).
> Желание собирать под новое целевое устройство и есть «видеть необходимость в обновлении»

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

Сочувствую промышленникам, их любой мельчайший вопрос разрывает тут пополам.
> Я не понимаю откуда тут в комментах люди всегда додумывают так сильно.

Додумывать — это нормально, мы все всегда так делаем по определению (подразумеваемый контекст — например, что я вам лучше тут отвечу по-русски, а не по-арабски;)) Но додумывать с представлением своей додумки как утверждения, как делают тут некоторые собеседники (не вы) — действительно плохо. Я же спрашиваю, угадал ли с додумкой — чтобы лучше понять собеседника, потому что плохо знаю эту тематику.

> Я сказал лишь то что раст может запускаться на голом железе и не требует никаких холопов для работы.

Спасибо, сложил в закладки. Там интересно и что явно сказано, и что не сказано. Например, я в reset_handler не увидел инициализации стека. Вероятно, это обеспечено линкером. Главное, что несколько импортированных символов не потянули за собой половину стандартной библиотеки, как часто бывает в сишных реализациях, не рассчитанных на embedded. Значит, уже есть «achievement unlocked».

> Единственное к чему можно (и иногда это делают) прикопаться это к «вот вы присосались к сишному llvm, ничего сами сделать не можете!!1». Ну тут уже людям объяснять нечего, конечно.

+100. LLVM не сишный, он универсальный, на чём бы ни был написан.
> Вопрос производительной и/или тонковывернутой арифметики сильно шире вопросов ширины арифметики как таковой, имхо.

«Тонковывернутой»… это о чём? Какие-то особые операции типа ДПФ в целых числах? Ну если их на C не описать, то по крайней мере интринсики уже способны их задать, а дальше дело компилятора, что он и как вызовет.

> И на уровне языка системного программирования и тем более llvm asm эти тонкости теряются.

На уровне LLVM IR таки, после укладки на дополнительный код и с дополнительными всякими nuw/nsw, оно достаточно неплохо отражается — можно восстановить и что это было вначале. Диапазоны, да, не сохраняются, но это там уже, наверно, и не нужно. Хотя тут могу и пропустить что-то важное.
Часть их дохнет через пару лет, часть неадекватная (например, тот, что мне с Pixel 2 пришёл, тоненько пищит, ночью спать мешает).
Если срок жизни лет 5 по железу (а ещё не учли моральное устаревание или смену формата), то это сходно со временем жизни самого телефона.
Так что пусть продолжают укладывать зарядки.
> 18-битная и другая странная арифметика до сих пор встречается в DSP, AFAIK. Да, программируют их обычно не на С, но как явление их упомянуть надо.

Ну некоторые DSP вроде и на C программируют (с интринсиками везде где можно). Но для таких, где 18 бит, да, это уже кажется вряд ли — не по факту, а по тому, что современным программистам непривычно.

А так — я могу и на amd64 применить int16_t, int18_t и всё такое, если их предоставит компилятор. Правда, все операции с ним будут получать автоматический integer promotion до int32_t (равному int), но при укладке в переменные урежется обратно (и это ещё одна проблема на подумать).

LLVM в этом смысле сильно более современен — и появляются языки, которые начинают это напрямую использовать (Rust, Swift...): integer promotion нет, операции выполняются в естественном размере типов. Более того, int может быть шириной любой от 1 до 2**23 бит (не представляю себе, зачем такая безумная ширина, но сложение-вычитание-умножение делается тривиально). Используя это, уже можно выполнить адекватную укладку на размеры необходимого. Если мы знаем, что получили определение типа

type Temperature = new Integer(-90...99); // даже в Оймяконе ниже не бывало


то дальше компилятор получит полную возможность укладывать его в i7 и делать операции в соответствующем пространстве (и избавляться от явных проверок, где не надо). Помощь человека в виде «а int8_t достаточно или нет?» тут уже не нужна.

Ещё это полезно в плане укладки данных в битовые поля (там, где сейчас ширина поля отделена от типа, на самом деле лучше подходит явное указание в виде int<3>, uint<11> — это автоматически позволит и проверять границы при укладке в значение такого типа). Сейчас в GCC чтобы проверить влезание данных в битовое поле пишется что-то вроде `__builtin_add_overflow_p(val, 0, dest_field)` (это проверка без собственно размещения), это даже Clang ещё не скопировал.

LLVM даже проверки влезания в такой размер делает без проблем — при переносе на реальную платформу типа x86 используя хранилище достаточной ширины (32, 64 бита) и добавляя проверки на границы.

Но чем более высокоуровневое программирование нужно, тем ценнее возможность проверки границ и указания множества значений (диапазонами или как-то иначе), а не просто какой-то [u]int${N}_t.
Да, оно у меня в закладках. Проблема в том, что C одновременно и такой высокоуровневый язык, как там описывают, и низкоуровневый, и вот это сочетание даёт как минимум заметную часть текущих проблем. С C++ ещё хуже — сохраняя всё это, он добавляет ещё несколько слоёв вплоть до отдельного compile-time языка темплетов. Понимать и поддерживать всю эту кашу можно только думая на нескольких уровнях.
Исходная же статья частично поднимает вопрос — а как всё это получилось? Абьюзинг всех изначальных UdB только часть этой проблемы (хотя и самая очевидная).
Для современного железа затраты на call/ret чудовищны, так что для «гражданки» Forth уже не выйдет за нишу клея для загрузчиков и тому подобного (если без перерабатывающего супероптимизирующего компилятора, после которого дух языка, считаем, подменён чем-то другим).

А вот для военного или космического применения Forth вполне вкусен — гарантированный не исправленный никакими подозрительными оптимизациями выхлоп, в сочетании с аналогичными мерами на уровне процессора (например, никаких кэшей памяти), и средствами защиты от сбоев, наверняка будет обязателен, чтобы безопасно лететь хотя бы к Марсу…
> На каких холопов поплевывает раст?

Вы про последний абзац? Там про Rust как-то очень вскользь и сомнительно. Утверждать, что на Rust может может сразу скомпилироваться и запуститься то, что на C не завелось, как-то очень странно (вопрос не в отсутствии багов или тому подобном, а именно в переносимости). Это я просто пропустил, извините, но там и так был очень объёмный комментарий. Хотелось бы обоснований и примеров, как такое может получиться, причём не в исключительном случае.

(Наперёд — случаи размеров типов не считаем. И в C есть int${N}_t давно, и случаи, где применяются всякие int, от его размера зависят в редчайших ситуациях.)
> Не, ты мне реализацию шестибитных байтов обоснуй.

Ну я тут не знаю… попробуйте историю вычислительной техники почитать, что ли? Там много интересного есть. Например, что в 50-60-х 6-битные байты были большей нормой, чем 8-битные. Что при проектировании знаменитой System 360 большинство голосов начальства были за 6-битность, и то, что Gene Amdahl отстоял 8-битность, было великим подвигом с его стороны (всупереч голосам про бессмысленную трату ресурсов), что на него ещё несколько лет шипели, пока окончательно не утвердилось преимущество 8-битки. Что PDP-1 была в 1958, а знаменитая PDP-11 аж в 1970, а в промежутке между ними было множество моделей со всякими словами по 18 бит. Что линия PDP в заметной мере разрабатывалась под нужды армии (PDP, в отличие от S/360, были мобильными! в переводе с армейского — могли переезжать на грузовиках), а там своя специфика. Ну и прочее…

> И сейчас такие системы есть, но в твоей реальности они не существуют.

В моей реальности _под которую пишу_ я и под которую пишет 99% тут присутствующих — да, не существуют.
За пределами её есть 8-битные процессоры, есть секвенсоры, есть много чего, но это другой слой.

> Называй как хочешь, устройство языка это не меняет.

Верно. И в этом устройстве массивы есть, но вы об этом не хотите знать, судя по данному ответу.
> Нормальный человек ведь в шахту не упадет. Надо было специально подойти к двери (-r) и шагнуть вперед (-f)

Нет, -r это означает перелезть через перила, если они есть, а -f — проигнорировать отсутствие лифта. Такая аналогия сильно точнее вашей (полного соответствия, естественно, не будет, но и не требуется).

> Просто это хреновая философия.

При таких интерпретациях — да.

> Кому от этого легче только.

Тому, кто таки обращает внимание на то, что делает.

Сейчас вон мода в UX отменять запросы подтверждений — мол, их никто не читает и всегда жмёт «да»… но мне они реально помогают, иногда остановиться «перед краем» как раз подумав, что тут может быть что-то не так.
> Если не видите необходимости не пользуйте новые плюшки

Это некорректный подход. Обновление может быть вызвано совершенно посторонним фактором: например, для нового целевого устройства нужно новое ядро, дистрибутивы с ним содержат новые версии binutils и прочего обрамления, а старый компилятор с ними уже несовместим. Так бы компилятор никто не трогал, он устраивает, но компилятор сейчас не живёт один на голом железе.

> Все просто же

Нет.
Ну тогда можно было и на «расскаже» взвиться (ибо розповість). Цель-то не в полной передаче языка, тут тогда 95% не осилят.

Мне в этом плане понравилось у Штерна, как он переключил контекст на пяток абзацев до конца главы:

— Оставьте себе, нам веревка уже не нужна. Не нужна нам веревка, Дроздов? Так что же там случилось?
— Та я ж кажу, що якась нечиста сила, хай їй грець! — сержант вiд внутрiшнього хвилювання переходить на рiдну полтавську мову (я цю музику дуже давно не чув). — Якась чорна хмара поцупила автомобiль якогось начальника… Бiс його знає… Смерч-ураган!
— То, може, потерпiлим потрiбен наш автобус? — пропонус Космонавт.
— Здравiя бажаю, товаришу генерал! За потерпiлих не хвилюйтеся, люди трошки перелякались, а так нiчого. За ними вже вертолiт прилетiв, — сержант вiддає марсiаниновi честь.
Космонавт багатозначно поглядає на мене своїми розумними очима. До автобусу входить Оля Бєлкiн и теж поглядає на мене своїми розумними очима.
Усi ви розумнi, а менi що робити?


Вот тут всё чисто с языком. Следующая глава переключает обратно… смотрится очень органично.
> если бы не та случайность

Говорят, что таки байка, не было такого (точнее, и слова не такие, и в эфир не попало).
Но ради славы всемирной почему бы и не сочинить?

Information

Rating
1,770-th
Location
Киев, Киевская обл., Украина
Date of birth
Registered
Activity