Pull to refresh
-8
0
Send message

В том же физтехе есть Константин Владимиров, который за один семинар успел дать регулярки, грамматику, и тут же с помощью flex и bison показал как это все работает.

Забавно, кто бы мог подумать, что даже в "топовом топе" ВУЗе все, на самом деле, так грустно. "Регулярки и грамматика" - вместо них вроде положено изучать дискретную математику, конечные автоматы, теорию алгоритмов, CFG и вот это вот все. И не семинар, а семестр.
POSIX regexp - это уровень техникума скорее.

А рассказывать студентам про flex/bison/yacc на фоне того, что в реальном мире какие gcc и clang используют вручную писанные/тюнингованные TDP/RDP, по понятным причинам (как и все остальные проекты, чуть более сложные, чем калькулятор уровня bc).... даже несколько негуманно, можно сказать.

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

У меня нет ответа на этот вопрос. На "нормальных" инженерных специальностях, где про болты-гайки и прочую сварку-механообработку - там был процесс вида - деды-профессора-академики сидят и сортируют молодежь, типа вот этого мы в аспиранты двинем, вот этого отправим в конструкторское бюро на завод, а вот этот пойдет в автоцех сметы-заказы на ступичные подшипники оформлять, на большее не способен. Т.е. система сегрегации была налажена. Да, аспирант что-то там мог лишь к 40 годам выдать, будущие проектировщики до 30 лет дообучались на месте, но их "вели". Мастеров цехов и прочих технологов никто потом не вел, это понятно.

С айтишниками было совсем не так - ни студенты, ни преподаватели в душе не ведали, что на самом деле в индустрии нужно и куда дальше двигаться. Судя по общению с одногруппником, который остался на аспирантуру - ситуация мало поменялась, даже усугубилась, никто из преподавательского состава не смог ни Spring Framework осилить, ни Twitter Bootstrap какой. Про React знают только по картинкам из журналов, и т.п.

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

Т.е. если брать IT как таковой - то да, за 30+ лет ситуация не изменилась - ВУЗы не могли и не могут в это. Т.е. будущему айтишнику в ВУЗ имеет смысл чисто подсмотреть, как на "нормальных" технических специальностях процесс разработки всякого разного был еще полсотни лет назад организован, и попытаться воспроизвести это "у себя". Технические требования, эскизный проект, НИОКР, теория отказов, теорвер, матстатистика, и вот это вот все - этому, кстати, ни один инфоциганский курс не научит.

У нас доходило до смешного - я специально ходил в общежитии к нормальным не айтишным студентам их конспекты читал и беседовал о всяком, ну и потом в библиотеку за подробностями. Там реально есть чему поучиться, особенно в вопросах оптимизаций, критичных нагрузок, управляющих систем и т.п.

Так про то и разговор: для подавляющего большинства задач это всё можно особо и не обозревать и не сильно потерять.

Можно. Это если ты до ВУЗа успел где-то поработать, и примерно понять, чем хотел бы заниматься. Но насколько я помню свою группу - 95% даже на пятом курсе понятия не имело, чем именно они хотели бы заниматься в дальнейшем, практический опыт был нулевой, если и вовсе не отрицательный.

И из всего моего потока, к примеру, только два человека имели с третьего курса реальную практику, приближенную к боевым условиям и еще какой-то довузовский опыт работы. При этом эти оба были излишне самонадеянны и прям сильно переоценивали свои знания, в дальнейшем переход из "работаю у папы-мамы на заводе в ИТ отделе" в "работаю в топ-софтверной компании в Москве" заставил в ускоренном темпе пройти все обучение практически заново, полностью переосмыслить-перечитать все классические учебники - от OOA/OOD Шлеера-Меллора, Ахо-Ульмана и еще многие десятки томов вплоть до SICP, и все равно синдром самозванца победить так до конца и не удалось.

Ну и еще человека три из потока примерно к 30-ти годам тоже добралось до уровня "однако, даже не думал что IT это на самом деле так интересно, вот сейчас сижу ASP.NET изучаю". И это "элитная" группа ВУЗа по специальности САПР, с самыми высокими проходными баллами на старте, почти все - серебряно-золотые медалисты в школах. Остальные одногруппники из IT выпали в итоге.

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

