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

Итак… Мне за сорок. По образованию лингвист, работаю в научной сфере. С программированием никогда не сталкивался, хотя формально в школе проходил уроки по информатике, которые, собственно, свелись к набору программы на Бэйсике из методички и к лицезрению загадочного ДОСа на компьютере учителя. Ох, да, ещё было очень краткое знакомство с Фокалом, но, опять же, все строго по методичке.



Я детдомовец, поэтому после школы мне удалось поступить по квоте в местный университет на сельскохозяйственный факультет. Учеба закончилась ровно через год из-за нелюбви к выбранной дисциплине. Собственно, мне трудно представить, что большинство людей способно в восемнадцатилетнем возрасте точно определить свои профессиональные и жизненные целеустремления. Я читал биографии людей наподобие Илона Маска, который начал программировать уже с пеленок, или основательницы «Тераноса», которая уже в пятилетнем возрасте организовала свою домашнюю химическую лабораторию.

Большинство же людей, как и я, впрочем – стадо животных, следующих за трендами. В университет поступаем не из-за тяги к знаниям, а просто потому что все так делают. Ну, и в армию-то тоже никому особенно не хочется. Есть более везучие особи, которые целенаправленно поступают в перспективные ВУЗы на перспективные специальности по совету родителей, но это опять же вопрос везения, связей и денег. Я в детстве любил смотреть «Умников и умниц» и мне, честно говоря, было трудно представить себе, что в этой передаче могли бы массово участвовать, скажем, дети отбывающих наказание или страдающих алкоголизмом людей.

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

Итак, я поступил на лингвиста. Почему? Потому что в местном университете преподавали лингвистику и потому что на целевом факультете были бюджетные места. Лингвистика… Очень интересная специальность. Лингвистика – это наука о структуре языка, но, как правило, подавляющее большинство лингвистов с трудом владеет своим родным языком, не говоря об иностранных. Отец современной лингвистики Ноам Хомски говорит только на английском и понимает пару фраз на иврите, тем не менее, это не помешало ему разработать мощную теорию грамматики языков, которой активно пользуются миллионы людей, работающих в сфере языкознания.

И вот эта особенность лингвистики была моим шансом шагнуть на следующую ступень. Если вуз выпускает сотни однотипных специалистов с базовым набором знаний в соответствии с требованиями Минобразования, то лучшим способом выделиться из толпы было бы выучить парочку иностранных языков. Учебу в университете пропускать не хотелось, поэтому пришлось бросить работу в порту и устроиться в школу ночным сторожем. 4000 рублей в месяц. Каждый день овсянка и макароны. Но, с другой стороны, масса свободного времени, которое я использовал для выполнения домашних заданий и изучения дополнительных специальностей. В довеску к преподаваемому в университете английскому я решил учить французский. Почему? Потому что это официальный язык дипломатии, второй язык в ООН и, в конце концов, язык экономически развитых стран.

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

Работа день через три. Переписывание лекций. Домашнее задание. Курсовые. Самоучитель по французскому. Через два года я достиг того уровня, который позволял читать небольшие газетные статьи и писать незамысловатые сочинения. Большой проблемой была разговорная речь и слух, поэтому пришлось записываться на языковые курсы и сидеть на овсяной каше с утра до ночи. Через год я прошел экзамен на уровне В2, который позволяет поступать в зарубежные вузы.

Вопрос о способности к языкам остался открытым. Почему я выучил французский? Из-за упорства или из-за генетических способностей? Или вместе из-за тех и других? Мои размышления были прерваны вызовом к декану. «У тебя есть DELF B2? Вот и прекрасно. У нас подписано соглашение с университетом Бреста об обмене студентами. Поедешь на три месяца».

Я в компании нескольких провинциальных мажоров отправился в Бретань. Стипендия 500 евро в месяц, конец овсяной каше. Брест – провинциальный город средней паршивости, в котором, кроме порта, нет никаких развлечений. Мои напарники плюнули на учебу с первого дня и укатили в Париж. А я исправно ходил на лекции, после обеда в лабораторию, куда я напросился в качестве ассистента на добровольной основе. Контакт с преподавателями был налажен.

Возвращение в родное провинциальное захолустье. Разговорный французский позволил устроиться в отдел по международному сотрудничеству в родном вузе. Еще два года. Дипломная. Выпуск. Мне тридцать. Военкомат вручает мне военный билет с пометкой «рядовой запаса». Я еду в Ренн по магистерской стипендиальной программе. 750 евро в месяц, пара лет лекций, экзаменов и стажировок. Мне предлагают пройти конкурс на получение государственного контракта для написания диссертации. Конкурс успешно пройден. Четыре года, 1600 евро в месяц после уплаты налогов. Диссертация защищена. Я еду в Шанхай, это мой первый постдок.

1000 евро в месяц. Для Китая и даже для Шанхая вполне приемлемая зарплата. Однако это мой потолок. Карьерный рост возможен, но он потребует огромных усилий. Претендент на должность доцента должен обладать запасом в несколько десятков публикаций в достойных журналах и опытом работы в нескольких странах. Начался период тяжелых раздумий. Несмотря на годы усилий и ученую степень, я оказался на том уровне, на который попал бы и без французского с овсяной кашей. Более того, несмотря на довольно глубокие знания в лингвистике, я не любил эту профессию.

Перспектива быть вечным постдоком и заниматься нелюбимым делом меня не радовала, и я довольно часто начал впадать в депрессию. Чтобы привести мозг в порядок, я начал заниматься спортом. Первый день. Бег. 100 метров. Я мёртв. Я никогда в жизни не бегал, обходил турники стороной. Я был любимой целью шпаны. Однако стометровка дала свои плоды: депрессии как не бывало. Мозг начал работать и анализировать действительность.

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

Я остановился. У меня afterburn. Вот он, тренд. Мир стремительно движется в сторону тотальной роботизации. Carrefour заменяет кассиров на автоматические сканеры. Cathay Bank реформирует отдел по работе с клиентами в том же духе. Парижские работники метро бастуют из-за открытия новой автоматизированной ветки. Я должен начать учить программирование или останусь навсегда за бортом.

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

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

Итак, что учить, где начинать? Quora, StackExchange, Habr. Самые популярные и востребованные языки: Python, Java, JavaScript. Я точно не хочу учить веб-программирование. Лепить красивые сайтики на фоне вонючего китайского смога и заваленного пластиковыми бутылками пляжа – это, по-моему, верх ханжества. Виртуальная реальность должна соответствовать действительности.

В общем, выбор пал на Пайтон. Все говорят, что это очень легкий язык. Это как раз то, что мне нужно. Итак, книга Доусона. Я дошел до циклов и мне все надоело. Где-то глубоко во мне сидело осознание неудовлетворенностью выбранным курсом. Более того, автор выбрал написание игры в качестве основного мотиватора для изучающих язык. С одной стороны война в Сирии, миллионы беженцев, терроризм, глобальное потепление. А в это время взрослые люди с солидным фундаментальным образованием сидят в мягких креслах и пишут игры. Да-с… Но, тем не менее, учебник Доусона всё-таки очень внятен. И предлагаемая вместе с книгой IDE облегчает знакомство с языком.

В плане знаний ничего полезного я из книги не извлек, наоборот, у меня возникло еще больше вопросов. Например: как пишется операционная система и как она записывается на жесткий диск. Как осуществляется передача сообщений по сети? Почему у ДОСа убогая графика, а у Windows 16 миллионов цветов? Книгу Доусона пришлось отложить в сторону и снова погрузиться в раздумья.

Есть один немецкий фильм, называется «Кто я». Герой фильма хочет влиться в компанию хакеров и те просят его продемонстрировать свои знания. Говорят: вон там за окном электростанция, отключи ее. Кандидат в хакеры садится за лаптоп и набирает код на клавиатуре. Стоящие за его спиной люди уважительно говорят: о, ты умеешь low level! Ты с нами. Вот эта фраза довольно глубоко въелась в мой мозг. Low level… Кажется, это и есть ключ к ответам на мои вопросы.

Итак, учить программирование придется учить с азов, с ассемблера. Quora, StackExchange, Habr. Набор книг по ассемблеру. Несколько недель на ознакомление с каждым учебником. Бездна безысходности. Каждая книга предлагает учить ассемблер с позиции языка высокого уровня, чаще всего С. Педагогически это неверно. Это как предложить изучающим русский язык сначала освоить синтаксис сложноподчиненных предложений, а потом перейти к алфавиту. Отсюда, кстати, следует и вторая проблема: автор предполагает, что изучающий ассемблер не нуб и знает, что и где нужно нажать, чтобы запустить отладчик, да и вообще в какой среде разработки следует писать код. Ах да: учебники в основном концентрируются на FASMe или TASMe, если речь идет о российских авторах. Линукс я никогда не видел, поэтому на ФАСМе стоит крест. У ТАСМа нет внятной среды разработки, поэтому тоже «нет».

Несколько недель поисков в сети увенчались успехом. Я нашел книгу, которую можно было бы поместить в рубрику «изменяющих сознание». Кип Ирвин, седьмое издание. Почему эта книга так хороша? Ирвин по образованию музыкант, причем с диссертацией, что не помешало ему в зрелом возрасте снова поступить в университет на программиста. Он учил язык самостоятельно в качестве хобби, поэтому отлично понимает все трудности, с которыми может столкнуться новичок. Его учебник объясняет всё: куда нажать, на что посмотреть, как установить. Отличный вводный курс по Visual Studio, МАСМ, ДОС и немного С++. А главное – это упражнения.

Я постдок, работаю в непыльной лаборатории, шеф не занудствует и не заставляет работать сверхурочно. Вечернее время с шести до двенадцати уделено ассемблеру и программированию вообще. Первое упражнение — это как моя первая стометровка. Главное – осознать то, что программирование и вообще поиск решения проблемы является неалгоритмируемым и нелинейным процессом. Этот процесс требует непрогнозируемых временных затрат: может, пару минут, а, может, и несколько дней. Главное – помнить свой предыдущий успех: если я в прошлый раз решил упражнение с двумя звездочками, то в этот раз тоже решу.

Вместе с первой решенной задачей пришло понимание того, что программированию нельзя обучить. Можно выучить пару сотен алгоритмов, но всё рвно настанет тот день, когда нужно будет создать что-то новое. И тут уж никакой Дональд Кнут не поможет. А можно ли развить способности к программированию? Ломоносов говотил, что лучшее упражнение для мозга — математика. Поэтому в довесок к ассемблеру нужно было освежить знания по матану и начать изучать дискретную математику. Снова муки выбора, но уже попроще. Матанализ, учебник Стюарта, шестое издание. Дискретная математика, Кеннет Розен, седьмое издание.

В сети очень много дискуссий, посвященных бесполезности асма. Я же чрезвычайно рад тому, что выучил основы этого языка. Низкоуровневое программирование позволяет понять такие неочевидные для языков высокого уровня вещи как работа стека памяти и почему возникает его переполнение, чем опасна рекурсия, фундаментальное значение связанного списка для систем хранения памяти, етц. Главное же — это то, что асм учит бережливому отношению к ресурсам компьютера и, соответственно, к энергопотреблению. Будь я миллиардером, я бы с удовольствием инвестировался в разработку систем наподобие MenuetOS. Ну, или хотя бы пожал руку их разработчикам.

