Через весь ваш комментарий лейтмотивом идёт противопоставление «технического» и «концептуального» программирования. Чтобы я мог предметно ответить, можете как-то более-менее сформулировать (даже не обязательно на уровне строгости мехмата МГУ), что конкретно вы имеете в виду? Желательно не через одни лишь примеры, а то там уже есть один, и он… странный, а через какое-то определение, которым можно было бы оперировать в логических построениях. И, учитывая ваши проекты, которые вы обычно упоминаете в других комментариях, или запомнившийся мне комментарий от вас под статьёй о теоркате в духе «а как теоркат поможет проектировать UI-то?», мне это особенно интересно.
А пока что наиболее вероятная гипотеза ваших определений — что под «концепцией» вы понимаете выбор архитектуры, модели данных и так далее, что в индустрии делают все уровнем чуть выше джуна, и для чего высшее образование не нужно (эмпирически наблюдаемый факт). И, более того, то, о чём я писал — игры с архитектурой и поддерживаемостью в личных пет-проектах, тот же Александреску, да тот же Саттер — это даёт все те же навыки (и больше), о которых вы говорите.
Теперь по частностям.
И потом, говорить, что ВУЗ не нужен, человеку, который закончил ВУЗ, это не вполне логично.
Ну это стандартная уловка-22: если ты окончил вуз, то говорить, что он не нужен, нелогично. Не окончил — тем более, ведь ты просто не знаешь, что упускаешь.
Мне вот не нужны, иностранные языки, которые я учу сейчас, но я это делаю не ради абстрактной нужности, а ради собственного развития, в чем именно вижу и смысл и пользу.
Но вы при этом не говорите, что программистам нужны иностранные языки, так что никаких вопросов. И, кстати, обычно наоборот: нужность конкретная, а вот развитие скорее более неизмеримое и абстрактное.
Можно привести аналогию. «Писать код», это как писать дневник. Типа, сегодня было то, а вчера – сё. Манька сказала «А», а Ванька – «Б». По принципу чукчи: «Что вижу, то и пою».
Очень strawman'истая аналогия, которая не мапится на реальность.
Смог бы ли я их делать без двух ВУЗов? Не уверен! Без МГУ, я бы, как программист, не состоялся бы. Пока, для меня, самым эффективным методом оказался «метод здравого смысла», на базе фундаментального образования.
Это неверный фрейминг и, более того, неверный подход к анализу (что не вполне логично от окончившего мехмат МГУ). Вы рассматриваете альтернативную гипотезу, где вы выкинули ваше образование, но не заменили его ничем — ни пет-проектами в то же время, ни реальной продакшен-работой, ничем подобным. Альтернативные издержки работают не так. И я не сомневаюсь, что если выбирать между «6 лет вуза» и «6 лет лежать на печи», то первое будет лучше. Но обсуждаемый выбор слегка другой.
И ещё один вопрос: почему вы в этом уверены? Почему вы считаете, что без вышки бы вы не состоялись?
Вы же сами пишете, что ничего конкретного не использовалось, математика забыта, всё такое. Остаётся только некий «здравый смысл», который был воспитан в вашей модели именно вузом (и не мог быть воспитан никак иначе). Упрощая, это нефальсфицируемый тезис. Точно так же, как не очень фальсифицируемым тезисом является что-то в духе «армия сделала из меня мужика и воспитала меня, все мои успехи благодаря армии» (что я на самом деле слышал от других людей в слегка других стратах).
хоть с рекомендуемыми вами книгами, хоть без них
Для протокола, я не рекомендовал здесь ни одной книги и не собираюсь этого делать, потому что все мои рекомендации условны по «а что именно вы хотите достичь?», и для разных целей я буду рекомендовать сильно разное.
В итоге, вы игнорируете мои советы, а я – ваши.
Нет, здесь нет симметрии, потому что я на ваши тезисы отвечаю весьма подробно (а не просто их игнорирую) и пытаюсь докопаться до вашей модели мира и того, как вы обобщаете вашу модель.
У меня всего полтора высших, не два: оконченный ФУПМ МФТИ и незаконченная аспирантура на ВЦ РАН по 01.01.09.
Что я могу сказать, по итогу. Я не учился на профессионального программиста, но, де факто, стал им. Очень помогло, конечно, фундаментальное образование, и, хотя, я профессионально, математикой не занимался, но, она помогала мне выживать в трудные времена, которых было не мало.
Что могу сказать по итогу я, раз мы тут делимся личным опытом и его обобщаем?
Вуз для работы (особенно в упоминаемом выше 1C, C++/WTL и так далее) не нужен подавляющему большинству программистов для подавляющего большинства задач. На самом деле вуз не необходим (и не достаточен) даже в тех вещах, которыми занимался я — от прикладного, продуктового машинного обучения до HFT на плюсах, тайпчекеров на хаскеле и формальных методов на агде/коке. Даже там за глаза было достаточно сильной физмат-школы (которая у меня тоже была), и программа которой в вузовском ритме осваивается за полгода, если не за месяц. Либо (в случае формальных методов) было недостаточно вуза, потому что теорию типов на этом «фундаментальном образовании» не дают. И матлог за пределами семестра, по факту, исчисления высказываний не дают.
Вуз уровня МФТИ (и даже, может, МГУ, МИФИ и Бауманки) для программиста — это трата времени студента, это трата бюджетного места, это трата времени лекторов и семинаристов. В подавляющем большинстве задач у подавляющего большинства программистов не нужны уравнения в частных производных, функан, и прочие подобные методы. Не нужен даже условный линал за пределами шпаргалки на одну страницу.
Вуз нужен для человека, который потом свяжет свою жизнь с ресёрчем. Это не случай подавляющего большинства программистов. Как понять, ваш ли это случай? Зажмуриться и представить две картинки:
вы пишете код и деплоите в прод, ходите на митапы по языку X и стеку Y, по вечерам читаете посты в блогах о новом языке Z и либе W.
вы пишете статьи и сабмитите в arxiv, ходите на конференции с какими-то закорючками на слайдах, по вечерам читаете чужие статьи с arxiv.
Что из этого больше привлекает? Что из этого больше привлекает потому, что это ваше (и что вы готовы делать уже сейчас), а не потому, что папка с мамкой сказали, что наука — эта крута, или потому что у учёных такой вот ореол полубожественности, или, для симметрии, потому что программистам дофига платят?
Что нужно для программиста? Писать код. Просто писать код. Обсуждать код с другими людьми. Находить реальные продуктовые подработки. Писать код у меня получалось до вуза. Прочитать Саттера и Александреску у меня получалось до вуза. Находить людей, которые критиковали мой код и давали дельные советы, у меня получалось до вуза, даже в ранних и средних нулевых, когда в интернете было меньше людей.
И главное — долго писать код. Поддерживать свой пет-проект годовой/трёхлетней/пятилетней давности и смотреть, что работает хорошо, а что — превратилось в нечитаемое неподдерживаемое месиво, и делать выводы на практике о том, что такое — поддерживаемый код. Развлекаться с языком, писать всякую ерунду на темплейтах в плюсах или абьюзить систему типов в хаскеле или натравливать vtune на свой код просто потому, что интересно, и прокачивать там свои скиллы. И по итогу предлагают хорошие деньги мне именно за то, что я умею писать всякую ерунду на плюсах и делать её быстрой, и потому, что я на личном опыте знаю, что — поддерживаемо.
А тезис «математика помогает» вообще ничем не отличается от тезиса, не знаю, «вера помогает», ведь «в трудные времена я думал о Боге, и Писание помогло мне их преодолеть». Хотя чего это я, даже это — более конкретное утверждение, чем «математика мне помогла в трудные времена». Как помогла? Чем? Обязательно ли для этой математики было оканчивать МГУ? Непонятно.
Что бы я посоветовал самому себе, если бы я, сейчас, учился бы в школе, либо поступал бы в ВУЗ? Прежде всего, учиться! Учеба должна стать смыслом жизни! Как говорил «Дедушка» Ленин: «Учиться, учиться и еще раз учиться!» «Настоящим образом!».
Я бы посоветовал не слушать всех тех, кто говорит, что без фундаментального образования никуда (ещё как куда). Посоветовал бы учиться в личное время на личных проектах, и не тратить своё и чужое время на вуз.
Потому что с окончания вуза прошло уже 10+ лет, и можно было бы ожидать какой-то отдачи от него, наконец, а её нет (и я теперь понимаю, что и не будет). А затраты и ненулевые альтернативные издержки — есть.
Вплоть, до: «Не хочу жениться, а хочу учиться!».
Про это в таких тредах редко говорят, поэтому я позволю себе сфокусироваться на этом отдельно.
Жениться в 17 действительно несколько рановато, а вот социального контекста, который настолько легко позволяет отношения, не отягощённые мыслями о тикающих часиках, будущем-вместе-или-нет через 10 лет, и так далее, и где вы встречаетесь с кем-то ради вас здесь и сейчас, больше не будет никогда. А если вы немного интроверт, то больше никогда не будет и богатого социального графа сверстников, через которых можно естественно оказываться в одной компании с большим количеством представительниц противоположного пола, имеющих похожий с вами социальный уровень, уровень самоосознания, и так далее, и где знакомства происходят сами, с нулевым количеством затраченной энергии.
Но можно, конечно, всё это променять на урматы.
Имея хорошие знания, вы не пропадете. Учитесь про запас, ибо никогда не знаешь, что именно будет востребовано.
Всё ещё жду, когда мне пригодятся урматы.
Ну и да, условия позднего СССР/ранней РФ и современного мира — это, тащем, два разных мира. Сегодня входным билетом куда лучше работает гитхаб и блог, а когда я диплом последний раз показывал — и не помню. По-моему, его у меня уже даже в резюме нет.
И да,
Читайте книжки, которые мне нравятся
Лучше спокойно прочитать Таненбаума или «Computer Systems: A Programmers Perspective», чем выдрочить себе интроектированным элитизмом мозг до того, что от чтения любых книг, где нет хотя бы одной теоремы с доказательством, ты ощущаешь стыд, потому что мог бы в это время читать что-нибудь про higher topos theory, например.
А свобода слова не означает свободно говорить неприятные для фирм вещи и гадящие стране факты. А свобода совести не означает свободно придерживаться аморальных ценностей и иметь гадящее стране мировоззрение.
Нет, братиш, запутался тут ты, сорян. То, что ты называешь свободой — это не свобода, а тоталитарный загончик, который, как ты почему-то думаешь, обязательно окажется меховой частью в твою сторону.
Проблема в том, что настоящая свобода (а не этот новояз, который ты и такие, как ты, пытаются притащить в дискурс) требует осознания личной ответственности за свою жизнь, а это тяжёлое, сложное осознание.
Нет смысла рассматривать существование «вообще». С подвешенным в вакууме термом x (одиноко стоящая переменная) ничего нельзя сделать, он неинтересен сам по себе.
а не один из трех - только внутри функции.
Формализация этих правил (с системами типов, отношением типизации, и так далее) раздует статью куда сильнее, и, ИМХО, оно того заслуживать не будет.
И что значит Variable(Int)?
ХЗ, в данной кодировке оно напрямую не нужно. Может, автору потом пригодится для его дальнейших замыслов, не знаю, я ж не автор. Пока оно ему нужно, только чтоб красиво печатать λ-термы.
А ML-семейством я не занимался. Может, поэтому и нет его вдохновения.)
Далее, выше сказано, что "функция от переменной", а тут она от терма. Почему несоответствие?
Потому что это на самом деле одно и то же.
Переменная — это то, что видит тело функции. Вы пишете λx. x + 2, и вот эта вот штука справа от точки (то есть, тело функции) видит только переменную x.
Когда вы вызываете эту функцию, то передаёте вы ей полноценный терм, который подставляется на место этой переменной. Просто в данном случае за подстановку отвечает метаязык (мета- — потому, что это язык, на котором описывается язык), и в нём такие функции имеют тип Term → Term.
Ничего непонятно.
ХЗ, я gleam не знаю, но это достаточно распространённый синтаксис в языках, черпающих вдохновение в ML-семействе. При очень беглом взгляде я вообще подумал, что это раст (которого, впрочем, я тоже не знаю).
Не, так не честно, это не настоящая бета-редукция, читерство какое-то.
Не читерство, а higher-order abstract syntax (потом можно обобщить до P(olymorphic)HOAS).
Охренительно удобная штука, на самом деле. Вам бесплатно (из метаязыка) даётся весь набор инструментов для работы с именами и байндингами, и, как следствие, отсутствие геморроя с представлением переменных (символы? de Bruijn? locally nameless? да это всё не нужно, фигачь на метаязыке!), бесплатная α-эквивалентность, процедура подстановки (это просто применение в метаязыке), и, если метаязык достаточно мощный (ну там, coq/agda/etc), то доказательства свойств вашего языка становятся сильно проще.
Кто ходил, в каком вузе, на каком направлении, что было в программе? Неизвестно.
Если хотите говорить о таких примерах, то тот же матлог я зашарил самостоятельно (проботывая Верещагина-Шеня после работы). Чтобы я зашаривал (или углублял) анализ после работы — такого я себе представить не могу. Разницу замечаете?
В какой весовой категории нужно быть, чтобы не быть способным осознать, что чинить busyloop'ы yield'ами — плохая идея, и спорить об этом?
Если «юноша» (этак всего лишь на пару лет меня младше) к этому не способен, то чем он отличается от вкатунов, которых мы все так дружно любим обстёбывать?
Это я понял. Мой ответ был к тому, что это «обычно» далеко не везде, и, следовательно, что ставить в пример такие рамки — странная затея. Возможно, лучше как-то так делать, чтобы рамки изначально не были нужны.
С какими рамками? Ни разу такого не видел, и спокойно выхожу без покупок через обычный вход безо всяких проблем, хоть в супермаркетах, хоть в мелких магазинах.
Нет, неверно предполагаете. Оплатил ту строчку кода какой-то товарищ из другой страны, которому надо было сделать лэндинг для каких-то БАДов.
Если же говорить о родственниках, то близкий родственник (ближайший, я бы даже сказал) как раз весьма активно поработал над тем, чтобы за строчки кода на более-менее нормальной работе, куда меня взяли лет в 13, мне не платили ничего.
В отличие от классического матана (который вот на самом деле сушит мозги и бесконечно скучен), матлог — это постоянный источник космических мультиоргазмов.
И, ИМХО, куда полезнее для, скажем, программиста, а мы же тут на сайте программистов.
Как-то всё очень запущено в этом кроссплатформенном инструменте.
Да, именно. Правда, опять же, учитывая, что под окнами оно тоже использует yield, то всё это обсуждение не имеет особого смысла.
Я только хотел сказать, что опасно предполагать семантику по созвучию синтаксиса.
Здесь нет созвучия синтаксиса, здесь есть созвучие имён и описаний, а имена призваны именно для того, чтобы называть вещи.
Где-то на стыке когнитивной лингвистики, психологии, эволюционной теории и всякой подобной ерунды есть такая штука, как ма́ксимы Грайса. Из этих максим следует, в частности, что в данном конкретном случае наиболее естественной интерпретацией слов «Yield - это не Питоновский Yield, это ОС функция, которая говорит ОС, о том, что поток хочет отдать своё время другим потокам, т.к. ничего не делает» будет интерпретация этого как ОС-функции sched_yield или её аналогов (потому что иначе человек бы уточнил про sleep(0), или про ожидание до конца слайса, или хотя бы указал бы про всё это в ответ на первое возражение про семантику yield).
Поэтому вполне естественно предполагать не по созвучию имён, а по тому объёму информации, которое было передано. И если человек это использует как gotcha-тезис, то самая правильная реакция на это — применение уринированного текстиля. Тем более, что данный конкретный человек, как дело доходит до практики, просто молча сливается уже трижды (раз — здесь, два — с дженериками, три — с наркоманским тезисом о том, что дельфи на три порядка популярнее плюсов в Бразилии), предпочитая аргументировать свои ошибки минусами за комменты и в карму вместо того, чтобы про них просто написать.
Функция называется Yield, наш ведущий специалист по Delphi (где вакансий на порядок больше C++, нет, дарта, нет, го!) описывает поведение а-ля sched_yield (или как там она называется в винде), документация описывает поведение а-ля sched_yield, но вы почему-то думаете, что речь о sleep.
А почему именно sleep? Почему не, скажем, fflush(stdout)? Почему не kill(-1, 9)? Я много хороших системных вызовов знаю.
Кстати, очередные прелести дельфи — найти онлайн реализацию этого System.Classes.pas не представляется возможным, и, похоже, не является легальным по условиям распространения дельфей. Сравните с реализацией стдлибки в плюсах, расте, хаскеле или любом другом языке.
Остановит процессор до окончания кванта диспетчеризации или другого прерывания.
Нет (ну или, вернее, «мягко скажем, не обязательно»). Оно просто всё время сжигает в сисколле и ядре:
% time ./main
^C
./main 0,88s user 4,04s system 99% cpu 4,918 total
Но так, конечно, измерять ничего не надо. Лучше так:
#include <algorithm>
#include <chrono>
#include <iostream>
#include <sched.h>
int main()
{
long max = 0;
long sum = 0;
const auto count = 10'000'000;
for (int i = 0; i < count; ++i)
{
const auto begin = std::chrono::high_resolution_clock::now();
sched_yield();
const auto end = std::chrono::high_resolution_clock::now();
const auto duration = std::chrono::duration_cast<std::chrono::nanoseconds>(end - begin).count();
max = std::max(max, duration);
sum += duration;
}
std::cout << max << ' ' << static_cast<double>(sum) / count << '\n';
}
Это даёт 6890 103.38 на моей системе. Как думаете, у меня тут средний квант диспетчеризации — 100 наносекунд (минус время на сам факт сисколла, который в среднем по исключительно случайному совпадению как раз в окрестности соточки наносекунд), или таки побольше?
Метод не элегантный, но рабочий.
Это метод замены «сжирает 100% ядра» до «дожирает до 100% ядра», не более.
Через весь ваш комментарий лейтмотивом идёт противопоставление «технического» и «концептуального» программирования. Чтобы я мог предметно ответить, можете как-то более-менее сформулировать (даже не обязательно на уровне строгости мехмата МГУ), что конкретно вы имеете в виду? Желательно не через одни лишь примеры, а то там уже есть один, и он… странный, а через какое-то определение, которым можно было бы оперировать в логических построениях. И, учитывая ваши проекты, которые вы обычно упоминаете в других комментариях, или запомнившийся мне комментарий от вас под статьёй о теоркате в духе «а как теоркат поможет проектировать UI-то?», мне это особенно интересно.
А пока что наиболее вероятная гипотеза ваших определений — что под «концепцией» вы понимаете выбор архитектуры, модели данных и так далее, что в индустрии делают все уровнем чуть выше джуна, и для чего высшее образование не нужно (эмпирически наблюдаемый факт). И, более того, то, о чём я писал — игры с архитектурой и поддерживаемостью в личных пет-проектах, тот же Александреску, да тот же Саттер — это даёт все те же навыки (и больше), о которых вы говорите.
Теперь по частностям.
Ну это стандартная уловка-22: если ты окончил вуз, то говорить, что он не нужен, нелогично. Не окончил — тем более, ведь ты просто не знаешь, что упускаешь.
Но вы при этом не говорите, что программистам нужны иностранные языки, так что никаких вопросов. И, кстати, обычно наоборот: нужность конкретная, а вот развитие скорее более неизмеримое и абстрактное.
Очень strawman'истая аналогия, которая не мапится на реальность.
Это неверный фрейминг и, более того, неверный подход к анализу (что не вполне логично от окончившего мехмат МГУ). Вы рассматриваете альтернативную гипотезу, где вы выкинули ваше образование, но не заменили его ничем — ни пет-проектами в то же время, ни реальной продакшен-работой, ничем подобным. Альтернативные издержки работают не так. И я не сомневаюсь, что если выбирать между «6 лет вуза» и «6 лет лежать на печи», то первое будет лучше. Но обсуждаемый выбор слегка другой.
И ещё один вопрос: почему вы в этом уверены? Почему вы считаете, что без вышки бы вы не состоялись?
Вы же сами пишете, что ничего конкретного не использовалось, математика забыта, всё такое. Остаётся только некий «здравый смысл», который был воспитан в вашей модели именно вузом (и не мог быть воспитан никак иначе). Упрощая, это нефальсфицируемый тезис. Точно так же, как не очень фальсифицируемым тезисом является что-то в духе «армия сделала из меня мужика и воспитала меня, все мои успехи благодаря армии» (что я на самом деле слышал от других людей в слегка других стратах).
Для протокола, я не рекомендовал здесь ни одной книги и не собираюсь этого делать, потому что все мои рекомендации условны по «а что именно вы хотите достичь?», и для разных целей я буду рекомендовать сильно разное.
Нет, здесь нет симметрии, потому что я на ваши тезисы отвечаю весьма подробно (а не просто их игнорирую) и пытаюсь докопаться до вашей модели мира и того, как вы обобщаете вашу модель.
У меня всего полтора высших, не два: оконченный ФУПМ МФТИ и незаконченная аспирантура на ВЦ РАН по 01.01.09.
Что могу сказать по итогу я, раз мы тут делимся личным опытом и его обобщаем?
Вуз для работы (особенно в упоминаемом выше 1C, C++/WTL и так далее) не нужен подавляющему большинству программистов для подавляющего большинства задач. На самом деле вуз не необходим (и не достаточен) даже в тех вещах, которыми занимался я — от прикладного, продуктового машинного обучения до HFT на плюсах, тайпчекеров на хаскеле и формальных методов на агде/коке. Даже там за глаза было достаточно сильной физмат-школы (которая у меня тоже была), и программа которой в вузовском ритме осваивается за полгода, если не за месяц. Либо (в случае формальных методов) было недостаточно вуза, потому что теорию типов на этом «фундаментальном образовании» не дают. И матлог за пределами семестра, по факту, исчисления высказываний не дают.
Вуз уровня МФТИ (и даже, может, МГУ, МИФИ и Бауманки) для программиста — это трата времени студента, это трата бюджетного места, это трата времени лекторов и семинаристов. В подавляющем большинстве задач у подавляющего большинства программистов не нужны уравнения в частных производных, функан, и прочие подобные методы. Не нужен даже условный линал за пределами шпаргалки на одну страницу.
Вуз нужен для человека, который потом свяжет свою жизнь с ресёрчем. Это не случай подавляющего большинства программистов. Как понять, ваш ли это случай? Зажмуриться и представить две картинки:
вы пишете код и деплоите в прод, ходите на митапы по языку X и стеку Y, по вечерам читаете посты в блогах о новом языке Z и либе W.
вы пишете статьи и сабмитите в arxiv, ходите на конференции с какими-то закорючками на слайдах, по вечерам читаете чужие статьи с arxiv.
Что из этого больше привлекает? Что из этого больше привлекает потому, что это ваше (и что вы готовы делать уже сейчас), а не потому, что папка с мамкой сказали, что наука — эта крута, или потому что у учёных такой вот ореол полубожественности, или, для симметрии, потому что программистам дофига платят?
Что нужно для программиста? Писать код. Просто писать код. Обсуждать код с другими людьми. Находить реальные продуктовые подработки. Писать код у меня получалось до вуза. Прочитать Саттера и Александреску у меня получалось до вуза. Находить людей, которые критиковали мой код и давали дельные советы, у меня получалось до вуза, даже в ранних и средних нулевых, когда в интернете было меньше людей.
И главное — долго писать код. Поддерживать свой пет-проект годовой/трёхлетней/пятилетней давности и смотреть, что работает хорошо, а что — превратилось в нечитаемое неподдерживаемое месиво, и делать выводы на практике о том, что такое — поддерживаемый код. Развлекаться с языком, писать всякую ерунду на темплейтах в плюсах или абьюзить систему типов в хаскеле или натравливать vtune на свой код просто потому, что интересно, и прокачивать там свои скиллы. И по итогу предлагают хорошие деньги мне именно за то, что я умею писать всякую ерунду на плюсах и делать её быстрой, и потому, что я на личном опыте знаю, что — поддерживаемо.
А тезис «математика помогает» вообще ничем не отличается от тезиса, не знаю, «вера помогает», ведь «в трудные времена я думал о Боге, и Писание помогло мне их преодолеть». Хотя чего это я, даже это — более конкретное утверждение, чем «математика мне помогла в трудные времена». Как помогла? Чем? Обязательно ли для этой математики было оканчивать МГУ? Непонятно.
Я бы посоветовал не слушать всех тех, кто говорит, что без фундаментального образования никуда (ещё как куда). Посоветовал бы учиться в личное время на личных проектах, и не тратить своё и чужое время на вуз.
Потому что с окончания вуза прошло уже 10+ лет, и можно было бы ожидать какой-то отдачи от него, наконец, а её нет (и я теперь понимаю, что и не будет). А затраты и ненулевые альтернативные издержки — есть.
Про это в таких тредах редко говорят, поэтому я позволю себе сфокусироваться на этом отдельно.
Жениться в 17 действительно несколько рановато, а вот социального контекста, который настолько легко позволяет отношения, не отягощённые мыслями о тикающих часиках, будущем-вместе-или-нет через 10 лет, и так далее, и где вы встречаетесь с кем-то ради вас здесь и сейчас, больше не будет никогда. А если вы немного интроверт, то больше никогда не будет и богатого социального графа сверстников, через которых можно естественно оказываться в одной компании с большим количеством представительниц противоположного пола, имеющих похожий с вами социальный уровень, уровень самоосознания, и так далее, и где знакомства происходят сами, с нулевым количеством затраченной энергии.
Но можно, конечно, всё это променять на урматы.
Всё ещё жду, когда мне пригодятся урматы.
Ну и да, условия позднего СССР/ранней РФ и современного мира — это, тащем, два разных мира. Сегодня входным билетом куда лучше работает гитхаб и блог, а когда я диплом последний раз показывал — и не помню. По-моему, его у меня уже даже в резюме нет.
И да,
Лучше спокойно прочитать Таненбаума или «Computer Systems: A Programmers Perspective», чем выдрочить себе интроектированным элитизмом мозг до того, что от чтения любых книг, где нет хотя бы одной теоремы с доказательством, ты ощущаешь стыд, потому что мог бы в это время читать что-нибудь про higher topos theory, например.
А свобода слова не означает свободно говорить неприятные для фирм вещи и гадящие стране факты.
А свобода совести не означает свободно придерживаться аморальных ценностей и иметь гадящее стране мировоззрение.
Нет, братиш, запутался тут ты, сорян. То, что ты называешь свободой — это не свобода, а тоталитарный загончик, который, как ты почему-то думаешь, обязательно окажется меховой частью в твою сторону.
Проблема в том, что настоящая свобода (а не этот новояз, который ты и такие, как ты, пытаются притащить в дискурс) требует осознания личной ответственности за свою жизнь, а это тяжёлое, сложное осознание.
Вы уже во второй раз пытаетесь спорить с утверждением ∀x. P x ⇒ Q x, доказывая ∃x. ¬P x ∧ Q x? И вы при этом математикой занимаетесь, да?
Мне уже второй раз очень тяжело не язвить в ответ на эту тему.
Нет смысла рассматривать существование «вообще». С подвешенным в вакууме термом
x(одиноко стоящая переменная) ничего нельзя сделать, он неинтересен сам по себе.Формализация этих правил (с системами типов, отношением типизации, и так далее) раздует статью куда сильнее, и, ИМХО, оно того заслуживать не будет.
ХЗ, в данной кодировке оно напрямую не нужно. Может, автору потом пригодится для его дальнейших замыслов, не знаю, я ж не автор. Пока оно ему нужно, только чтоб красиво печатать λ-термы.
Это, конечно, упущение!
Потому что это на самом деле одно и то же.
Переменная — это то, что видит тело функции. Вы пишете λx. x + 2, и вот эта вот штука справа от точки (то есть, тело функции) видит только переменную x.
Когда вы вызываете эту функцию, то передаёте вы ей полноценный терм, который подставляется на место этой переменной. Просто в данном случае за подстановку отвечает метаязык (мета- — потому, что это язык, на котором описывается язык), и в нём такие функции имеют тип
Term → Term.ХЗ, я gleam не знаю, но это достаточно распространённый синтаксис в языках, черпающих вдохновение в ML-семействе. При очень беглом взгляде я вообще подумал, что это раст (которого, впрочем, я тоже не знаю).
Не читерство, а higher-order abstract syntax (потом можно обобщить до P(olymorphic)HOAS).
Охренительно удобная штука, на самом деле. Вам бесплатно (из метаязыка) даётся весь набор инструментов для работы с именами и байндингами, и, как следствие, отсутствие геморроя с представлением переменных (символы? de Bruijn? locally nameless? да это всё не нужно, фигачь на метаязыке!), бесплатная α-эквивалентность, процедура подстановки (это просто применение в метаязыке), и, если метаязык достаточно мощный (ну там, coq/agda/etc), то доказательства свойств вашего языка становятся сильно проще.
(P)HOAS — сила.
Разумно. Спасибо за пояснение!
Кто ходил, в каком вузе, на каком направлении, что было в программе? Неизвестно.
Если хотите говорить о таких примерах, то тот же матлог я зашарил самостоятельно (проботывая Верещагина-Шеня после работы). Чтобы я зашаривал (или углублял) анализ после работы — такого я себе представить не могу. Разницу замечаете?
В какой весовой категории нужно быть, чтобы не быть способным осознать, что чинить busyloop'ы yield'ами — плохая идея, и спорить об этом?
Если «юноша» (этак всего лишь на пару лет меня младше) к этому не способен, то чем он отличается от вкатунов, которых мы все так дружно любим обстёбывать?
Это я понял. Мой ответ был к тому, что это «обычно» далеко не везде, и, следовательно, что ставить в пример такие рамки — странная затея. Возможно, лучше как-то так делать, чтобы рамки изначально не были нужны.
Ясно.
Не было такого ни разу.
С какими рамками? Ни разу такого не видел, и спокойно выхожу без покупок через обычный вход безо всяких проблем, хоть в супермаркетах, хоть в мелких магазинах.
Очередные прелести жизни в TX вместо CA или NY.
Забавная смена позиции.
Нет, неверно предполагаете. Оплатил ту строчку кода какой-то товарищ из другой страны, которому надо было сделать лэндинг для каких-то БАДов.
Если же говорить о родственниках, то близкий родственник (ближайший, я бы даже сказал) как раз весьма активно поработал над тем, чтобы за строчки кода на более-менее нормальной работе, куда меня взяли лет в 13, мне не платили ничего.
Так что вот такой двойной промах, сорян.
В отличие от классического матана (который вот на самом деле сушит мозги и бесконечно скучен), матлог — это постоянный источник космических мультиоргазмов.
И, ИМХО, куда полезнее для, скажем, программиста, а мы же тут на сайте программистов.
Да, именно. Правда, опять же, учитывая, что под окнами оно тоже использует
yield, то всё это обсуждение не имеет особого смысла.Здесь нет созвучия синтаксиса, здесь есть созвучие имён и описаний, а имена призваны именно для того, чтобы называть вещи.
Где-то на стыке когнитивной лингвистики, психологии, эволюционной теории и всякой подобной ерунды есть такая штука, как ма́ксимы Грайса. Из этих максим следует, в частности, что в данном конкретном случае наиболее естественной интерпретацией слов «Yield - это не Питоновский Yield, это ОС функция, которая говорит ОС, о том, что поток хочет отдать своё время другим потокам, т.к. ничего не делает» будет интерпретация этого как ОС-функции
sched_yieldили её аналогов (потому что иначе человек бы уточнил проsleep(0), или про ожидание до конца слайса, или хотя бы указал бы про всё это в ответ на первое возражение про семантикуyield).Поэтому вполне естественно предполагать не по созвучию имён, а по тому объёму информации, которое было передано. И если человек это использует как gotcha-тезис, то самая правильная реакция на это — применение уринированного текстиля. Тем более, что данный конкретный человек, как дело доходит до практики, просто молча сливается уже трижды (раз — здесь, два — с дженериками, три — с наркоманским тезисом о том, что дельфи на три порядка популярнее плюсов в Бразилии), предпочитая аргументировать свои ошибки минусами за комменты и в карму вместо того, чтобы про них просто написать.
Гиперклоунада.
Плюс-минус, да.
Правда, это был HTML.Плюс-минус, да.
«Асоциальный задрот» было бы ближе к истине.
Функция называется
Yield, наш ведущий специалист по Delphi (где вакансий на порядок больше C++, нет, дарта, нет, го!) описывает поведение а-ляsched_yield(или как там она называется в винде), документация описывает поведение а-ляsched_yield, но вы почему-то думаете, что речь оsleep.А почему именно
sleep? Почему не, скажем,fflush(stdout)? Почему неkill(-1, 9)? Я много хороших системных вызовов знаю.Кстати, очередные прелести дельфи — найти онлайн реализацию этого
System.Classes.pasне представляется возможным, и, похоже, не является легальным по условиям распространения дельфей. Сравните с реализацией стдлибки в плюсах, расте, хаскеле или любом другом языке.Зачем мне его менять на
sleep, если изначально я отвечал на?
Нет (ну или, вернее, «мягко скажем, не обязательно»). Оно просто всё время сжигает в сисколле и ядре:
Но так, конечно, измерять ничего не надо. Лучше так:
Это даёт
6890 103.38на моей системе. Как думаете, у меня тут средний квант диспетчеризации — 100 наносекунд (минус время на сам факт сисколла, который в среднем по исключительно случайному совпадению как раз в окрестности соточки наносекунд), или таки побольше?Это метод замены «сжирает 100% ядра» до «дожирает до 100% ядра», не более.