Может быть в наше время оно все обстоит иначе, но сомнительно. Это в 90-е годы можно было прочитать две книжки по Clipper 5.0 или FoxPro 2.6 и уже быть профессионалом (просто больше ничего и не было). В 2000е уже надо было томов 15 всякого перечитать, как минимум, чтоб какую простейшую учетку на Delphi/Oracle сделать.

Какая стартовая планка сейчас - можно только догадываться.

Среднему программисту?

Да по абсолютной любой дисциплине. Если есть допустим в ВУЗе дисциплина "Основы баз данных" - то из тебя ну никак не получится не то что DBA на выходе, даже пользовательское владение SQL будет ну очень очень поверхностным, до конструкции NOT EXISTS (и паттерна event sourcing) вы там точно, к примеру, не доберетесь. И до 5НФ (и до 3НФБК скорее всего тоже). А про денормализацию уж точно будет ноль знаний и пониманий. Да и на реальной работе дай бог только через лет 5-10 добраться до проекта, где это все понадобится (а некоторые до конца карьеры с этим не столкнутся, так и ограничатся примитивным CRUD или и вовсе key-value JSON storage).

И так по абсолютно любой дисциплине - от сопромата до теории машин и механизмов. Везде дается только очень обзорное представление о дисциплине, а чтоб что-то реально уметь потом делать в реальных проектах - нужно будет самостоятельно по тому-же сопромату изгрызть не один десяток томов - от теоретических основ до руководств к MSC Nastran/Partran и прочим Catia. И это чтоб получить позицию джуниора инженера прочниста с минимальным окладом.

Потому возгласы вида "а вот мне ВУЗ ничего не дал и за два года я сам узнал огого как много" - и к чему это? ВУЗ это базовая программа, сверх нее никто ничего и не дает и не обещает, так, чисто вводный "туристический" проспект о тех "местах", которые потом можно будет посетить. С оценками вида "просмотрел, вообще ничего понял, ну и ладно", "просмотрел, ок, хорошо, сделал вид что что-то понял", "просмотрел, сделал вид что все понравилось, отлично, а дальше что?".

А сверх этого - это только самостоятельный дриллинг. Очень странно, что вообще еще где-то фигурирует мнение, что в ВУЗах делают готовых к реальным задачам специалистов. Такого никогда не было - ни пять, ни пятьдесят пять лет назад.

Вон даже на врачей - пять лет в ВУЗе отучился, а потом будь добр еще 2 года ординатуры отработай, и только потом тебя может быть подпустят реальных людей лечить, по простейшим случаям, с аварийной кнопкой вызова зав.отделения для страховки. А что-то реально знать, уметь и понимать будешь дай бог лет через 10 практики и бесконечного числа семинаров и курсов повышения квалификации.

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

ВУЗовская программа не предусматривает знания именно как практически применимые навыки, она лишь дает некие общие обзорные моменты, направления. По откровениям преподавателей - они дают в лучшем случае 1..5% от реально необходимого по тем дисциплинам, которые читают.

Больше объема дать нельзя - т.к. и средний уровень студентов это не позволяет (не все таланты, не осилят), да и элементарно недостаточно выделенных часов на что-то большее, чем поверхностно-обзорные лекции и крайне примитивные-абстрактные лабораторные/курсовые работы.

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

Преобразование бизнес-данных из одного формата в другой.

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

Вопрос из серии - зачем ты поднимал штангу в спортзале, неужели это помогает сажать картошку?

Высшее образование нужно как минимум с целью сделать из кодера именно инженера, а не очередного javascript-гуманитария вида "я художник, я так вижу". При том что основы матанализа, которые преподаются под названием "высшая математика" - да, факт, они даже настоящим инженерам (которые про болты-гайки и прочие машины-механизмы) и даром не нужны, как минимум в том виде, в котором они преподаются в ВУЗах уже который десяток (если не сотни?) лет.

Для аналитических упрощений и преобразований есть всякие матинституты и кафедры (когда какие Р-7 проектировали там без академиков из Стеклова совсем не обошлось), а вот для практических расчетных задач уже давно массово доступны численные методы, да и всякие Mathlab никто не отменял. Другое дело, что если какой инженер имеет способность видеть и описывать задачу в матмоделях - то это уже без года кандидат технических наук.