Девять месяцев на Ирвина, ознакомление с FreeDOS, изучение стандартной библиотеки С и первые шаги в С++. Краткое знакомство с технологиями SSE по справочнику Куссвурма. Босс вызывает меня к себе в кабинет и заявляет, что мои сомнительные успехи на научном поприще не позволяют ему продлить мой контракт. Не удивительно: мои коллеги с утра до ночи потеют над проектами, забывают о личной жизни и бьются насмерть с редакторами и рецензентами за каждую статью, а я отсиживаю положенное по контракту время в лаборатории и бегу домой баловаться с ассемблером, и вообще думаю больше о программировании, чем о работе.

В общем, у меня полгода до увольнения и мне нужно добавить газу. Откладываю дискретную математику в сторону. Мне нужно начинать учить язык высокого уровня и выбор падает, естественно, на С++. Я уже на «ты» с Visual Studio, поэтому все должно быть легко. Кстати, С является подмножеством С++, поэтому можно убить двух зайцев одним выстрелом.

Кресты. На мой взгляд, есть пара достойных учебников: Прата и Дейтель. Прата местами довольно многословен. Дейтель прост, но все объясняет с точки зрения ООП. С этих учебников началось мое первое погружение в мир объектов. Поскольку мой мозг был безнадежно испорчен ассемблером, то учебник Дейтеля я использовал только как источник дополнительной информации. Автор посвящает целую главу описанию «силы, мощи и красоты» ООП, при этом не удосуживаясь описать недостатки концепции. Например, Ирвин открыто говорит во вступлении, что писать ПО на ассемблере – нездоровая идея, но знать ассемблер должен каждый. Прата тоже не излишествует и описывает ООП довольно умеренно. Дейтель же говорит: ООП – это круто, поэтому будем им пользоваться. 2+2? Нет проблем: создадим класс, парочку конструкторов, унаследуем методы и перегрузим операторы. Ответ: 4.

Человек пришел в ресторан и заказал спагетти. Официант принес ему ложку, вилку и трубочку. Клиент думает: ну, раз принесли трубочку, то ей обязательно надо пользоваться. И начинает засасывать по очереди макаронины. Просто, мощно и красиво. Это не критика ООП, мне просто кажется, что у всего есть свои области применения и ограничения. ООП наверняка хорошо в графике, где каждый объект на дисплее соответствует объекту, создаваемому на основе описания в классе. Но и здесь вспоминается книга Абраша, писавшего игры на чистом ассемблере. Или Ксавье Ниель, владелец французского мобильного провайдера Free. Он основал школу «42», где абитуриентам после нескольких месяцев подготовки предлагается написать видеоигру на С. Можно ведь и без ООП обойтись.

Другая проблема языка – указатели. Этой теме тоже посвящены сотни статей и гневных писем в редакцию. Указатель в ассемблере – очень простая вещь и не требует для понимания какого-то особенного мозга. Реализация указателей в С/С++ — это действительно проблема. Не хочу останавливаться на тонкостях, хочется лишь сказать, что указатели с кастами и с десятком астерисков между скобками действительно вызывают обморок. Почему нельзя было придумать что-нибудь более внятное наподобие ESI/EDI и квадратных скобок?

Неделя до увольнения. Лингвист. Более чем высшее образование. Абсолютно бесполезное существо на рынке труда. У меня выбор: или заняться поиском работы, или потратить накопленные деньги на путешествия и отдых. Китай всё-таки красивая страна. Гансу, Цинхай, Синьцзянь, Каракорумское шоссе. Мои разосланные несколько месяцев назад резюме остались без ответа. Я сижу в лаборатории и рассматриваю сайт университета. «Лаборатория искусственного интеллекта ищет людей с магистерским образованием и навыками программирования». Мне отвечают через пять минут. Рандеву через час.

Шеф интересуется моим прошлым и задает пару вопросов о моей мотивации. Он по образованию статистик, никогда не программировал, поэтому зовет своего постдока, чтобы тот меня протестировал. Алгоритмы по преобразованию фраз и поиску слов, это просто. Генетические методы и модели Маркова… эээ, полный ноль. Шеф мне говорит: у тебя ровно столько знаний, сколько могло бы быть у стандартного самоучки. Ассемблер не в счет, он бесполезен. Но он дает мне шанс, поскольку у меня есть знания иностранных языков и способность к обучению. Он работает над корпусом китайского языка и собирается расширяться в сторону индоевропейских языков. Сидящий рядом постдок говорит, что придется учить паттерны. ООП неизбежно как крах империализма…

Итак, первый день. Среда разработки – Visual Studio. Язык – С Шарп. Моя задача – изучить программное обеспечение, над которым они начали работать десять лет назад. Язык по синтаксису близок к С++, но есть масса незнакомых мне методов, поэтому снова приходится искать учебник и решать упражнения. В этот раз выбор падает на болгарский учебник, написанный основателями Telerik. Превосходная книга для тех, кто хочет изучить одновременно и язык, и алгоритмы.

Прата, кстати, описывал очереди и стэки, но это делалось в не-императивном стиле: мол, давайте решим эту задачу с помощью стэка. А что это за стэк-то такой и откуда он взялся – не известно. Болгары описывают каждый алгоритм и объясняют, какой круг задач может быть решен с их помощью. Я когда-то на заре юности читал треды на StackExchange и часто впадал в ступор от фраз наподобие «черно-красные деревья». Сейчас тоже впадаю, но хотя бы представляю, что такое «дерево» вообще. Учебник болгар пришлось дополнить книгой поляка Марцина Ямро. Чистые алгоритмы, все просто и понятно. Паттерны: Джудит Бишоп.

Искусственный интеллект и корпус китайского языка. Шарпа недостаточно. Нужно учить базы данных. SQL, справочник Агарвала. Прекрасная книга, внятные объяснения. За алгоритмами и базами данных следует учебник Петцольда по WPF и «WPF Cookbook». XAML прост в усвоении, однако идущие вместе с ним bindings и MVVM пока еще не поддаются пониманию.

Год работы в области разработки искусственного интеллекта в качестве джуниора. То есть в академической среде нет такого понятия как инженер ПО. Мы все – research assistants. У каждого свой проект, а как он будет реализован — это личное дело каждого. Я уже упомянул, что мой босс никогда не программировал. Для него главное требование – интеграция с ранее написанным софтом, всё. Я иногда беседую с коллегами, работавшими ранее в корпоративной среде. Судя по всему, у нас довольно расслабленная обстановка, всё обходится без проверок качества кода. Паттерны пылятся на полке.

Я пока еще не знаю, хочу ли я в будущем продолжать работать программистом и искать более высокооплачиваемую работу в частной компании, но я уже точно знаю, что мне не хочется заниматься ИИ. Как говорят наши американские партнеры, ИИ – это 99% hype. Очковтирательство. Терри Гоу безусловно сможет автоматизировать конвейер Foxconn'a. Метрополитеновцы, кассиры в супермаркетах и работники колл-центров тоже пойдут на мороз, потому что это алгоритмируемая работа. Компьютер, однако, никогда не заменит учителя, врача и инженера. И я лично вряд ли доверю роботу управлять моей машиной.

Ах, я забыл: я же лингвист и все так же бесполезен на рынке труда. Где он, тренд? Что нужно учить, чтобы остаться на плаву? Ну, посмотрю новости еще раз. Ага, канадцы арестовали дочку владельца Huawei. Немцы беспокоятся по поводу уязвимости государственных систем телекоммуникаций перед лицом китайской угрозы. Nokia еще не достигла технологического уровня Huawei, поэтому в Германии назревает дилемма: либо ждать несколько лет, пока местные компании родят достойную замену китайской продукции, и при этом поставить крест на экономическом рывке вперед. Либо модернизировать местную мобильную сеть до уровня 5G, полагаясь исключительно на потенциально небезопасную продукцию коммунистов. Мне кажется, что я должен начать копать в этом направлении. С, Линукс, networking, электротехника, телекоммуникационные стандарты. Это моя следующая ступень.

Заключение. Все вопросы, которыми я начал задаваться с того момента, когда впервые открыл самоучитель по французскому, так и остались без ответа. Можно ли развить способности к языкам или это врожденная особенность человека? Логика, абстрагирование и программирование — аналогичный вопрос. Нейрофизиологи утверждают, что левое полушарие мозга как раз и отвечает за языковые способности человека и его умение логически рассуждать. Был ли мой мозг изначально предрасположен к аналитической деятельности или же это результат жизненных обстоятельств? Почему я был апатичным ребенком без всяких интересов, а перешагнув за черту двадцатилетия, внезапно обрел усидчивость и умение усваивать довольно чувствительные объемы информации?

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

Ну, и на счет целей в жизни. У читателей этой статьи наверняка возникло ощущение недоумения: здоровый, мол, лоб, а всё ещё мечется в подмастерьях. Осознание того, чем мне бы хотелось заниматься, пришло уже после того, как мой научрук подарил мне книгу «Человек, который сажал деревья» Жионо. После этого я напал на публикации нашего ученого Зимова в Nature, описывавший первый проект по геоинженирингу в Восточной Сибири. Есть еще замечательная работа зоологов из Новосибирска, ведущих работы по приспособлению львов к условиям полярной зимы. Мне бы хотелось заниматься именно этим. За 20 000 рублей в месяц.

Всем удачи!

Комментарии (124)


  1. click0
    25.02.2019 19:37
    +3

    Вы слишком прямолинейны.
    Представьте области знаний в виде окружностей-множеств.
    Старайтесь искать пересечения с вашими знаниями и по чуть-чуть их расширять.
    Модель и цепи Маркова — теория вероятностей. Наиболее близкие аналоги в мире программирования — стеки и предсказуемые переходы.
    Постарайтесь остаться на текущей работе и потихоньку у себя внедрять методы тестирования и покрытие тестами кода. Я не ратую за 100% покрытие тестами, но они вам пригодятся в последующем поиске проблем и узких мест.
    Еще смотрите в сторону теории графов и практическому применению к окружающей действительности.


  1. Tyiler
    25.02.2019 19:54
    +1

    del


  1. TiesP
    25.02.2019 20:20
    +1

    Путь впечатляет. Но я бы не стал ставить крест на ИИ)… можно просто изучать другие его области применения, их сейчас полно. А в чем суть разрабатываемой программы на последнем месте работы, если не секрет?


    1. LucBertrand Автор
      25.02.2019 20:26
      +1

      Программ несколько. Задача — создать корпус китайского языка. Если более просто, то речь идет о базе данных, состоящей из нескольких миллионов устойчивых выражений. Область применения — чат-боты или автоматизированные колл-центры.


      1. sshmakov
        26.02.2019 08:56

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


        1. LucBertrand Автор
          26.02.2019 09:29

          На ГитХабе есть британский корпус, можете посмотреть его содержимое, поймете что к чему. Корпус — это набор кратких диалогов на повседневном разговорном языке. Это очень важный момент, поскольку у собеседника бота не должно возникать сомнений в том, что с ним ведет беседу человек, а не кусок кода, напичканный фразами из литертурного языка. Теоретически можно обойтись и без корпуса, но тогда нужно будет создавать программу, которая будет проводить лексический и синтактический анализ запроса пользователя. Во-первых, это сложно, во-вторых, подобный анализ все равно потребует как минимум базовый словарь языка. У нас же все нацелено на сбор коротких диалогов, сортировку однотипных по смыслу выражений и комбинаций ответов. Всё. Чат-боту нужен будет только парсер, который будет работать с запросом клиента и отвечать в соответствии с коллекцией ответов, доступных в базе данных.


          1. sshmakov
            26.02.2019 09:59

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

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

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

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


            1. LucBertrand Автор
              26.02.2019 17:06
              +1

              Проживающие в сельской местности китайцы очень не любят девочек. Во-первых, они бесполезны в трудозатратном хозяйстве, во-вторых, они только поглощают ресурсы, не давая ничего взамен. После бракосочетания они покинут дом навсегда, оставив стареющих родителей в полном одиночестве. Сын же сможет заботиться о стариках до их самой смерти. Поэтому девочек, особенно в условиях «политики одного ребенка», топят сразу же после рождения. Люди побогаче могут сделать аборт. Особо сердобольные могут отдать нежеланную девочку бабушке в деревню, где она будет использоваться в качестве раба до самой смерти.
              В общем, в Китае наблюдается примерно 10-процентный перевес мужского населения в диапазоне от 20 до 60 лет. Это здоровые в физическом плане мужчины с нормальными естественными потрбностями. Они не особенно умны, но вполне работоспособны и готовы платить деньги за невест из Вьетнама и Бирмы. Невесты не говорят по китайски. Не ососбенно умные сельчане жаждут общения. Вот и весь бизнес.


              1. sshmakov
                26.02.2019 17:09

                Понял, спасибо


              1. tyomitch
                26.02.2019 18:05

                Люди побогаче могут сделать аборт.

                Стоит упомянуть, что определение пола эмбриона в Китае незаконно (именно для того, чтобы предотвратить аборты девочек), так что этим «людям побогаче» придётся как минимум съездить за рубеж.


                1. LucBertrand Автор
                  27.02.2019 04:16

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

                  Ну, а если честно, то девочек чаще всего просто топят.


          1. taujavarob
            26.02.2019 21:06

            LucBertrand

            На ГитХабе есть британский корпус, можете посмотреть его содержимое, поймете что к чему. Корпус — это набор кратких диалогов на повседневном разговорном языке. Это очень важный момент, поскольку у собеседника бота не должно возникать сомнений в том, что с ним ведет беседу человек, а не кусок кода, напичканный фразами из литертурного языка…

            Хм. Что-то мне это напомнило:
            Аналогично и тут, — человек в Китайской комнате, создаёт (программирует) сам ИИ или пользуется созданным другими ИИ (тут это неважно вовсе), и этот ИИ «натравливает» (обучает этот ИИ) на тексты (массивы текстов) китайского чата. — А затем этот ИИ и будет подсказывать человеку в Китайской комнате что и когда писать в китайский чат.

            Но феномена «понимания» и тут НЕ возникает. (С)


            1. LucBertrand Автор
              27.02.2019 04:12

              Ни о каком «понимании» речи и нет. Поэтому я критично настроен по отношению к идее современного ИИ. Я вообще сомневаюсь в том, что мы спосбны создать «думающий» ИИ. Если люди еще не разобрались со своим собственным мышлением, так о каком ИИ вообще может идти речь?


  1. Alexx777
    25.02.2019 20:27
    +3

    Удачи, коллега.
    Практически моя история успеха, если бы она состоялась )))
    Сам полу-лингвист, полу-литературовед по образованию с тремя языками (два уже забыты за ненадобностью). В институте не остался по личным причинам, ушел работать по профессии, учителем в школу. Ну надо же было где-то опыт работы получать, без него никуда не брали, а уезжать в другой город или страну — не вариант тогда и не вариант до сих пор, опять же, дела семейные. Уже 15 лет получаю. Самому уже под сорок, лет пять тому перегорать начал, захотел в программирование уйти, всегда нравилось с компьютерами возиться. Фотошоп, вот, самостоятельно освоил до уровня «продвинутый пользователь» только для того, чтобы понять, что сидеть квадратики клепать для интерфейсов скучно, а на что-то иное — увы, таланту нема. Поучил PHP — не понравилось в конечном итоге, бэкэнд, как оказалось, абсолютно не мое, хотя сайты знакомым клепал на движках разных (HTML со школы знал неплохо) и знания все равно пригодились. Начал учить JavaScript — да, то, что нужно. Кнопочки, менюшечки — да, фронтэнд, это то, что мне было и надо. Но… в какой-то момент, как и вы, уперся в стену алгоритмов и математики. Понял, где и чего не хватает и… сломался. Так и не смог себя заставить повторить школьный курс математики, с ней и раньше не особенно-то и хорошо было. Так что, по хорошему завидую и жму руку. Молодец, сила воли плюс характер. Просто великолепно.
    А мне изучение программирования помогло справиться с выгоранием. И я понял, что не смотря ни на что, я очень люблю свою работу и ни на что ее менять не буду. А буду сам себе маленькие простенькие программки писать, чтобы детей было легче учить.
    Так что, желаю не спотыкаться о препятствия и идти к цели дальше. Кидаю челлендж: от джуна к миддлу за три года, от миддла к сениору — еще за три. И подробности в статьях на Хабре. Слабо?


    1. LucBertrand Автор
      25.02.2019 20:29
      +1

      Спасибо за пост. Ну, посмотрим. Кто знает, может подвернется еще более интересная работа из совершенно новой области?


  1. ikle
    25.02.2019 20:29
    +4

    Кстати, С является подмножеством С++, поэтому можно убить двух зайцев одним выстрелом.

    Глубокое заблуждение — это два несовместимых языка со своими особенностями, хоть и общей историей и взаимными заимствованиями.


    P.S. Да, можно написать код, который будет компилироваться и работать и как C, и как C++, но это будет плохой код: как минимум, он будет использовать неканонические конструкции.
    P.P.S. Для изучения Си — только Керниган и Ритчи в последней редакции, плюс изучение нововведений С99 и С11.


    1. domix32
      26.02.2019 15:14

      В смысле несовместимых? Наоборот, Си++ сделан так чтобы иметь обратную совместимость c Си. В каком именно месте они несовместимы?


      1. 0xd34df00d
        26.02.2019 16:31
        +2

        В C++ нет и никогда не было VLA, sizeof('a') может быть разным, некоторые из неявных преобразований запрещены. Ну это так, навскидку.


        1. F0iL
          26.02.2019 17:07

          А уж современные стандарты, а также своды правил типа Core Guidelines вообще очень не рекомендуют писать на C++ в стиле C, и многие абсолютно нормальные для C конструкции в C++ будут считаться потенциально опасными.


  1. ikle
    25.02.2019 20:42

    Почему нельзя было придумать что-нибудь более внятное наподобие ESI/EDI и квадратных скобок?

    Так оно и есть же! *(2 + p) и p[2] — одно и то же. Более того, 2[p] — ровно то же самое. Только операции производятся в единицах размера объекта: нет полутора землекопов. И да, для многих архитектур на ассемблере тоже можно указать размер объекта при индексации.


    1. dimkss
      25.02.2019 21:04
      +1

      Может автор имел ввиду вот такие конструкции?
      int (*(*vtable)[])(); или вот такие char *(*(**foo[][8])())[];


      1. ikle
        25.02.2019 21:38

        То, что язык позволяет выстрелить себе в ногу, не значит, что в неё нужно стрелять. Да, тип в Си нужно читать тип справа налево, что несколько непривычно и неудобно. Но главное: не нужно так делать: нужно разделять абстракции. Именно поэтому есть typedef: и всё резко начинает быть простым и понятным.


        P.S. Да, можно возразить, что описание типа в алголоподобном (паскале-/модула-/оберон- — и т.п.) виде слева направо удобнее читается и без разделения на абстракции. Но, скорее всего, вы очень быстро устанете от такого чтения и точно так же начнёте путаться. Почему оно так в Си получилось: по историческим причинам из-за совместимости с B и ранними диалектами K&R C.


      1. LucBertrand Автор
        26.02.2019 03:52
        +1

        Да-да, именно вот это и имел в виду! Я в свое время начак штудировать «Алгоритмы С++» Адама Дроздека, вот он там как раз и предлагал объяснить значение подобных записей.


      1. opetrenko
        27.02.2019 06:10

        А в ассемблере эквивалентное более читаемо ?


        1. LucBertrand Автор
          28.02.2019 06:38

          Возможно, что это просто вопрос привычки и опыта, но, тем не менее, я всё-таки хотел бы привести один очень маленький пример:

          1) int z = 6; int *p = &z;
          2) int z[] = {1,2,3}; int *p = z. (Знак амперсанда перед z вызовет ошибку компиляции)

          Вот, маленький амперсанд где-то в глубине кода обязательно обвалит всю программу и потом вся команда полгода будет сидеть с дебаггером и рассматривать строчку за строчкой.
          А в ассемблере всё просто и логично. Адрес величины — он и в Африке адрес. Поэтому запись

          mov esi, [z]

          одинаково валидна для матрицы и для одинокой дискретной величины.


          1. Akon32
            28.02.2019 12:05

            Поэтому запись
            mov esi, [z]
            одинаково валидна для матрицы и для одинокой дискретной величины.

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


            У нас тут ООП, типизация и всё такое. На язык С обычно даже плюются за то, что он недостаточно строгий. А в ассемблере будут долго искать все эти [z] по всему коду, когда потребуется что-то изменить в расположении полей структуры, или сменить float64 на uint64.


  1. ikle
    25.02.2019 20:57
    +2

    По-моему, одним из лучших в мире курсов, является старый курс от MIT: «Structure and Interpretation of Computer Programs» — при чём именно в изначальном его виде, с примерами и заданиями на Scheme.


    Только не надо смотреть на Lisp/Scheme и убегать — это не учебник по программированию на каком-либо языке, это учебник по дисциплине «программирование». (К тому же, у вас явно не хватает в копилке функционального подхода.)


    P.S. Лет восемь — десять назад MIT поддалась тренду и перевела сей курс на Python. Не ищите его, читайте оригинальный.
    P.P.S. Нет, я совсем не любитель lisp-подобных языков: даже, скорее, где-то противник. Но здесь это именно то, что нужно.


    1. Alter2
      25.02.2019 22:40
      +2

      Раз пошла такая пьянка про самообучение программированию, то вот эпичная, хотя и порядком устаревшая, копипаста:

      Итак, салаги, вы пришли к старым морским волкам в /pr/ и хотите стать программистами. Надеюсь, вы знаете, что хотите, так как это нелёгкий путь. Позвольте разъяснить вам несколько моментов: а) Большинство людей, которые делают сайты – не программисты. Если вы хотите делать сайты, но не хотите быть программистом – берите в зубы учебник «PHP5 в подлиннике» и начинайте делать свою первую гостевуху. Вопросы решайте в гугле, /s/ и форумах. Здесь другая тематика. Эту пасту дальше читать не надо, мы будем долго разговаривать, а вам нельзя терять время. б) За 21 день освоить программирование не получится. Никак. Совсем. Если срочно нужны деньги, то присоединяйся к товарищам, которые встали и ушли после пункта а. Нормальный объём академических часов в высшем образовании – 8000 штук. Это три года хорошей учёбы. Для того чтобы освоить материал хорошо надо ещё больше. Если параллельно бухать в общаге, то можно и в пять лет не уложиться. в) Я не Попов, магических способов изучения программирования за два DVD-диска не знаю, и учить им не буду. Я худший наставник, чем Кормен или Ахо, и буду только указывать вам направления деятельности. Готовься искать информацию сами. В каждой книге читайте, по крайней мере, оглавление. Задавайте вопросы. г) Программирование не есть изучение языков программирования. Хотя мы начнём его изучение с нескольких языков, они не являются самоцелью курса. д) Если вам не нравится паста – пишите конструктивную критику и предлагайте лучшие решения. От пустословия паста лучше стать не сможет.

      И так, надеюсь тут остались только те, кто хотят учиться. Если вам надо учиться, но вы не хотите, значит надо не вам. Наслаждайтесь. Вы станете настоящими программистами. Я надеюсь, что вы знаете математику и информатику на уровне 9 класса. Если не знаете, то перечитайте учебники. Курс от /pr/ состоит из модулей, каждый модуль состоит из двух частей: а) Матчасть. В матчасти перечислены моменты, которые надо изучить и книги, которые надо читать при изучении модуля. Все книги есть в Интернете. Если позволяют деньги, можно заказывать печатные варианты. Лучше читать на английском, но если не получается – используйте хороший русский перевод. Читайте так, как вам нравится. Если ничего не понимаете – читайте вперёд и перечитывайте после. Можно начать другой модуль. Можно заняться практикой. Можно почитать другую книгу похожей тематики. б) Практика. На практике надо писать программы. Ну, или, по крайней мере, составлять алгоритмы. Я буду предлагать небольшие проекты, которые охватывают материал из модуля. Но писать надо то, что нравится.

      Модуль первый, введение. Задача: получить мотивацию и базовые знания, которые потребуются для освоения дальнейшего материала. Матчасть: информатика, программирование на языках высокого уровня, базовые понятия программирования: итерации, рекурсия, процедуры, функции, абстракции, классы, объекты, методы, переменные, присваивание, замещение, цикл, ветвление. Вначале советую читать SICP. Не весь. Вычисления на регистровых машинах можно отложить на потом. Нужно понять и прочувствовать принципы работы схемы (язык программирования, который используется в этой книге): это простой и одновременно мощный язык. Поначалу будет сложно, так как схема не похожа на бейсик, паскаль или что вы там изучали в школе. Но если вам удастся ухватиться по крайней мере за половину того, что написано в SICPе дальше будет легко и приятно. Писать на схеме сложные приложения невозможно. Это чисто учебный язык и вы никогда не будете его использовать на практике. Поэтому далее надо выучить кое-что посерьёзнее. Обычно первокурсники в России изучают язык си. Это не очень плохая идея в той части, что большинство языков имеют си-подобный синтаксис. В части байтосношения и плохого ООП на крестах (так я буду называть язык C++) это плохая идея. Поэтому откройте толстенный учебник Дейтелов и хорошенько изучите его ровно до конца шестой главы. Это где-то 1/3 часть учебника. Дальше можете не читать, так как рискуете навсегда испортить себе вкус. Но можете и прочитать. На си можно писать сложные программы, но так тоже никто не делает. Поэтому большинство программ из курса я рекомендую писать на Java и Python.

      Отвечаю на недовольный гул в аудитории: Java потому, что java легче. Изучая что-то другое на этом этапе, вы просто запутаетесь в особенностях языка. Особенно это касается шарпа (хотя на нём можно писать, как на джаве, только вот ведь не захочется), крестов (там сложно не запутаться) и хачкеля. Python потому, что некоторые задачи легче решать на скриптовом языке. Кроме того, в питоне есть некое подобие функциональщины, и если рано припечёт, то можно будет посмотреть и её. Хорошо ориентируясь в этих языках (на это не нужно слишком много времени – это не кресты, которые нужно учить годами) можно потом достаточно быстро изучить другие языки. А можно и не изучать, так как оба этих языка (в сущности, плохих) широко применяются до сих пор. Не заворачивайтесь на IDE, компиляторах и прочем инструментарии: вы всё равно перепробуете все доступные. Не дожидайтесь, пока вас утомит первая рекомендованная среда, а сразу поставьте все распространённые и выберите понравившуюся.

      Книги: Философия Java Эккеля, читать по мере необходимости. Не занимайтесь особым оверинжинирингом. По крайней мере многопоточность следует отложить до лучших времён. Не забивайте себе голову паттернами. Книга номер два — в глубь языка Python. Кстати, я знаю, как пишется «вглубь», просто использую русский перевод с официального сайта. Опять же – изучайте разделы по мере необходимости. Сомневаюсь, что тёлки будут ахать при одном упоминании каких-то ваших характеристик, но изучить основы этого языка можно очень быстро. Кроме того, попробуйте почитать «Конкретную математику». Пока не станет скучно. Я рассчитываю, что скучно станет весьма быстро, хотя книга (как и TACP Кнута) написана с характерным юморком. Асимптотику лучше отложить до алгоритмов. Если чувствуете, что идёт совсем плохо (не Кнут с Паташником, а вообще), то читайте школьные учебники. Лучше старые, советские. Можно почитать книги для совсем маленьких детей «А я был в компьютерном городе», «Занимательная информатика» и.т.п. – это просто весело. Вам должно быть интересно читать. Если на этом этапе вам скучно, то дальше будет вообще кромешный непролазный песец. Ещё не поздно пойти писать гостевуху. Да, это была самая сложная часть. Если вынести из неё ещё и знание английского, то всё остальное покажется лёгкой прогулкой.

      Практика: из всех учебников, которые я перечислил, задачи есть только в SICP'е и Дейтелах (ну и в конкретной математике, конечно). Их нужно решать. Освойте все простые конструкции, напишите несколько несложных игр, для одной из них напишите ИИ. Порешайте задачи для школьников, которые просят сделать за них лабу в /pr/ — но обязательно пишите на другом языке.
      Теперь можно перейти к дискретной математике. Задача: понимать язык, на котором написаны остальные книги. Нет, это не самый занудный раздел. Теория трансляции будет зануднее. Матчасть: Открываете любой учебник, в котором есть: множества, алгебры, отображения, графы. Хорошо подойдут университетские методички. Можете видеокурсы с интуита посмотреть. Учишь. Плюс нужна элементарная матлогика – кванторы, законы де Моргана, таблицы истинности. Семиотику пока трогать не надо. Практика: Выполняете задания. Доказываете теоремы.

      Традиционно далее изучаются базы данных. Базы данных есть в любом мало-мальски сложном приложении. Даже в компьютерных играх есть. Даже в примитивных гостевухах, которые сейчас пишут оставившие нас несколько абзацев назад «коллеги». Поэтому базы данных надо знать. Сейчас используются исключительно реляционные базы данных. Некоторые люди поговаривают про key-value хранилища (непременно асинхронные и сверхбыстрые), ну так вот, они концептуально тоже реляционные. Но вы с ними обязательно разберитесь отдельно. Матчасть: идёте по учебнику Кристофера Дейта и изучаете темы. Идти до конца не надо: читайте выборочно и смело бросайте около 17 главы. Изучить надо реляционное исчисление, ER-модель, транзакции, SQL. SQL лучше изучать не по Дейту, а по какому-нибудь практическому учебнику – обратите внимание на книжку Моисеева и его сайт с задачами. Практика: проектировать базы данных. Быстро. В уме. Таблицы должны интуитивно получаться сразу в 3NF. Пишите запросы на сайте у Моисеенко. Напишите приложение, которое активно использует базу данных – многим студентам такое барахло нужно на курсачи и дипломы, можно даже найти заказчика за деньги. Посмотрите на ORM (SQLAlchemy, Hibernate и.т.п.), почитайте статейки. Узнайте, какие сейчас используются базы данных, и обязательно прикрути парочку к своим приложениям.

      Архитектура ЭВМ. Задача: знать, как работает компьютер. Дабы не делать ляпов. По крайней мере, глупых ляпов. Матчасть: Читаете Таненбаума, про архитектуру ЭВМ. Лёгкое и интересное чтиво. Знать: что такое вентиль, что из них составляют: там очень подробно описано по разделам. Не путаться в шинах. Знать про адресацию памяти, прерывания. Практика: Спроектировать простейший «железный» компьютер из блоков. На бумажке. Чтобы выполнял программу, записанную в память. Спроектировать всякой ерунды в эмуляторе схем. Дешифратор для семисегментного индикатора, например. Ассемблер лучше особо не трогайте, познакомишься с ним для интересу у Кнута, а писать на нём вам всё равно не придётся. Во всяком случае, я до сих пор я пытался оградить вас от низкоуровневого программирования. Знаний там очень много, но они все совсем не фундаментальные и изучать их надо под конкретную должность. Начните читать Кнута, по крайней мере, разберитесь с его компьютерами (MIX и MMIX) и напишите для них несколько программ на бумажке. Сделайте свой виртуальный компьютер, но не такой старый и сложный, как у Кнута. Сделайте для него ассемблер и напишите пару простых программ.

      Наконец переходим к алгоритмам. Задача: понимать, как оценивается скорость алгоритма, почему существует много алгоритмов, как выбрать нужный. Знать базовые алгоритмы. Знать структуры данных и связанные с ними алгоритмы. Хорошо знать! Их много самых разных. Всякие связные списки из массивов вы должны уметь реализовывать стоя у доски с маркером. Книги: Вирт, Ахо по алгоритмам и структурам данных. Тут вот читать надо всё, очень пригодится дискретка. Опять же, Кормен. Там очень много материала, разбирайтесь в нём постепенно. Можно вернуться к конкретной математике, раз уж вы её бросили. Практика: реализуйте алгоритмы, про которые читаете. Вряд ли в реальном мире вы будете использовать их в чистом виде, однако вы должны знать хорошие решения. Да, эта бодяга надолго. Изучайте параллельно что-нибудь ещё, следующие разделы лёгкие и богатые на практику.

      Сети. Задача – научиться писать сетевые приложения. Матчасть: Таненабум наш друг и товарищ на все времена. Осиливайте модель OSI, читайте спецификации нескольких сетевых протоколов. Например, http и smpt. Особенно http – разберись с хедерами, сжатием и.т.п. Долго и хорошо почитайте в Википедии про современные системы связи. Посмотрите алгоритмы, которые используются в маршрутизации, разберись, чем пакет отличается от кадра. Практика: делаем сокет-сервер, например, для чата. Разберитесь с XML, HTML, JSON. XML особенно. Освойте XPath.

      Операционные системы. Задача состоит не столько в изучении операционных систем, сколько в изучении принципов распределения ресурсов компьютера. Тут же надо разобраться с многозадачностью, которую я вам как-то отсоветовал изучать сразу. Матчасть: опять же Таненбаум. Разберитесь с алгоритмами для планирования процессов, организацией памяти, файловыми системами, ядрами. Есть толстенный учебник Дейтелов. Помните, вы по ним си изучали? Так вот, ещё есть и по ОС учебник. Отдельно изучаете многозадачность: синхронизацию, пайпы, семафоры, мониторы. В жабе всё это дело есть из коробки и писать программы, которые реализуют такую функциональность будет просто и приятно. Если вы бросили Эккеля на этом месте – самое время начать читать опять. Одного Эккеля мало, используйте гугл. Хотя, наверное, к этому времени вы уже сменили язык. Практика: многопоточные приложения. Сделайте свой компьютер многопоточным. Это весьма занимательно.

      Формальные языки и методы трансляции. Да, вот она вершина, с которой видно весь остальной курс. Если вы досюда добрались, то у вас железные яйца. Жму руку. Хотя и написано, что теория трансляции, надо обратить внимание на синтаксически управляемую обработку данных вообще. Матчасть: начинаем разогрев с главы учебника по дискретке про семиотику. Продолжаем Ахо и Сети, Книгой Дракона. Введение по дискретке там есть, но бедное. Нужно осилить грамматики, языки, иерархию Хомского и соответствующие автоматы. Кстати, автоматы в конце SICPа есть. Изучаем работу компиляторов и интерпретаторов. Изучаем оптимизации. Отдельно про регулярные выражения. Что такое регулярное выражения вы поймёте при изучении иерархии Хомского. Но регулярные выражения – это уже прикладная область, и чтобы их составлять нужно быть знакомым с синтаксисом, обозначениями и.т.п. – учебник по дискретной математике вам этого не даст. Прочитайте книгу О'Рейли про регулярки. С совами на обложке. Практика: написать несколько сложных регулярок, компилятор, интерпретатор. Да, чёрт подери, настоящий оптимизирующий компилятор простого языка.

      Стандарты в программировании: всё самое сложное вы уже осилили, осталась сущая малость. Во-первых, стили разработки. Юнит-тесты, UML, рефакторинг, всякие совершенные коды. Уже пора изучать язык, на котором будете работать, и изучать классические труды о его устройстве, стандартных библиотеках и методах. Для прихода к просветлению можно таки выучить модный хачкель. В книжках, которые я рекомендовал есть моря ссылок на другие труды. У вас уже должен быть большой кругозор. Думаю, к этому времени вы уже знаете, что делать.


      1. LucBertrand Автор
        26.02.2019 04:33

        Неплохая копипаста. Я бы всё-таки хотел добавить, что нужно искать учебники с упражнениями и с обязательным вводным курсом в среду разработки. Мне как нубу было бы совершенно неудобно учить даже тот самый Си по КиР, поскольку даже они не объясняют, как надо пользоваться гцц, как работатать с отладчиком. Я не зря упомянул Ирвина. Я уже пересмотрел немало книг по разным языкам, и, за исключением Ирвина, нашел только две полезных с педагогической точки зрения книги. Первая — Python for Unix and Linux. Отличный вводный курс в IPython. Вторая — Hacking: The art of exploitation. Все о GDB. Об ассемблере и о железе. Я соглашусь с тем, что большинству людей знание асма не нужно. Хард тоже знать ни к чему, потому что на любом предприятии всегда есть специализированный отдел, занимающийся апгрейдом и ремонтом системных блоков, настройкой сетки, етц. Но если человек всё-таки хочет расширить кругозор без погружения в дебри ассемблера, то «Code» Петцольда мне кажется более подходящим, чем книга Таненбаума. Есть еще более хардкорная The Art of x86 Assembly.


      1. Akon32
        26.02.2019 18:29
        +1

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


        * проще будет потому, что будут наставники, а в абсолютном выражении всё равно потребуется очень много усилий.


      1. lightman
        27.02.2019 12:12

        Как освоить программирование за 21 день неделю месяц :)


  1. FForth
    25.02.2019 21:42
    +1

    Похоже Вы не читали интересную книгу :)
    Л.Броуди «Cпособ мышления — Форт язык и философия для решения задач» archive.org/details/Broudie2
    Потом прочтите и первую книгу этого автора объясняющую азы языка, и книгу Баранова, Ноздрунова с которой многие начали свой путь в мир Форт (Forth).
    Изданых книг по Форту немного.

    P.S. Программирование должно быть естественным продолжением мыслительных процессов.

    Из лингвистики есть наследие Тузова С.А. cyberleninka.ru/article/v/postroenie-semanticheski-svyazannyh-informatsionnyh-obektov-teksta

    Тузов С.А. «Языки представления данных» archive.org/details/tuzov_v_a_yazyki_predstavleniya_znaniy
    В сети есть и его монография по языкам.


    1. lxsmkv
      26.02.2019 03:07

      За книгу Броуди — спасибо! Таких уже почти не пишут.

      Первое и самое важное: концептуальная модель должна описывать интерфейсы системы.
      Сегодня книги не учат проектировать, думать и решать проблемы, не учат инженерному подходу, а больше учат работать по шаблону.


  1. Gorthauer87
    25.02.2019 22:16

    Лингвистка в сочетании с программированием кажется открывают путь в такую интересную область как разработка самих языков прогоаммирования


    1. FForth
      25.02.2019 22:21

      Каких, для кого и с какой целью?
      concatenative.org/wiki/view/Concatenative%20language?


    1. 0xd34df00d
      26.02.2019 02:20

      Туда открывает путь скорее довольно хардкорный матан.


      1. tyomitch
        26.02.2019 10:31

        Разработка ЯП специалистами по хардкорному матану привела к тому, что программисту приходится думать как машина.
        Возможно, разработка ЯП специалистами-лингвистами приведёт к тому, чтоб машина начала думать как программист.


        1. Fenzales
          26.02.2019 11:58

          Фундаментальная лингвистика, внезапно, тоже завязана на математику.


          1. RussDragon
            27.02.2019 11:26

            А раскройте мысль пошире, пожалуйста. Мне, как профану в лингвистике, очень интересна связь математики и языков.


            1. Fenzales
              27.02.2019 14:21

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

              В общем-то, любая область науки, которая поддаётся формализации, так или иначе нуждается в математике.


        1. 0xd34df00d
          26.02.2019 16:32

          Разработка ЯП специалистами-лингвистами скорее приведёт к перлу.


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


  1. kababok
    25.02.2019 22:26
    +1

    Шикарнейший слог (профдеформация! ;) и замечательная история!

    Огромнейшее спасибо за истинно плавный текст! :)

    И всё-таки… где у него кнопка сколько же падежей в русском языке на самом деле? :)))


    1. vassabi
      25.02.2019 22:30

      сколько же падежей в русском языке

      там же вам было написано в самом начале:
      Итак, я поступил на лингвиста. Почему? Потому что в местном университете преподавали лингвистику и потому что на целевом факультете были бюджетные места. Лингвистика… Очень интересная специальность. Лингвистика – это наука о структуре языка, но, как правило, подавляющее большинство лингвистов с трудом владеет своим родным языком, не говоря об иностранных.


      … а текст — да, интересный, только у меня обратная «профдеформация» — я-то в программировании с школьных лет (Электроника МК-61), поэтому всегда интересно почитать биографии тех, кто «к нам» добирался окольными путями…


      1. kababok
        25.02.2019 22:47
        +1

        Блин, ну ведь это же классическое прагматическое: "Чем больше я узнаЮ, тем меньше я знаю".


        Неужели вы реально думаете, что человек с таким послужным списком и специальностью не разбирается на таком неглубоком уровне в своём родном языке к 40 годам?! :)


  1. kababok
    25.02.2019 22:34

    Мне что в голову пришло…

    Лингвист, русский, французский, ИИ, опыт работы и во Франции, и в Китае, и одновременно — скепсис к самоходным экипажам. А скепсис — очень плодородная почва для прагматики.

    LittleSquirrel — а ведь очень редкая и интереснейшая комбинация. Я ведь что подумал… ;)


    1. LucBertrand Автор
      26.02.2019 04:36

      И дальше? Продолжение мыслей, пожалуйста.


      1. redskif
        26.02.2019 15:16

        Сдается мне, эти судари хотят заманить вас в стартап.


  1. prostofilya
    26.02.2019 03:53

    ИИ – это 99% hype
    — в Китае же распознавалки лиц, голоса, <часть тела> на каждом углу, всё вокруг должно пестреть нейросетями, разве нет? Имхо, профессионал должен знать где и с каким успехом применяются технологии, используемые им самим. Я думаю, что это даже первоначальнее, чем вылизывание книг (нет, базис должен быть, конечно, но надо как-то параллельно развивать и знания и способность мышления в вашей области, а не только вызубривать книги.)
    Хотя, полагаю, это просто очередное выгорание с вашей стороны. Вы по привычке хотите повернуться на 180% градусов и думаете, что это решит все проблемы. А может есть смысл прокачивать себя и дальше как ИИ специалиста и найти другие способы мотивации?


    1. LucBertrand Автор
      26.02.2019 04:59

      Суть вот в чем. Во-первых, современная реализация ИИ критикуется инвесторами. Есть такая известная статья, называется What happened to the future? Там подробно описано, что люди ждали от ИИ и что получили. Во-вторых… Вы наверняка знаете о споре между Норвигом и Хомски. Норвиг защищает интересы того самого ИИ, который распознает лица и занимается переводом текста. Это не ИИ, а всего лишь набор алгоритмов, которые позволяют вычленять паттерн из гигантского потока информации. Если «спросить» у ИИ, почему он выбрал именно это лицо, а не другое, он не сможет ответить. Потому что он не умеет думать. Об этом «думающем» ИИ как раз и говорит Хомски. Кстати, современный всплеск ИИ-технологий как раз и связан с дешевым доступом к big data. И даже у этого ИИ есть свои ограничения. Например, Гугл никогда не будет способен достойно переводить западные языки на русский. Почему? Просто потому, что не существует обучающего набора, состоящего из набора текстов на русском и переводов на английский.
      Я бы с удовольствием продолжал заниматься ИИ, но только в интерпретации Хомского. Но его, к сожалению, не поддерживают крупные корпорации.


      1. FForth
        26.02.2019 05:32

        > Гугл никогда не будет способен достойно переводить западные языки на русский.

        Достойно — это в какой степени и к каким текстам?
        Если читающий, исходя из своего априорного знания может извлечь из технического перевода полезную с его точки информацию (с издержками диссонанса), то это достойно или обязательно до «буквы» применённой носителем языка?

        P.S. И, кто то же и паттерны в Гугле редактирует и добавляет.


      1. prostofilya
        26.02.2019 05:49

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


        1. vectorplus
          26.02.2019 07:28

          Знакомую риторику вижу я :)
          Сильный ИИ невозможен, он никогда не справится…
          … с шашками!
          … с шахматами!
          … с го!
          … с дотой!
          <<вы сейчас здесь>>
          … с управлением автомобилем!
          … с переводом!
          И так далее.
          Насколько я помню, тест Тьюринга заключается в том, что человек в беседе не отличит машину? Так это давно случилось, боты обманывают людей постоянно. Я сам против шумихи вокруг мышиного обучения, но и заслуги прошу не отрицать :)


          1. sshmakov
            26.02.2019 08:55

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


            1. vectorplus
              26.02.2019 10:01

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


            1. Phoenix55rus
              26.02.2019 17:08

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


          1. Grox
            26.02.2019 19:04

            Дота пока не считается, учитывая то кол-во ограничений, которое пока выставляют. Это огрызок игры.


            1. vectorplus
              26.02.2019 20:24

              Мне лень гуглить, но насколько я помню, там была обычная игра.


              1. oldbie
                27.02.2019 07:22

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


            1. striver
              27.02.2019 14:13

              ДОТА — там было много ограничений, а вот недавно в СтарКрафте 2 — было всё очень печально для людей.


      1. Zoolander
        26.02.2019 09:11

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

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


      1. quantgazer
        26.02.2019 17:08

        Есть такая известная статья, называется What happened to the future? Там подробно описано, что люди ждали от ИИ и что получили.
        Есть в мире много чего, что не оправдало ожиданий. От медицины до общественного строя. Открываем научную фантастику 20-го века, что с коммунизмом, что без него, и считаем фейлы современности. Ни Великой теории воспитания Стругацких, ни всеобщего мира, ни космических кораблей бороздящих разные там просторы. Очень неожиданен, к примеру, попадос с медициной — прогресс в медицине приводит к тому, что здоровье населения ниже. Потому что выживают люди с разными патологиями. Живут все дольше, но и болячек у всех больше. Хотя планировалось всеобщее улучшение здоровья. И так со всем, что ни возьми. Кроме, разве что, антиутопий. Так что не драматизируйте этот провал. Вам просто не пришлась по душе эта область. Перейдёте в другую специальность, там тоже будет своя разница между ожиданием основателей и реализацией наследниками. Если она ляжет Вам на душу, Вам всё равно это будет.


  1. Anshi85
    26.02.2019 04:14
    +1

    Итак статья в целом не плохая, но автор лично мне показался обычным приспособленцем, который идёт туда где тепло и при этом не ценит то что было раньше, то работал несколько лет в порту и понял что не хочет быть червем на дне общества, а нечего что если ты специалист своего дела то ты везде будешь достойно зарабатывать и не будешь червем, я вообще не понимаю как можно такое слово использовать по отношению к рабочим людям, у меня отец простой шахтер и нечего вытянул семью в 90-е, друг сантехник а зарабатывает как я в ИТ, а возможно и больше. Потом автор пошел в лингвистику пожил за харчи чужого государства в чужой стране, но вдруг осенило это не мое, сейчас модно быть программистом, а что будет через пару лет? Автор скажет «ой не хочу быть задротом красноглазиком» и уйдет куда нибудь в другую отрасль? Я не против того чтобы менять сферу деятельности, но не нужно уходя из одной отрасли обсирать ее. У меня есть друг он круглый сирота, но он никогда и ни где этого не упоминает, со мной поделился уже после многих лет дружбы, он сам поступил на физ мат на грант, окончил его на красный диплом, а потом ушел в ИТ, сейчас «клепает сайтики» как вы выразились, только веб не только сайтики, сейчас 80% софта это веб, а он разрабатывает сложные системы типа документооборота или CRM. У вас прослеживается какая то обиженность на мир, все не так все не то, поймите мир он разный в этом то и его прелесть, каждый найдет что то своё.


    1. LucBertrand Автор
      26.02.2019 05:13
      +1

      Не приспособленец, а оппортунист. Люди выжили и стали умнее как раз благодаря тому, что умели приспосабливаться к меняющимся условиям. Я не имею ничего против рабочего люда. Червем человек начинает чувствовать себя после того, как его пару раз приведут в опорный пункт для проверки документов, разденут догола и попытаются «найти» пакет с травой или «белым». Реалии мира таковы, что человек на дне общества всегда будет уязвим перед произволом любого мелкого чиновника. Поэтому надо стремиться вверх. Не за заработком, а за непотопляемостью.
      О, «харчи чужого государства». Я же не социальном пособии сидел и не искал себе жену с французским паспортом. Работал по контракту, получал зарплату не за красивые глаза, а в обмен за проделанную работу.


      1. oldbie
        27.02.2019 16:02

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

        под оппортунизмом понимают «следование своим интересам, в том числе обманным путём»
        wiki

        И может быть тут как раз и проблема — с определением что же именно является тем самым своим интересом. Вот Вы пишите как выбрали новую профессию:
        Вот он, тренд. Мир стремительно движется в сторону тотальной роботизации. Carrefour заменяет кассиров на автоматические сканеры. Cathay Bank реформирует отдел по работе с клиентами в том же духе. Парижские работники метро бастуют из-за открытия новой автоматизированной ветки. Я должен начать учить программирование или останусь навсегда за бортом.

        С одной стороны я Вас понимаю, сам у себя легко могу найти подобные мысли. Но с другой — нельзя же искать своё опираясь только на глобальные тренды. Как будто в Ваших критериях выбора не подразумевается поиск интересного для себя занятия, или просто не стали делится этими соображениями.
        Моё мнение — своё это те вещи, которые способны возбуждать и увлекать, заставят забыть про сон и для этого не потребуется сильной внешней мотивации, например требования родителей, зарплаты и т.п. Часто по-белому завидую способности детей(и некоторых взрослых) загораться. Рекомендую всем подглядеть, они делают это отрыто и искренне =). И это может оказаться что угодно, совсем за рамками модных направлений.
        Поэтому я отчасти согласен с тем что писали тут ниже:
        У настоящих рыбаков есть азарт к рыбе и понимание к выпивке (последнее опция). А у вас нет. Вы разбираетесь в лунках, удочках, мормышка а фигли толку.

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


        P.S.
        Не за заработком, а за непотопляемостью.

        Для непотопляемости стоит обратиться наоборот к гуманитарной сфере, а не технической. Бизнес, юриспруденция, социальные науки.


    1. anprs
      26.02.2019 08:35

      Что-то не увидел никакого обсерания автором его предыдущего опыта


    1. Windalex
      26.02.2019 17:09

      Именно нежелание сидеть на месте ровно сделало человечество тем, чем оно является сейчас. Это вовсе не обиженность на мир, это стремление двигаться вперёд. Не увидел приспособленчества у автора, увидел трудолюбие, упорство, готовность ошибаться и исправлять ошибки.


  1. mclander
    26.02.2019 06:33

    Знаете, вы с академическим подходом ассоциируется скажем с исследователем зимней рыбной ловли. Он честно сидит у лунки и употребляет по 50 грамм, через статистически обоснованные промежутки времени.


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


    У настоящих рыбаков есть азарт к рыбе и понимание к выпивке (последнее опция). А у вас нет. Вы разбираетесь в лунках, удочках, мормышка а фигли толку.


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


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


    1. LucBertrand Автор
      26.02.2019 09:39

      Об этом и идет речь. Вам повезло с тем, что выбор профессии совпал с естественной предрасположенностью к программированию. Я бы мог в 18 лет целенаправленно поступить в вуз на CS, к 30 стать senior'ом, и потом внезапно осознать, что всю жизнь занимался нелюбимым делом. С одной стороны зарплата в 10 000 уе и солидный пост, с другой стороны осознание того, что лямку придется тянуть еще как минимум тридцать лет до выхода на пенсию. Поэтому я пока что предпочитаю амплуа мечущегося джуна.


    1. 0xd34df00d
      26.02.2019 16:40
      -1

      А я дочитывал учебники (либо бросал их очень рано, когда понимал, что не моё). И упражнения все делал. Но и писал своё, конечно же, да, куда без этого.


      Поэтому мне теперь за мою синьористость не стыдно. И даже синдрома самозванца особо нет.


      1. Akon32
        26.02.2019 18:32

        И даже синдрома самозванца особо нет.

        Не удивительно, после такого-то упарывания С++.


  1. perlestius
    26.02.2019 08:11

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

    Почти как у Эйнштейна
    «Иногда я себя спрашиваю: как же получилось, что именно я создал теорию относительности? По-моему, причина кроется в следующем. Нормальный взрослый человек едва ли станет размышлять о проблемах пространства — времени. Он полагает, что разобрался в этом еще в детстве. Я же, напротив, развивался интеллектуально так медленно, что, только став взрослым, начал раздумывать о пространстве и времени. Понятно, что я вникал в эти проблемы глубже, чем люди, нормально развивавшиеся в детстве»


  1. Zoolander
    26.02.2019 09:09

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

    Мне кажется, вы ищите в программировании какое-то чудо, но берете для его определения критерии из мира не-программистов (хакеры, «настоящий ИИ» и тд).

    В программировании много чудес, и мне кажется, вы пропускаете одно из важнейших. Это чудо создания сложных систем из крайне простого набора простых правил. Почитайте про языки, «полные по Тьюрингу». Почитайте про игру «Жизнь». Она называется игрой, но на самом деле ничего игрового там нет. Это удивительный пример, как из трех простых правил, в которые можно играть даже на листе бумаги, создается огромная, сложная и малопредсказуемая (невооруженным взглядом и умом!) система, которая развивается, и на базе которой можно создавать невероятные паттерны.

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


    1. LucBertrand Автор
      28.02.2019 06:55

      Сериал получился бы скучноватым. 20 лет за книгами. Я, кстати, периодически встречаюсь с людьми из заводской и управленческой среды, так они на меня как на прокаженного смотрят. Вот Вам описание карьерного пути типичного инженера на заводе по изготовлению полупроводников где-нибудь в Сычуане: 4 года в университете до бакалавра (22 года), 4-6 лет в должности process engineer на конвейере (в реальности весьма рабский труд, но молодым можно. К тому же зарплата весьма мотивирует). В 28 лет, если у человека не отвалилась печень, можно стать руководителем цеха или податься в продакт-менеджеры. Вообще-то Китай нацелен на завоевание мирового рынка во всех направлениях, поэтому можно избежать судьбы заводского инженера, просто получить бакалавра по языковой специальности и начать работу в селлс-департменте. К 28-30 уже можно стать тем же самым продакт-менеджером. К 40 при должном старании можно накопить на скромный «Майбах» и пару вилл в Австралии. Я утрирую, конечно, но суть Вы наверняка понимаете.


  1. stanced
    26.02.2019 09:40

    Судя по вашему пути, по картам таро вы Шут-Дурак. Это не оскорбление, а всего лишь тип личности, который по своей сути пустой, но может заполнить себя любым другим типом личности. И если не нашли свое призвание, попробуйте совершенно другу сферу. Если отойти от психологии и эзотерики то у меня вопрос: чем вы занимаетесь сейчас?

    PS. Статья написана в минорной ноте полной разочарования в бытие, но путь впечатляет.


    1. LucBertrand Автор
      26.02.2019 09:43

      Сейчас занимаюсь разбором недокументированного кода, написанного n-цать лет назад. Я пока еще не думаю покидать сферу IT, хочу узнать, где мой предел роста.


      1. vectorplus
        26.02.2019 10:08
        +1

        Разбирая легаси код, можно не только програмизм разлюбить, но и всё человечество возненавидеть.
        Держитесь! :)


    1. agarus
      26.02.2019 20:41

      Это именно что оскорбление. Хитрое, завуалированое оскорбление с попыткой снять с себя ответственность за его употребление. Но кто бы не придумал таро, оскорбление в дискуссию вставили именно вы, учитесь отвечать за свои слова.


  1. JekaMas
    26.02.2019 11:24

    Любопытно, куда бы прописали вам товарищи докеры за "Ну, и перспектива бытия червём на дне общества меня тоже особенно не прельщала."...


    1. LucBertrand Автор
      26.02.2019 12:50

      Докеры все давно спились или сели на систему. Речь идет о 90-х.


  1. ohotNik_alex
    26.02.2019 11:30
    -1

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


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


    1. LucBertrand Автор
      26.02.2019 12:49
      +2

      «Не читал, но осуждаю».

      Деньги нужны не для вуза, а для нормальной подготовки к вступительным экзаменам. Если человек уже в школе должен выбирать между подработкой и выполнением домашних заданий, то о каких МГИМО или Бауманке может идти речь?


      1. ohotNik_alex
        26.02.2019 13:17
        -1

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


      1. MacIn
        27.02.2019 00:34

        Если человек уже в школе должен выбирать между подработкой и выполнением домашних заданий, то о каких МГИМО или Бауманке может идти речь?

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


    1. Miron
      26.02.2019 13:40

      Уважаемый! Надо писать правильно: не «дальше не стал читать» а «я не сумел закончить начатое» или «с юных лет имел привычку бросать дело на середине»
      :D


      1. ohotNik_alex
        26.02.2019 13:47

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


        1. oracle_and_delphi
          26.02.2019 15:03

          Автор через несколько лет, передумав, всё же поступил в ВУЗ.
          Только не понятна связь с его позицией «ВУЗы = вопрос везения, связей и денег».


          1. ohotNik_alex
            26.02.2019 15:10
            -1

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


        1. Miron
          26.02.2019 16:54

          Ну есть образование, а есть самообразование. Первое часто происходит не по инициативе обучаемого. Второе же всегда по инициативе того кто решил образовываться. Я, к примеру, аспирантуру бросил — самообразование оказалось ценнее, по той простой причине что ты сам решаешь чему учиться и когда учиться. Автор же не призывает бросать учёбу. Но и вовремя остановиться и понять что тебе нужно/не нужно это тоже уроки по выбору твоё/не твоё. А доделывать только потому что начал — это тренировка качеств характера — упорства в том числе. В них нету знаний.


          1. ohotNik_alex
            26.02.2019 19:57

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

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

            В них нету знаний.


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

            Автор же не призывает бросать учёбу.

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

            любая подобная статья, которая легко нагуглится, должна помогать молодежи, а не сбивать их.


            1. LucBertrand Автор
              27.02.2019 05:29

              Я не пытаюсь оскорбить людей, честно прошедших вступительные экзамены и поступивших в вуз благодаря своему таланту и умениям. Всем известно жизнеописание Ломоносова, который пешком до столицы дошел и стал отцом российской науки. Но нужно согласиться с тем фактом, что Ломоносов и ему подобные люди — это, скорее, исключение из правил. Миром правит случайность. Вы родились в относительно благополучной семье (а могли бы и где нибудь в Нигерии быть девятнадцатым ребенком), смогли избежать деградации в деградирующей стране (в 90-х провинция либо тихо спивалась, либо шла в бандитизм с предсказуемыми последствиями) и даже если вам нужно было подрабатывать, то речь наверняка шла о деньгах на новые кроссовки, а не на кусок хлеба. Кстати, в Замкадье денег от подработки только и хватит на кусок хлеба. Это все — следствие случайностей. Вы в этом не виноваты, но и косо смотреть на бомжей на помойке тоже не стоит. Их все еще можно отмыть и направить в нужное русло. И я не сомневаюсь в том, что один из них, став CEO, не преминет сообщить всем присутствующим о роли случайности, связей и денег в жизни.

              Если мои доводы кажутся Вам неубедительными, то можно обратиться к независимым арбитрам. arxiv.org/abs/1802.07068. Эта статья написана серьёзными людьми, доказывающими математически, что случайность играет в нашей жизни предопределяющую роль. Научные открытия, корпоративные успехи, прибыль от продаж — это все следствие случайностей. Безусловно, упорный труд и мозг необходимы для успеха. Но без удачи, к сожалению, в этой жизни никак.


              1. ohotNik_alex
                27.02.2019 06:22

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


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

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

                очень прошу оставить детдомовские замашки и объявлять весь мир своим врагом. здесь приличное общество. в моей благополучной семье мать пахала на 3 работах чтобы прокормить и меня и себя. подарок на новый год в виде пачки фломастеров и все другие прелести такой жизни.
                нужно согласиться с тем фактом, что Ломоносов и ему подобные люди — это, скорее, исключение из правил

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

                без удачи, к сожалению, в этой жизни никак

                за всю жизнь я видел только 1 случай, когда подготовившийся заранее человек не сдал. с температурой под 40 вырубился на экзамене. остальные… «я готовился, но успел только 10 билетов из 40». что, простите?! это стало называться подготовкой?


      1. anprs
        26.02.2019 15:05
        -1

        i never finish anyth


  1. Mimus_spb
    26.02.2019 12:29
    -1

    Я увидел у вас запрос на ЦЕЛЬ СО СМЫСЛОМ, и это увы, не разработка.


  1. dead_undead
    26.02.2019 12:40

    Спасибо, очень приятный и интересный текст!
    Наверное меня ждёт что-то подобное, потому что вот сегодня мне одно очень интересно, а завтра оно уже скучно и интересно что-то другое.


  1. Mariam_Saab
    26.02.2019 12:44

    История чем-то похожа на мою. Я в прошлом училась в физико-математическом классе, нравились английский и информатика, но потом я пошла учиться на ветеринара, закончила отлично учёбу, но ни дня по этой специальности не работала. Потом осознала, что необходима какая-то полезная профессия, пошла учиться в иняз на учителя английского, выучила между делом испанский язык, закончила институт, в школе немного поработала, но не захотела нервы тратить свои за копеечную зарплату. Работала предпринимателем, время от времени клепала сайтики, и вот наконец пару лет назад пришло понимание того, что я хочу заниматься программированием. Начала с С++, книги, курсы в интернете, не очень язык понравился, принялась за джаву, овладела базовыми знаниями по ООП и джаве, а затем захотелось мне написать свою программу на андроид (уроки английского, написанные мной для детей реализовать в приложении, получилось). Вот так я пришла в Андроид, чем и хочу заниматься ближайшие 10 лет. Как итог — есть уже 4 своих приложения в гугл плей, следующий шаг — поиск работы джуниором (андроид разработка), надеюсь всё получится.


  1. Green2
    26.02.2019 12:44

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


    1. o-ranger
      27.02.2019 04:24

      вот не хватало тут саентологов продвигать


  1. Serg_iv
    26.02.2019 14:13

    В помощь рассуждениям о мотивации:

    1. Сила логического мышления, или Пределы рационализации

    Во-первых, хорошо бы оценить применимость формальной логики к психологическим задачам. Философы спорят на этот счет без малого 2500 лет, со времен платоновского «учения о душе» (и, похоже, по сих пор). Но сейчас, кроме гуманитарных, этим вопросом занимается точная наука – нейробиология.

    Мозг человека имеет 8,6*10^10 нейронов с множественными связями между собой, образующих обширную клеточную сеть, которая каким-то образом делает нас способными мыслить. Это самая сложная в мире структурная система, и по-прежнему не слишком изученная. Есть большой совместный проект IBM и Швейцарского федерального технического института Лозанны Blue Brain Project (основан в 2005 году, моделирование неокортекса по биологическим данным). Вот его текущие достижения и планы:

    • 2006 год – создана первая модель одной колонки неокортекса мозга крысы (~10^4 нейронов);
    • 2015 год – создана полнофункциональная имитационная модель одной колонки соматосенсорной коры крысы (3,1*10^4 нейронов). Для эмуляции работы компьютерного аналога такого небольшого участка мозга крысы (объем 0,29 мм^3) понадобилась вся вычислительная мощность суперкомпьютера Blue Gene — 209 терафлопс;
    • план на 2020 год – осуществить полное моделирование одного отдела неокортекса крысы, с помощью нового суперкомпьютера Blue Brain 5, производительность которого составляет 1,06 петафлопс.
    Это передовой проект, но между его результатами и человеческим мозгом пока что лежит пропасть.

    Увы, нейробиологам еще далеко до «уравнений Максвелла» для психики. Сейчас есть колоссальный объем данных и знаний о структуре тканей мозга и биологии процессов в них — но этого слишком мало для системного анализа психики. Лабораторные исследования психических процессов выявляют статистическую неслучайность той или иной картины возбуждения нейросистемы. На выходе пока кирпичики в фундамент будущего естественно-научного знания о психике, однако среди «строителей» все еще идут жаркие споры даже об «эскизе проекта».

    Тем ни менее. Команда Blue Brain обнаружила, что различные стимулы вызывают в ответ разные паттерны активности, но все они демонстрируют одинаковую общую эволюцию. С помощью алгебраической топологии в этих с виду хаотических схемах запуска нейронов нашли высокоорганизованную математическую структуру: по образному выражению одного из авторов, «как будто мозг реагирует на стимул, строя, затем разрушая башню из многомерных блоков, начиная с стержней (1D), затем досок (2D), затем кубов (3D), а затем с более сложными геометриями с 4D, 5D и т.д. [по тексту статьи вплоть до 11D]. Развитие активности мозга напоминает многомерную песочную башню, которая материализуется из песка и затем распадается».

    Известно, что акты проявления сознания ассоциируются со сложными («много D») паттернами активности нейросистемы. Судя по тому, что обнаружили нейробиологи и математики из Blue Brain, акту сознания предшествует существенная предварительная «вычислительная» работа нейросистемы, которая остается за кадром. И именно от нее зависит, что появится в сознании. Многие, если не большинство, откликов нейросистемы вообще не доходят до того уровня сложности, чтобы стать актами сознания.

    Но и это еще не все. Начальные простые паттерны включают активность так называемой лимбической системы головного мозга, которая устроена совсем не просто. Маленький пример: группа исследователей из Массачусетского технологического института трассировала нейроны базолатерального ядра миндалевидного тела в лимбической системе (этот отдел отвечает за обработку валентности ощущений, то есть классификации их на «хорошо/плохо»). Оказалось, что структурно этот отдел является сложнейшей «кашей»: вблизи от любой подгруппы с одним преобладающим функциональным типом нейрона всегда есть представители других типов. Нейроны могут усиливать или ослаблять активность своих соседей, поэтому даже если полностью разложить все связи между нейронами в этой «каше» по дискретным полочкам, для описания реальной обработки валентности ощущений в мозге этого все-равно будет недостаточно. (Вишенька на торт: оказалось, что нейроны отрицательной валентности значительно сильнее ослабляют активность соседей, чем нейроны положительной валентности. Негативные ощущения имеют биологический приоритет! Не в этом ли причина повсеместного хейтерства?)

    Если акты сознания прямо следуют из «неосознаваемой» предварительной обработки и неотделимы от нее, то задать полноценную формальную семантику для психики не получится. Какая уж тут формальная логика?

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


    1. movl
      26.02.2019 15:34

      Не в этом ли причина повсеместного хейтерства?

      https://monocler.ru/otvrashhenie-sdelalo-nas-lyudmi/


  1. samodum
    26.02.2019 14:15

    Молодец! Нравятся мне такие люди, которые не опускают руки.
    Удачи!


  1. DaneSoul
    26.02.2019 14:16

    Автор, спасибо за мотивирующий текст!

    Ах, я забыл: я же лингвист и все так же бесполезен на рынке труда. Где он, тренд? Что нужно учить, чтобы остаться на плаву?
    Область компьютерной лингвистики очень перспективна: автоматический перевод, системы распознавания и синтеза речи, системы текстового и голосового чата — это все очень актуально как в настоящем, так и в будущем!
    У вас серьезная профессиональная лингвистическая подготовка, добивайте пробелы в программистской\математической подготовке (если такие остались) и будете уникальным специалистом с двойной квалификацией в актуальной теме с очень большими перспективами! Самые прорывные вещи сейчас происходят на стыках наук и человек который спец в нескольких дисциплинах видит шире своих коллег и очень перспективен.


  1. movl
    26.02.2019 15:21

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

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


    Если дело в химии, то и должен быть изначально заложен некий базис способностей, я бы даже сказал, что с генами можно передать талант. Гены это или просто удача, вопрос открытый. Возможно, Вы именно это имели ввиду, когда формулировали свой вопрос. Но я все же раскрою мысль. Мозг и разум они как тело: их можно тренировать. А внешняя среда вынуждает искать подход к этим тренировкам, и я предполагаю, что у каждого этот подход носит уникальный характер. Допустим мы можем каким-то образом померить, как питание и упражнения влияют на наши мышцы, и даже можем осознанно это корректировать с целью улучшения качества тренировок (если Вы увлекались бегом, то должны знать, что нет универсальных рецептов тренировок). С мозгом чуть иначе, мы хоть и можем понаблюдать как меняется химия в зависимости от каких-то мыслительных процессов, но не можем найти как эти процессы в целом скажутся на аналитические способности, или, например, на музыкальный слух. По крайней мере пока.


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


  1. Mariina
    26.02.2019 17:12
    +1

    как приятно читать не царапающий неграмотностью текст)) Спасибо))


  1. ag0100
    26.02.2019 17:12

    Прочитал запоем, как будто выпил «Мускат белый красного камня»


  1. sprmax
    26.02.2019 17:12

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


  1. CrashLogger
    26.02.2019 17:39

    LucBertrand, а к вам можно попасть не из академической среды? Очень интересна тема искусственного интеллекта в связке с китайским языком, который я как раз сейчас изучаю.


    1. LucBertrand Автор
      26.02.2019 19:48
      +1

      Моя нынешняя работа — следствие стечения удачных обстоятельств. Моя лаборатория ищет людей с образованием, не связанным с программированием, в надежде на то, что новички, не «испорченные» типовым мышлением, смогут создать новые алгоритмы и нестандартные решения. По вполне очевидным причинам у новоиспеченных программистов весьма скромная зарплата. В команде только китайцы. Меня взяли на работу только из-за того, что я уже был на месте и руководству лаборатории не нужно было заниматься бумажной волокитой и обменом депешами с посольством. Нужно было просто продлить визу, вот и все дела. В общем, если бы Вы учились в местном вузе, то можно было быпо пробовать. Если же Вы уже являетесь высококлассным специалистом, тем более со знанием китайского, то проще найти работу в Шенчжене или в Чэнду.


      1. Whuthering
        26.02.2019 20:21

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


        1. LucBertrand Автор
          27.02.2019 04:33

          Вот у нас как раз и есть постдоки, все из CS. Собрания раз в неделю, всех просят рассказать о текущем положении дел без демонстрации кода. Шеф следит за рациональной составляющей. Если идея кажется интересной, то постдок может проверить код. Код однозначно кривой, но заказчики покупают не его, а как раз идею. Частникам однозначно не выгодно держать у себя группу обезьян, поскольку их нужно обучать и платить деньги. В академической же среде зарплаты пониже и финансовое бремя лежит на государстве. И — еще раз — официально мы все research assistant, а не software engineer. Официально наша работа не связана с программированием.


      1. Akon32
        28.02.2019 12:34

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

        У меня есть некоторый опыт работы с людьми, кто не связан с программированием, но пытается предлагать решения задач. Эти "новые алгоритмы и нестандартные решения" обычно в тысячи раз намного хуже "стандартных", потому как люди без "стандартного" программистсткого образования не имеют понятия ни о временной сложности, ни о структурах данных, ни о работе процессора, ни о наличии библиотек, ни о принципах создания GUI (и я уверен, что это всё будет полезно и вам).
        Конечно, я не могу советовать расформировать лабораторию и ничего не делать — иногда новичок может предложить что-то стоящее, но на 99% это будут кривые "велосипеды".


  1. agarus
    26.02.2019 18:56
    +1

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

    Ух ты! Что это за основательница такая?.. Поищемс… «Основательницу Theranos обвинили в мошенничестве», «обмане инвесторов», «несуществующие технологии анализа крови», «Всё это длилось десять лет и в итоге оказалось мыльным пузырём. Однако этот пузырь с помощью агрессивного пиара, грамотной юридической помощи и тотальной слежки за сотрудниками умудрился построить вокруг себя такую защиту, что удивительным становится не столько его появление, сколько то, что он всё-таки лопнул.»

    Ну… помоему, барышня склонна фантазировать преувеличивать свои достоинства :)


  1. troll_face
    26.02.2019 19:27

    XAML прост в усвоении, однако идущие вместе с ним bindings и MVVM пока еще не поддаются пониманию.
    Вы уверены, что на этот раз Вы выбрали правильную профессию, и действительно понимаете то, чем Вы пытаетесь заниматься? ;)

    Ведь «это элементарно, Ватсон!». Если объяснять совсем упрощенно, «на пальцах», то binding — это когда Вы указываете имена переменных непосредственно в форме на XAML странице, а шаблон (то-бишь стиль) программирования Model + View + ViewModel — это старый добрый Model + View + Controller, где вместо контроллера, ответственного за запись данных в форму/страницу и чтения данных из нее, существует ViewModel, просто предоставляющий доступ к переменным, используемым на XAML странице в binding.

    Binding вполне можно использовать и без паттерна MVVM (особенно актуально для небольших задач, с малым количеством данных — тупое следование MVVM паттерну, что часто наблюдается у неопытных программистов, приводит к усложнению читабельности кода и «расползаемости» проекта).

    Понятное дело, что объяснение выше примитивно, как я написал, «на пальцах», а текущие реализации в WPF и UWP позволяют делать очень много достаточно сложных вещей, но это уже, так сказать, подробности и experience, набираемые в процессе работы.


  1. puyol_dev2
    26.02.2019 19:49

    Спасибо! Подняли очень важный вопрос — а тем ли я занимаюсь, чем хочу? Много людей идёт на поводу у того, что модно. Даже в программировании модно выбрать не свой язык, а модный и потом страдать. Очень важно в программировании, мне кажется, от начала и до конца осознавать то, что ты делаешь. Поэтому мне нравятся простые языки. И я считаю, что языки, обрастая библиотеками (фреймворками) потом в итоге умирают. Потому что уже даже в рамках одного языка невозможно просто разобраться, что написал человек на другом фреймворке, который ты не знаешь


    1. Whuthering
      26.02.2019 20:18

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


      1. puyol_dev2
        26.02.2019 20:25

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


        1. Whuthering
          26.02.2019 20:27

          Интересно, где увидели у меня про «своё».
          Это естественным образом вытекает из непринятия распространенных фреймворков, т.к.
          Любой действительно сложный проект рано или поздно обрастает каким-то фреймворком (учитывая что фреймворк это по сути дела каркас архитектуры и набор часто используемых «кубиков» для создания системы)


        1. Whuthering
          27.02.2019 10:04

          Я бы даже сказал немного по-другому.
          Фреймворки появляются не потому, что программистам хочется и нравится писать фреймворки. Фреймворки появляются как раз или из-за того что используемый язык программирования слишком простой, или слишком универсальный.
          За примерами ходить далеко не надо. Возьмите C++ и Qt. Во времена, когда появился Qt, в C++ в принципе не существовало огромной кучи вещей, необходимых в повседневной разработке: создания GUI, удобной работы с файлами, сетью, логгированием, унифицированного доступа к БД, автоматического контроля времени жизни объектов, и т.д., и т.п. Кое что из этого в итоге появилось в стандарте, кое что не появилось до сих пор. Язык представлял только базовые структуры и методы, а все остальное приходилось пилить самостоятельно, а при кроссплатформенной разработке — еще часто и делать отдельную имплементацию под каждую используемую систему. Естественно, это отнимало кучу сил и времени, повышало вероятность возникновения ошибок, короче говоря, заставляло заниматься программиста не разработкой непосредсредственно основноого функционала своей программы, а кучей всего остального. Поэтому и появился фреймворк Qt. Для C (который гораздо более «простой» чем C++), таким фреймворком стал GTK.
          А теперь посмотрите на C# или Delphi. У первого .Net является по сути дела неотъемлимой частью языка, у второго аналогично есть VCL. В них есть стандартные классы для всего что только можно и что нельзя, достаточных на огромное количество случаев жизни разработчика, и поэтому какие-то сторонние фреймворки там используются гораздо реже и для специфических случаев или задач (типа Akka.net, например), либо для моментов, отсутствующих изначально (типа Dependency Injection контейнеров). То есть по факту, нужда в фреймворках меньше, если сам язык у нас сложнее (его стандартная библиотека содержит гораздо больше сущностей).
          Какой напрашивается вывод? Фреймворки и библиотеки как раз-таки позволяют избежать нудного «околопрограммирования», а вместо этого дают разработчику возможность сосредоточиться непосредственно на решении основной задачи.

          Вообще, по-моему вы преувеличиваете сложность освоения новых фреймворков. Я занимаюсь системным программированием и бэкенд-разработкой, а фронтенд мне вообще чужд. Во фронтенде JS — язык простой, как в плане синтаксиса и понятий (ну, за исключение некоторых специфичных штук типа замыканий и приведения типов), так и в плане его стандартной библиотеки. Когда мне для одного хобби-проекта понадобилось сделать веб-морду, проблем не было никаких. Мне понравилась концепция MVC, потому что она позволяла четко разделять сущности в коде и обойтись без тонн написанного руками бойлерплейта, и у меня был выбор: или написать свою реализацию MVC с нуля, или попробовать разобраться в каком-то фреймворке. Первый вариант я отмел в целях экономии времени. Почитав quick start по KnockoutJS и немного поигравшись в jsfiddle все стало вполне понятно буквально через полчаса, и уже через пару часов у меня была вполне рабочая веб-морда.
          Когда через несколько лет мне пришлось вносить правки в проект коллеги на VueJS, моего поверхностного знания Knockout и нескольких поглядываний в документацию вполне хватило для того чтобы без проблем разобраться в том, что там происходит, и сделать необходимые изменения. А вот если бы коллега вместо использования фреймворка напилил бы какую-нибудь свою реализацию MVC, все могло быть гораздо сложнее.

          Еще через пару лет я ради интереса пригляделся к React и Redux, и да, там все было сложно и непонятно. Правда, потом истина открылась с другой стороны: он такой сложный и непонятный не потому что он такой сложный и непонятный, а просто потому, что основывается на другой парадигме программирования. Javascript — изначально язык универсальный и мультипарадигменный, и если бы мне на глаза попался код программы, точно так же написанный не в процедурном или ООП, а в функциональном стиле, мне тоже было бы сложно в нем разобраться, даже если бы он не использовал никакие фреймворки. Так что фреймворки тут оказались ни при чем :)


  1. shipmanager
    26.02.2019 20:16

    Подскажите пожалуйста, конкретно что за SQL справочник Агарвала (нашел несколько книг индуса Agarwal Priyanka, если это он :), а также конкретно какой учебник болгаров Telerik (нашел их академию только).


    1. LucBertrand Автор
      26.02.2019 20:20

      — Beginning C# 5.0 Databases, Vidya Vrat Agarwal;
      — Fundamentals of Computer Programming with C# (The Bulgarian C# Book), Svetlin Nakov et al.

      Все на английском, надеюсь, Вас это не смущает.


    1. puyol_dev2
      26.02.2019 20:38

      Я бы порекомендовал для SQL эту подборку proglib.io/p/sql-digest

      — Для понимания SQL — Алан Бьюли «Изучаем SQL»
      — А по постгрям в принципе неплохо — А. Ю. Васильев «Работа с PostgreSQL: настройка и масштабирование»


  1. SarSim
    27.02.2019 04:34

    Это одна из самых интересных историй, что я читал за последнее время!


  1. aghet
    27.02.2019 18:19

    Спасибо автору за такой мотивирующий очерк! Сам, являясь к.э.н., сильно разочаровался в академической деятельности (аграрная экономика и земельные отношения), и очень хочу углубить познания в пресловутой науке о данных, с возможной перспективой смены основного вида деятельности. В институте свободного времени предостаточно, базовые знания SQL (благодаря работе с ГИС) и опыт написания двух с половиной алгоритмов на Питоне присутствует, однако прокрастинация и боязнь того что я не смогу освоить матчасть и только впаду еще в более глубокую депрессию меня все останавливало. Такой бытовой жизненный опыт (автора) прибавляет уверенности, желаю вам успехов в реализации всех стремлений!


    1. LucBertrand Автор
      28.02.2019 07:34

      Коллега, здравствуйте! Я не разочаровался в научно-исследовательской деятельности как таковой. Проблема, скорее, в отношении общества к этой работе. Профессор (в России или на Западе), если он не академик 25-уровня и не занимается полезными бизнесу разработками, будет в финансовом плане находится на ступени чуть повыше кассира в «Карусели». Нас же во время учебы морально готовят к тому, что мы будем представлять собой интеллектуальную элиту страны. Поэтому, прежде чем Вы сделаете шаг в сторону от работы в академии, нужно будет пройти моральную ломку. Вас посадят в уютный теплый клетчатый офис в компании вчерашних выпускников вузов или даже стажеров-третьекурсников, и заставят писать код. И здесь самое главное вовремя оторваться от монитора и поймать пару ухмылок офис-менеджера. Это взбадривает.


  1. oldbie
    28.02.2019 11:36

    И здесь самое главное вовремя оторваться от монитора и поймать пару ухмылок офис-менеджера. Это взбадривает.

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