И вот с этим беда, т.к. умению в матмодели в ВУЗах на уровне бакалавриата и даже магистратуры на самом деле даже не пытаются учить, дескать инженеру технологического отдела на заводе оно все равно никогда не понадобится, зачем время зря терять.

Но помимо матмоделей (которые на самом деле не преподают даже аспирантам) в ВУЗовской программе есть и много других небесполезных дисциплин для необходимого минимального общего развития (философия, основы организации производства, основы экономики, инженерная графика, электротехника и т.д.).

Для того, чтоб делать сайты на PHP или какие проводки в 1С настраивать - оно все это может конечно и лишнее, а вот если что-то потом реально сложное проектировать, вроде MES систем или в промышленные контроллеры и автоматику - то это совсем иной уже разговор, сам ты мало что изучишь, без правильного пинка на старте в нужные направления и практики.

В конце концов stackoverflow и ChatGPT для задачек АСУТП и прочей динамики жидких сред еще вроде не завезли в массы, да и в МКЭ не всякий инженер-конструктор в каком Nastran умеет - вон к примеру УАЗ уже который год не может виртуальный стенд для эмуляции краш тестов освоить.

Сам лично наблюдал. Как люди печатающие одним пальцем будут держать шифт когда надо всё напечатать капсом?

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

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

Не поленился, пошел проверить, добавил немецкий язык и английскую Dvorak. В таком режиме CapsLock их все четыре переключает по кругу/циклу. Удобно или нет - трудно сказать, мне хватает EN/RU

 производители клавиатур не шевелятся - потому что никто не будет покупать клавы с доп. кнопками

Такие выпускают - Logitech G613, G915 к примеру. Keychron Q10 и прочие.

Нет, не там Shift+Caps работает как обычный Caps. Хотя лично мне это больше мешает, т.к. периодически он включается сам. А как отключить подобную комбинацию - пока не нашел.

нафига мучаться, если большинство тарифов на голосовую связь или безлимитные, или там такое количество минут, что всё равно запаришься тратить?

Качество у мессенжеров обычно лучше, но главный момент - это не светить свой номер телефона + защита канала связи.

Плюс есть еще какой момент - к примеру раньше всегда можно было отправить СМС от абсолютно любого, не своего номера телефона как отправителя (это я проверял лично через какой-то веб сайт, и дыра скорее всего не закрыта до сих пор). Скорее всего аналогично можно любому сделать звонок, указав твой номер как обратный. Такое я лично не проверял, тем не менее, учитывая дыру с СМС, удивляться не придется. Что-то там у них с роумингом не закрыто.

Плюс разговоры через GSM связь они чуть ли не по громкоговорящей связи передаются - и их не только товарищ майор может слушать. А теперь остается только вспомнить, сколько раз через обычный телефон диктовались номера кредиток и прочее подобное.

Плюс можно записать твой голос и потом можно через нейросетки поиграть в Лексуса и Вована. Мне так раз "жена" "позвонила", просила "срочно сбросить 15 тысяч в школу срочно взносы на ремонт класса оплатить". Я чуть не повелся, даже номер счета записал.

Вы все еще пользуетесь мобильным телефоном как телефоном, да?

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

В чем вранье? Ну вот стою я непонятно где, возле моста, и начинаю звонить и объяснять, эээ... улица..... ээээ.... ну у моста... так, тут киоск еще такой белый, и фонарь... Точный адрес говорите? Сейчас сейчас.... Я перезвоню.

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

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

Ок, вот тут я может и соврал, т.к. именно воцапом пользуюсь в крайних случаях и он изгнан из тех, кто имеет право жить в фоне.

В телеграме ни разу страдальцев по моей безопасности или продлению просроченных договоров на Теле2 еще не было замечено. А вот на телефон наяривают минимум по пять раз в день, пытаются.

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

Наверное в разных странах живем.

Враньё.

Ни разу не вранье. Абсолютно все мои знакомые давно уже от именно телефона отказались, и попытку позвонить им на телефон голосовым звонком (или сбросить СМС) воспринимают примерно как предложение совместно посмотреть телевизор или поделиться CVV2.

У вас еще не так? Ну... ок.

Нет. Через инет-банк удобнее.

И в чем проблема тогда ото минусовать было?

Или любой житель мегаполиса должен помнить графики тысяч номеров электричек и автобусов, и уметь в уме высчитывать оптимальный маршрут? Да еще и в незнакомом городе? И переплачивать примерно в полтора-два раза за вызов такси через диспетчера каждый раз, и потом еще ждать полчаса пока "подадут", а не через онлайн "вот тут и через пять минут"?

И на обычные телефоны никто не отвечает потому что "службы безопасности Сбербанка" уже достали. Плюс трезвонить - это банально невежливо - напиши человеку, он тебе ответит или перезвонит сам, когда ему будет удобно.

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

И это что, это повод карму теперь минусовать? В чем проблема, откуда столько агрессии-то?

То есть свой DSL лучше делать, чтобы могли на нем писать кто-то вроде аналитиков.

Совсем не обязательно писать свой именно отдельный язык. Есть же пример Lisp/Scheme, где и языка как такового нет и ты сразу пишешь просто в AST.
Ну так AST можно описать чем угодно - хоть в YAML, JSON или и вовсе на С/C++ макросах, которые будут убирать лишнее под капот.

К примеру вот пример C/C++ кода. Ниже FOR(), SELECT(), FROM(), WHERE(), IS_NOT_LIKE() - это макросы.

int main() {
  FOR(record, 
    SELECT(INDEX_DESC(persons_name)) 
    FROM(persons)
    WHERE(IS_NOT_LIKE(persons.name, "Сидоров%") && (persons.age > 40))
  ) {
    printf("%s %d\n", record.name, record.age);
  }  
  return 0;
}

И подобный подход (макросами) можно расширить на что угодно.

Только не надо говорить что макросы это зло - вы просто не умеете их готовить (с)

P.S. А еще M4 существует :)

У меня например нет смартфона, я пользуюсь максимально тупой звонилкой, которая не разобьётся и не сядет внезапно в дебрях.

Возможно стоит для себя открыть устройства фирмы Blackview (и не только).

Про то, что в современном мире можно выжить без смартфона - звучит малоубедительно:

- маршруты в общественном транспорте не проложишь;

- такси не закажешь;

- без навигатора хрен куда на своем авто доедешь (нет, ну если ты не в Сибири какой живешь в тайге, где одна дорога до райцентра);

- хрен кому куда позвонишь (нормальные люди на телефонные звонки уже не отвечают, только Телеграм или Воцапп какой);

- думскроллить тоже негде (а это прям беда-наркозависимость);

- деньги "на телефон" никому не скинешь (перевод на карту или СпБ).

Помню да, пару лет назад смартфон отдал в ремонт и попробовал походить со старым iPhone 4s с неделю (который ни на что, кроме как на обычные звонки и СМС не годен), чуть сума не сошел - уже на третий день побежал покупать жене новый смартфон, а себе ее старый забрал временно.

В общем и целом - чем больше разных вариантов и доступных средств, тем больше возможностей выбрать наиболее оптимальный под конкретную задачу.

В современном мире использовать SQL для highload runtime, да еще и с гарантией по времени отклика - да, это так себе идея. Тем не менее, о чем вообще спор был изначально?

С++ вполне может быть адекватен даже для бизнес задач. Для тех самых типовых задачек вида "конвертируем что-то из одного условно-табличного вида в другой" (к которым сводится 99.9% всех айтишных задач).

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

В современной разработке что C++, что Java подходы из коробок/книжек - они, изначально, мягко говоря, не про бизнес задачи. Сильно много слов заставляют писать не по "теме".

LINQ вот еще подавал надежды, но тоже сдулся. lsFusion еще тут мелькал, как альтернатива 1С, но... не будем больше о грустном.

По хорошему нужно что-то, что может в одном адресном пространстве (без всяких IPC/TCP/etc) иметь сразу и ORM, и SQL, и сразу HTTP(s)/JSON, и чтоб быстро и чтоб надежно, и еще column-storage. И без лишних конвертаций туда-сюда. И чтоб язык был хороший для "скриптов".

Tarantool еще, ах да. Интересно, так и пытаются LUA продавать?

Все эти "виртуальные таблицы в CSV" на таких объемах просто встанут колом.

Почему они встанут колом? Эти виртуальные таблицы (в формате CSV) можно чем угодно делать - от bash до С/С++, да хоть на ассемблере. В базу данных подается просто готовый результат уже, который нужно сохранить (если нужно). Возможно сейчас не совсем было понятно, что такое EXTERNAL TABLES и как они работают, но... можно погуглить наверное. В простейшем случае это SELECT FROM stdout - а кто в этот stdout пишет и что именно - это вопрос десятый.

А так - для современной базы данных сотни миллионов записей в день это не проблема. Там практический лимит был для типового не очень свежего 16 ядерного x64 сервера около 5 млрд. записей, по 100 байт каждая, в сутки. С парой индексов сверху. Без индексов сильно больше. И то оно все упиралось просто в хранилище. А если direct path insert какой взять INSERT /*+ APPEND */ в простонародье, и без логов - то там и сильно больше 5 млрд можно осилить. Не в один поток естественно это все.

Другой вопрос - где вы такие объемы берете-то.
Но С++ там точно не серебряная пуля, основные временные затраты идут вовсе не на клиентской стороне.

Просто вставляем SQL запрос в код на DSL. А всю сложную логику пишем на DSL. Никто не запрещает. Embedded SQL называется.

Честно говоря - писать свой DSL для подобного - не очень убедительно. Но хотите так (через самописный DSL, а не через EXTERNAL TABLES генераторы-врапперы) - никто не против, так тоже можно.

dcl-ds dsMyFileRec likerec(MyFile.MyFileRecF: *all);

chain (KeyValue) MyFile.MyFileRecF dsMyFileRec;

dsMyFileRec.numericFeild += 1;
dsMyFileRec.dateField += %days(3);

update MyFile.MyFileRecF dsMyFileRec;

5 (пять) строк кода.

Простите конечно, но чем псевдокод лучше вот такого? Строчек ровно в два раза меньше.

UPDATE myFile rec
   SET rec.numericField = rec.numericField + 1,
       rec.dateField = rec.dateField + 3 -- ook, Oracle specific
WHERE  1 = 1; --  likerec(MyFile.MyFileRecF: *all)

Ну да, += в SQL так и не завезли, печаль печаль огорчение :) Но по сути, чем вот то что выше лучше? Возможности вставить произвольное процедурное в процессе - это тоже есть, можно на каждое UPDATE хоть JSON запросы на внешние вебсервисы дергать, и даже результаты в другие вебсервисы засылать, есть и такие средства.

Хитрые сипипишники скажут -  просто надо воспользоваться каким-нибудь фреймворком

Как хитрый C++ ник я могу сказать - ничего лучше INSERT INTO table2(...) SELECT ... FROM table1 до сих пор не придумано.

Если не хватает базового SQL (и каких cross-database links), то есть понятие EXTERNAL TABLES, когда вывод некого скрипта можно представить для сервера баз данных как виртуальную таблицу (к примеру в .CSV формате) и далее опять куда там нужно тебе INSERT INTO SELECT FROM

И то - это если у тебя какого PL/SQL нет под рукой (который вполне покрывает 99% задач по трансформации данных).

Это если говорить о реалиях реальной жизни.

А если говорить о "взагали по взагалях" и как оно неплохо было бы - то возможности C/C++ тебя не ограничивают, упарываться в DSL можно как угодно - к примеру из таблиц/вьюшек нагенерировать классов в стиле OORM. И взять любой из десятка доступных API - от преснокислого ODBC до прям специализированных, OCILIB какой к примеру очень и очень неплох.

Вопрос то в чем собственно? Если не удалось найти достаточно выразительный и удобный DSL (а SQL и PL/SQL это как раз примеры очень удачных DSL), то напиши свой. И документацию к нему не забудь. Для себя-же, который будет это все потом через пару лет читать и материться, в духе "какой же баран это все так криво понаписал".

 а как это делать жителям деревень например?)

Через телефон (смартфон). Которые есть у абсолютно всех.

Information

Rating
Does not participate
Registered
Activity