Комментарии 130
Представьте области знаний в виде окружностей-множеств.
Старайтесь искать пересечения с вашими знаниями и по чуть-чуть их расширять.
Модель и цепи Маркова — теория вероятностей. Наиболее близкие аналоги в мире программирования — стеки и предсказуемые переходы.
Постарайтесь остаться на текущей работе и потихоньку у себя внедрять методы тестирования и покрытие тестами кода. Я не ратую за 100% покрытие тестами, но они вам пригодятся в последующем поиске проблем и узких мест.
Еще смотрите в сторону теории графов и практическому применению к окружающей действительности.
Предположим, что вы создали такой корпус. Как это вам поможет сделать чат-бота? Как его отсутствие помешает?
Это очень важный момент, поскольку у собеседника бота не должно возникать сомнений в том, что с ним ведет беседу человек, а не кусок кода, напичканный фразами из литертурного языка.
Вот этот момент весьма сомнителен, как с моральной, так и с правовой точки зрения. Человек должен знать, что ему отвечает хоть умная, но машина, следовательно, она не принимает на себя ответственность за возможные ошибки.
Всё. Чат-боту нужен будет только парсер, который будет работать с запросом клиента и отвечать в соответствии с коллекцией ответов, доступных в базе данных.
Может быть, в научных целях интересно заставить чат-бота вести разговор на любые отвлеченные темы, а в колл-центре у чат-бота очень узкие функции и определенные рамки, что он может говорить и на что отвечать, а на что нет. И важнее правильно интерпретировать вопрос клиента, касающийся услуги, чем выбрать заготовленный ответ среди миллиона имеющихся.
В общем, в Китае наблюдается примерно 10-процентный перевес мужского населения в диапазоне от 20 до 60 лет. Это здоровые в физическом плане мужчины с нормальными естественными потрбностями. Они не особенно умны, но вполне работоспособны и готовы платить деньги за невест из Вьетнама и Бирмы. Невесты не говорят по китайски. Не ососбенно умные сельчане жаждут общения. Вот и весь бизнес.
Люди побогаче могут сделать аборт.
Стоит упомянуть, что определение пола эмбриона в Китае незаконно (именно для того, чтобы предотвратить аборты девочек), так что этим «людям побогаче» придётся как минимум съездить за рубеж.
На ГитХабе есть британский корпус, можете посмотреть его содержимое, поймете что к чему. Корпус — это набор кратких диалогов на повседневном разговорном языке. Это очень важный момент, поскольку у собеседника бота не должно возникать сомнений в том, что с ним ведет беседу человек, а не кусок кода, напичканный фразами из литертурного языка…
Хм. Что-то мне это напомнило:
Аналогично и тут, — человек в Китайской комнате, создаёт (программирует) сам ИИ или пользуется созданным другими ИИ (тут это неважно вовсе), и этот ИИ «натравливает» (обучает этот ИИ) на тексты (массивы текстов) китайского чата. — А затем этот ИИ и будет подсказывать человеку в Китайской комнате что и когда писать в китайский чат.
Но феномена «понимания» и тут НЕ возникает. (С)
Практически моя история успеха, если бы она состоялась )))
Сам полу-лингвист, полу-литературовед по образованию с тремя языками (два уже забыты за ненадобностью). В институте не остался по личным причинам, ушел работать по профессии, учителем в школу. Ну надо же было где-то опыт работы получать, без него никуда не брали, а уезжать в другой город или страну — не вариант тогда и не вариант до сих пор, опять же, дела семейные. Уже 15 лет получаю. Самому уже под сорок, лет пять тому перегорать начал, захотел в программирование уйти, всегда нравилось с компьютерами возиться. Фотошоп, вот, самостоятельно освоил до уровня «продвинутый пользователь» только для того, чтобы понять, что сидеть квадратики клепать для интерфейсов скучно, а на что-то иное — увы, таланту нема. Поучил PHP — не понравилось в конечном итоге, бэкэнд, как оказалось, абсолютно не мое, хотя сайты знакомым клепал на движках разных (HTML со школы знал неплохо) и знания все равно пригодились. Начал учить JavaScript — да, то, что нужно. Кнопочки, менюшечки — да, фронтэнд, это то, что мне было и надо. Но… в какой-то момент, как и вы, уперся в стену алгоритмов и математики. Понял, где и чего не хватает и… сломался. Так и не смог себя заставить повторить школьный курс математики, с ней и раньше не особенно-то и хорошо было. Так что, по хорошему завидую и жму руку. Молодец, сила воли плюс характер. Просто великолепно.
А мне изучение программирования помогло справиться с выгоранием. И я понял, что не смотря ни на что, я очень люблю свою работу и ни на что ее менять не буду. А буду сам себе маленькие простенькие программки писать, чтобы детей было легче учить.
Так что, желаю не спотыкаться о препятствия и идти к цели дальше. Кидаю челлендж: от джуна к миддлу за три года, от миддла к сениору — еще за три. И подробности в статьях на Хабре. Слабо?
Кстати, С является подмножеством С++, поэтому можно убить двух зайцев одним выстрелом.
Глубокое заблуждение — это два несовместимых языка со своими особенностями, хоть и общей историей и взаимными заимствованиями.
P.S. Да, можно написать код, который будет компилироваться и работать и как C, и как C++, но это будет плохой код: как минимум, он будет использовать неканонические конструкции.
P.P.S. Для изучения Си — только Керниган и Ритчи в последней редакции, плюс изучение нововведений С99 и С11.
Почему нельзя было придумать что-нибудь более внятное наподобие ESI/EDI и квадратных скобок?
Так оно и есть же! *(2 + p)
и p[2]
— одно и то же. Более того, 2[p]
— ровно то же самое. Только операции производятся в единицах размера объекта: нет полутора землекопов. И да, для многих архитектур на ассемблере тоже можно указать размер объекта при индексации.
int (*(*vtable)[])(); или вот такие char *(*(**foo[][8])())[];
То, что язык позволяет выстрелить себе в ногу, не значит, что в неё нужно стрелять. Да, тип в Си нужно читать тип справа налево, что несколько непривычно и неудобно. Но главное: не нужно так делать: нужно разделять абстракции. Именно поэтому есть typedef: и всё резко начинает быть простым и понятным.
P.S. Да, можно возразить, что описание типа в алголоподобном (паскале-/модула-/оберон- — и т.п.) виде слева направо удобнее читается и без разделения на абстракции. Но, скорее всего, вы очень быстро устанете от такого чтения и точно так же начнёте путаться. Почему оно так в Си получилось: по историческим причинам из-за совместимости с B и ранними диалектами K&R C.
А в ассемблере эквивалентное более читаемо ?
1) int z = 6; int *p = &z;
2) int z[] = {1,2,3}; int *p = z. (Знак амперсанда перед z вызовет ошибку компиляции)
Вот, маленький амперсанд где-то в глубине кода обязательно обвалит всю программу и потом вся команда полгода будет сидеть с дебаггером и рассматривать строчку за строчкой.
А в ассемблере всё просто и логично. Адрес величины — он и в Африке адрес. Поэтому запись
mov esi, [z]
одинаково валидна для матрицы и для одинокой дискретной величины.
Поэтому запись
mov esi, [z]
одинаково валидна для матрицы и для одинокой дискретной величины.
А с какой стати указатель на структуру равен указателю на её первый элемент? Для массивов в С это так, но даже матрица с адресом z может хранить по адресу z размеры, или смещения, или ещё что-то, необязательно первый элемент.
У нас тут ООП, типизация и всё такое. На язык С обычно даже плюются за то, что он недостаточно строгий. А в ассемблере будут долго искать все эти [z] по всему коду, когда потребуется что-то изменить в расположении полей структуры, или сменить float64 на uint64.
По-моему, одним из лучших в мире курсов, является старый курс от MIT: «Structure and Interpretation of Computer Programs» — при чём именно в изначальном его виде, с примерами и заданиями на Scheme.
Только не надо смотреть на Lisp/Scheme и убегать — это не учебник по программированию на каком-либо языке, это учебник по дисциплине «программирование». (К тому же, у вас явно не хватает в копилке функционального подхода.)
P.S. Лет восемь — десять назад MIT поддалась тренду и перевела сей курс на Python. Не ищите его, читайте оригинальный.
P.P.S. Нет, я совсем не любитель lisp-подобных языков: даже, скорее, где-то противник. Но здесь это именно то, что нужно.
Итак, салаги, вы пришли к старым морским волкам в /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, рефакторинг, всякие совершенные коды. Уже пора изучать язык, на котором будете работать, и изучать классические труды о его устройстве, стандартных библиотеках и методах. Для прихода к просветлению можно таки выучить модный хачкель. В книжках, которые я рекомендовал есть моря ссылок на другие труды. У вас уже должен быть большой кругозор. Думаю, к этому времени вы уже знаете, что делать.
Копипаста в целом совпадает с вузовской программой специальности "программное обеспечение вычислительной техники" — и теория, и практика. Примерно это всё знает и умеет хороший студент к концу пятого курса.
Поэтому можно просто* поступить в вуз.
* проще будет потому, что будут наставники, а в абсолютном выражении всё равно потребуется очень много усилий.
Л.Броуди «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
В сети есть и его монография по языкам.
Лингвистка в сочетании с программированием кажется открывают путь в такую интересную область как разработка самих языков прогоаммирования
concatenative.org/wiki/view/Concatenative%20language?
Возможно, разработка ЯП специалистами-лингвистами приведёт к тому, чтоб машина начала думать как программист.
В общем-то, любая область науки, которая поддаётся формализации, так или иначе нуждается в математике.
Огромнейшее спасибо за истинно плавный текст! :)
И всё-таки…
сколько же падежей в русском языке
там же вам было написано в самом начале:
Итак, я поступил на лингвиста. Почему? Потому что в местном университете преподавали лингвистику и потому что на целевом факультете были бюджетные места. Лингвистика… Очень интересная специальность. Лингвистика – это наука о структуре языка, но, как правило, подавляющее большинство лингвистов с трудом владеет своим родным языком, не говоря об иностранных.
… а текст — да, интересный, только у меня обратная «профдеформация» — я-то в программировании с школьных лет (Электроника МК-61), поэтому всегда интересно почитать биографии тех, кто «к нам» добирался окольными путями…
Лингвист, русский, французский, ИИ, опыт работы и во Франции, и в Китае, и одновременно — скепсис к самоходным экипажам. А скепсис — очень плодородная почва для прагматики.
LittleSquirrel — а ведь очень редкая и интереснейшая комбинация. Я ведь что подумал… ;)
Я бы с удовольствием продолжал заниматься ИИ, но только в интерпретации Хомского. Но его, к сожалению, не поддерживают крупные корпорации.
Достойно — это в какой степени и к каким текстам?
Если читающий, исходя из своего априорного знания может извлечь из технического перевода полезную с его точки информацию (с издержками диссонанса), то это достойно или обязательно до «буквы» применённой носителем языка?
P.S. И, кто то же и паттерны в Гугле редактирует и добавляет.
Сильный ИИ невозможен, он никогда не справится…
… с шашками!
… с шахматами!
… с го!
… с дотой!
<<вы сейчас здесь>>
… с управлением автомобилем!
… с переводом!
И так далее.
Насколько я помню, тест Тьюринга заключается в том, что человек в беседе не отличит машину? Так это давно случилось, боты обманывают людей постоянно. Я сам против шумихи вокруг мышиного обучения, но и заслуги прошу не отрицать :)
Нет, это не случилось. В тесте Тьюринга человек должен определить, кто из двух его собеседников машина. А боты могут обмануть человека, только если человеку будет не с чем сравнивать, либо если человек-собеседник будет отвечать как бот.
С Тьюрингом я погорячился, согласен. Но я помню времена, когда утверждалось, что только человек может играть в шахматы. Утверждалось авторитетно и с формулами.
:)
И Тьюринга этого вашего расколем, дайте время. Берт уже пишет тексты не хуже человека, настолько хорошие, что весь код на гитхаб не стали выкладывать, во избежание. А где текст, там и диалог.
Сделайте следующий шаг — подумайте, почему к авторитетам надо прислушиваться? Надо ли вообще прислушиваться? Авторитеты ли они? Не рабы ли они старых концепций? Сколько научных концепций было сразу принято радостно старыми учеными?
Другими словами, апелляция к авторитетам — разумный, но недостаточный довод. Авторитет может ошибаться, авторитет может вообще быть не авторитетом, а человеком, который рассуждает со стороны.
Есть такая известная статья, называется What happened to the future? Там подробно описано, что люди ждали от ИИ и что получили.Есть в мире много чего, что не оправдало ожиданий. От медицины до общественного строя. Открываем научную фантастику 20-го века, что с коммунизмом, что без него, и считаем фейлы современности. Ни Великой теории воспитания Стругацких, ни всеобщего мира, ни космических кораблей бороздящих разные там просторы. Очень неожиданен, к примеру, попадос с медициной — прогресс в медицине приводит к тому, что здоровье населения ниже. Потому что выживают люди с разными патологиями. Живут все дольше, но и болячек у всех больше. Хотя планировалось всеобщее улучшение здоровья. И так со всем, что ни возьми. Кроме, разве что, антиутопий. Так что не драматизируйте этот провал. Вам просто не пришлась по душе эта область. Перейдёте в другую специальность, там тоже будет своя разница между ожиданием основателей и реализацией наследниками. Если она ляжет Вам на душу, Вам всё равно это будет.
О, «харчи чужого государства». Я же не социальном пособии сидел и не искал себе жену с французским паспортом. Работал по контракту, получал зарплату не за красивые глаза, а в обмен за проделанную работу.
под оппортунизмом понимают «следование своим интересам, в том числе обманным путём»
wiki
И может быть тут как раз и проблема — с определением что же именно является тем самым своим интересом. Вот Вы пишите как выбрали новую профессию:
Вот он, тренд. Мир стремительно движется в сторону тотальной роботизации. Carrefour заменяет кассиров на автоматические сканеры. Cathay Bank реформирует отдел по работе с клиентами в том же духе. Парижские работники метро бастуют из-за открытия новой автоматизированной ветки. Я должен начать учить программирование или останусь навсегда за бортом.
С одной стороны я Вас понимаю, сам у себя легко могу найти подобные мысли. Но с другой — нельзя же искать своё опираясь только на глобальные тренды. Как будто в Ваших критериях выбора не подразумевается поиск интересного для себя занятия, или просто не стали делится этими соображениями.
Моё мнение — своё это те вещи, которые способны возбуждать и увлекать, заставят забыть про сон и для этого не потребуется сильной внешней мотивации, например требования родителей, зарплаты и т.п. Часто по-белому завидую способности детей(и некоторых взрослых) загораться. Рекомендую всем подглядеть, они делают это отрыто и искренне =). И это может оказаться что угодно, совсем за рамками модных направлений.
Поэтому я отчасти согласен с тем что писали тут ниже:
У настоящих рыбаков есть азарт к рыбе и понимание к выпивке (последнее опция). А у вас нет. Вы разбираетесь в лунках, удочках, мормышка а фигли толку.
и думаю что вместо того чтобы годы тратить на реализацию себя в нелюбимом, но модном деле, надо заходить не со стороны трендов, а сперва найти что-то себе по душе и рассматривать тренды уже в рамках этого направления. В конечном счете хайповоя у вас профессия или нет цениться будет в первую очередь уровень. Т.е. лучше когда ты хорош в том самом своем деле, чем кое-как программируешь\чтоугодно.
Но Вы снова перебарываете себя:
Спорт и давняя работа сторожем изменил мое отношение к этому вопросу. Если я могу перебороть себя и пробежать восемь километров, если я могу терпеливо сидеть за самоучителем по французскому языку и писать часами упражнения, то я наверняка смогу обучиться программированию. Ну, а если не смогу, то хотя бы попытаюсь.
P.S.
Не за заработком, а за непотопляемостью.
Для непотопляемости стоит обратиться наоборот к гуманитарной сфере, а не технической. Бизнес, юриспруденция, социальные науки.
Знаете, вы с академическим подходом ассоциируется скажем с исследователем зимней рыбной ловли. Он честно сидит у лунки и употребляет по 50 грамм, через статистически обоснованные промежутки времени.
И не понимает смысла. Почему в голове шумно, в ногах холодно, а рыба мелкая и жрать её нельзя (я с мск).
У настоящих рыбаков есть азарт к рыбе и понимание к выпивке (последнее опция). А у вас нет. Вы разбираетесь в лунках, удочках, мормышка а фигли толку.
Я почти никогда не делал упражнения в учебниках по программированию. И почти никогда не дочитывал их до конца. Меня сразу тянуло что-то намутить, написать.
Поэтому я сеньор в нескольких стеках, а вы мечущийся джун. Не аналищируйте — используйте. И через год вас будут рвать на части. Тем более с несколькими языками
У меня довольно медленный мозг, поэтому только через несколько лет до меня дошло осознание того, что всю жизнь махать лопатой будет довольно таки нудно.
Читалось на одном дыхании. Надеюсь, всё описанное — не художественная выдумка, а реальная история реального человека. Удачи вам!
Мне кажется, вы ищите в программировании какое-то чудо, но берете для его определения критерии из мира не-программистов (хакеры, «настоящий ИИ» и тд).
В программировании много чудес, и мне кажется, вы пропускаете одно из важнейших. Это чудо создания сложных систем из крайне простого набора простых правил. Почитайте про языки, «полные по Тьюрингу». Почитайте про игру «Жизнь». Она называется игрой, но на самом деле ничего игрового там нет. Это удивительный пример, как из трех простых правил, в которые можно играть даже на листе бумаги, создается огромная, сложная и малопредсказуемая (невооруженным взглядом и умом!) система, которая развивается, и на базе которой можно создавать невероятные паттерны.
Если вы увлечетесь этим чудом, этой концепцией «создание сложного за счет минимальных действий», возможно, вам откроются врата к тысячам других чудес и вам будет намного интереснее заниматься любой деятельностью из числа изученных.
PS. Статья написана в минорной ноте полной разочарования в бытие, но путь впечатляет.
Любопытно, куда бы прописали вам товарищи докеры за "Ну, и перспектива бытия червём на дне общества меня тоже особенно не прельщала."...
это опять же вопрос везения, связей и денег.
В общем, я бросил учебу в университете
дальше не стал читать, уж простите. надо писать правильно «я не сумел закончить начатое» или «с юных лет имел привычку бросать дело на середине».
а про то, что для вуза нужны деньги и связи это вообще воспринимается как оскорбление.
Деньги нужны не для вуза, а для нормальной подготовки к вступительным экзаменам. Если человек уже в школе должен выбирать между подработкой и выполнением домашних заданий, то о каких МГИМО или Бауманке может идти речь?
зато сколько я отговорок от одноклассников наслушался… особенно нравилось «мы старались» и воспоминания как они бегали курили на переменных, да пробовали в тоом же 8 классе уже пить.
ни один из них сейчас не признает, что сам виноват в неудачах. кто угодно, но не они.
Если человек уже в школе должен выбирать между подработкой и выполнением домашних заданий, то о каких МГИМО или Бауманке может идти речь?
Если на нем помощь семье — да, это проблема.
Но если он просто из не особо обеспеченной семьи, то ему достаточно прилагать свои усилия.
Имею перед глазами пример ребят, которые не имея возможности учиться на платном или заниматься с репетитором, отчетливо понимали при этом, что никто, кроме них им не поможет, напрягались и достигали в учебе успехов. Вплоть до неоднократных побед на всероссийских олимпиадах с последующей возможностью выбора любого места учебы. Без денег, блата и везения — упорная работа каждую минуту.
:D
Только не понятна связь с его позицией «ВУЗы = вопрос везения, связей и денег».
Я поддерживаю людей, которые хотят что-то изменить и стараются для своего будущего. но я бы ни за что не стал работать наравне с человеком, который не получил высшее без объективных на то оснований. просто не готов доверять такому человеку.
тем не менее через «не хочу» я диплом получил. и работать на 5 курсе успевал по новой специальности. аспирантура не в счет. и я бы ее оставил или отложил. она не является в нашей стране таким уж обязательным атрибутом, в то время как сейчас даже охранники с дипломами вузов. некоторые мои однокурсники на бюджете выучились, но не ушли дальше торговли кондеями и другой лабудой. согласитесь, что наличием диплома сейчас мало кого удивишь и преподаватели тянут за уши распоследних троечников.
я думаю подобный пример для автора является оскорбительным — раз он так и не удосужился извиниться за утверждение, что для учебы нужны непременно деньги и связи. скажу по секрету, что просто нужно упорство и мозги.
В них нету знаний.
разумеется. но черты характера это потрясающее вложение в личное будущее.
Автор же не призывает бросать учёбу.
несомненно нет. но прочитавший это школьник без связей может потерять мотивацию, которая так нужна. надо думать головой что писать и как. есть объективные факты, а есть субъективное восприятие мира.
любая подобная статья, которая легко нагуглится, должна помогать молодежи, а не сбивать их.
Если мои доводы кажутся Вам неубедительными, то можно обратиться к независимым арбитрам. arxiv.org/abs/1802.07068. Эта статья написана серьёзными людьми, доказывающими математически, что случайность играет в нашей жизни предопределяющую роль. Научные открытия, корпоративные успехи, прибыль от продаж — это все следствие случайностей. Безусловно, упорный труд и мозг необходимы для успеха. Но без удачи, к сожалению, в этой жизни никак.
и даже если вам нужно было подрабатывать, то речь наверняка шла о деньгах на новые кроссовки, а не на кусок хлеба.
ну почти… я утром не знал что буду есть в обед. буквально.
Вы родились в относительно благополучной семье
очень прошу оставить детдомовские замашки и объявлять весь мир своим врагом. здесь приличное общество. в моей благополучной семье мать пахала на 3 работах чтобы прокормить и меня и себя. подарок на новый год в виде пачки фломастеров и все другие прелести такой жизни.
нужно согласиться с тем фактом, что Ломоносов и ему подобные люди — это, скорее, исключение из правил
только у меня до 5го курса дотянуло 60 человек с основной массой из лоботрясов. один парень за предложение сдать экзамен за деньги пересдавал экзамен 4 месяца пока не вызубрил предмет. так что в том, что поступали головой, сомнений практически нет.
без удачи, к сожалению, в этой жизни никак
за всю жизнь я видел только 1 случай, когда подготовившийся заранее человек не сдал. с температурой под 40 вырубился на экзамене. остальные… «я готовился, но успел только 10 билетов из 40». что, простите?! это стало называться подготовкой?
Наверное меня ждёт что-то подобное, потому что вот сегодня мне одно очень интересно, а завтра оно уже скучно и интересно что-то другое.
Для меня тоже был такой опыт, и я понял, что могу изучить что угодно.
Я прошел курс «Основы обучения», и резко ускорил скорость своего обучения.
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
все говорит о том, что «разбор полетов» в сфере человеческой психики только с помощью умозаключений невозможен. «Бессознательное» проявляется через эмоции, неотделимо от мышления, и для него нет не то, что формальных правил, но даже самого языка, на котором правила могли бы формулироваться
Удачи!
Ах, я забыл: я же лингвист и все так же бесполезен на рынке труда. Где он, тренд? Что нужно учить, чтобы остаться на плаву?Область компьютерной лингвистики очень перспективна: автоматический перевод, системы распознавания и синтеза речи, системы текстового и голосового чата — это все очень актуально как в настоящем, так и в будущем!
У вас серьезная профессиональная лингвистическая подготовка, добивайте пробелы в программистской\математической подготовке (если такие остались) и будете уникальным специалистом с двойной квалификацией в актуальной теме с очень большими перспективами! Самые прорывные вещи сейчас происходят на стыках наук и человек который спец в нескольких дисциплинах видит шире своих коллег и очень перспективен.
Был ли мой мозг изначально предрасположен к аналитической деятельности или же это результат жизненных обстоятельств?
Человек это обычное животное, признав это самому себе, становится проще отвечать на такие вопросы. И Ваш вопрос не содержит противоречий: нет "или", есть только "и". Человека от других животных отделяет определенное свойство мышления. Это свойство имманентно, оно не зависит от языка, от зрительных образов, и вообще от каких-либо проявлений культуры или внешней среды. Оно просто есть, и в его основе лежит "химия", которую нейрофизиологи и могут наблюдать. Так что Ваш мозг изначально был предрасположен к аналитической деятельности, к том, что обычно называют разумом.
Если дело в химии, то и должен быть изначально заложен некий базис способностей, я бы даже сказал, что с генами можно передать талант. Гены это или просто удача, вопрос открытый. Возможно, Вы именно это имели ввиду, когда формулировали свой вопрос. Но я все же раскрою мысль. Мозг и разум они как тело: их можно тренировать. А внешняя среда вынуждает искать подход к этим тренировкам, и я предполагаю, что у каждого этот подход носит уникальный характер. Допустим мы можем каким-то образом померить, как питание и упражнения влияют на наши мышцы, и даже можем осознанно это корректировать с целью улучшения качества тренировок (если Вы увлекались бегом, то должны знать, что нет универсальных рецептов тренировок). С мозгом чуть иначе, мы хоть и можем понаблюдать как меняется химия в зависимости от каких-то мыслительных процессов, но не можем найти как эти процессы в целом скажутся на аналитические способности, или, например, на музыкальный слух. По крайней мере пока.
В подтверждение слов, я сошлюсь на Загорский эксперимент, который показывает, что восприятие не влияет на свойство мышления как таковое, но определяет процесс его развития, а значит одного без другого не существует.
Почти закончил 2 институт, матфак, уже несколько лет изучаю программирование.
Моя лаборатория ищет людей с образованием, не связанным с программированием, в надежде на то, что новички, не «испорченные» типовым мышлением, смогут создать новые алгоритмы и нестандартные решения.
У меня есть некоторый опыт работы с людьми, кто не связан с программированием, но пытается предлагать решения задач. Эти "новые алгоритмы и нестандартные решения" обычно в тысячи раз намного хуже "стандартных", потому как люди без "стандартного" программистсткого образования не имеют понятия ни о временной сложности, ни о структурах данных, ни о работе процессора, ни о наличии библиотек, ни о принципах создания GUI (и я уверен, что это всё будет полезно и вам).
Конечно, я не могу советовать расформировать лабораторию и ничего не делать — иногда новичок может предложить что-то стоящее, но на 99% это будут кривые "велосипеды".
Я читал биографии людей наподобие Илона Маска, который начал программировать уже с пеленок, или основательницы «Тераноса», которая уже в пятилетнем возрасте организовала свою домашнюю химическую лабораторию.
Ух ты! Что это за основательница такая?.. Поищемс… «Основательницу Theranos обвинили в мошенничестве», «обмане инвесторов», «несуществующие технологии анализа крови», «Всё это длилось десять лет и в итоге оказалось мыльным пузырём. Однако этот пузырь с помощью агрессивного пиара, грамотной юридической помощи и тотальной слежки за сотрудниками умудрился построить вокруг себя такую защиту, что удивительным становится не столько его появление, сколько то, что он всё-таки лопнул.»
Ну… помоему, барышня склонна фантазировать преувеличивать свои достоинства :)
XAML прост в усвоении, однако идущие вместе с ним bindings и MVVM пока еще не поддаются пониманию.Вы уверены, что на этот раз Вы выбрали правильную профессию, и действительно понимаете то, чем Вы пытаетесь заниматься? ;)
Ведь «это элементарно, Ватсон!». Если объяснять совсем упрощенно, «на пальцах», то binding — это когда Вы указываете имена переменных непосредственно
Binding вполне можно использовать и без паттерна MVVM (особенно актуально для небольших задач, с малым количеством данных — тупое следование MVVM паттерну, что часто наблюдается у неопытных программистов, приводит к усложнению читабельности кода и «расползаемости» проекта).
Понятное дело, что объяснение выше примитивно, как я написал, «на пальцах», а текущие реализации в WPF и UWP позволяют делать очень много достаточно сложных вещей, но это уже, так сказать, подробности и experience, набираемые в процессе работы.
— Fundamentals of Computer Programming with C# (The Bulgarian C# Book), Svetlin Nakov et al.
Все на английском, надеюсь, Вас это не смущает.
— Для понимания SQL — Алан Бьюли «Изучаем SQL»
— А по постгрям в принципе неплохо — А. Ю. Васильев «Работа с PostgreSQL: настройка и масштабирование»
И здесь самое главное вовремя оторваться от монитора и поймать пару ухмылок офис-менеджера. Это взбадривает.
Совсем не понял этот момент, из-за чего ухмылки и как это подбадривает, пояснить плз.
Я вот сейчас, пишу вроде бы очевидные вещи, но для чего и для кого не совсем понимаю. Вроде бы, для вас, автор, но вы об этом и не просили. Конкретные вопросы остались в заключении:
Все вопросы, которыми я начал задаваться с того момента, когда впервые открыл самоучитель по французскому, так и остались без ответа. Можно ли развить способности к языкам или это врожденная особенность человека? Логика, абстрагирование и программирование — аналогичный вопрос. Нейрофизиологи утверждают, что левое полушарие мозга как раз и отвечает за языковые способности человека и его умение логически рассуждать. Был ли мой мозг изначально предрасположен к аналитической деятельности или же это результат жизненных обстоятельств? Почему я был апатичным ребенком без всяких интересов, а перешагнув за черту двадцатилетия, внезапно обрел усидчивость и умение усваивать довольно чувствительные объемы информации?
Что-то мы получаем еще до рождения, а что-то после: в процессе жизни. Генетика и физиология больше относятся к первой части и мало что могут сказать о второй. Интересно, что ответы на эти вопросы в какой-то мере дает психология, которая и изучает субъективное: человека и его существование.
Еще кое-что. У вас удивительно философский взгляд на вещи, особенно мне понравилось:
Вместе с первой решенной задачей пришло понимание того, что программированию нельзя обучить. Можно выучить пару сотен алгоритмов, но всё равно настанет тот день, когда нужно будет создать что-то новое. И тут уж никакой Дональд Кнут не поможет.
Этот тезис неплохо укладывается и глобально, на все существование человека, если слово программирование заменить. Не находите?)
У читателей этой статьи наверняка возникло ощущение недоумения: здоровый, мол, лоб, а всё ещё мечется в подмастерьях. Осознание того, чем мне бы хотелось заниматься, пришло уже после того
Считаю это прекрасно, когда человек замечает, что ему чего-то не хватает и начинает искать то самое, чего не хватает. Из содержания статьи показалось, что у вас в этом деле что-то получается. Спасибо за интересную статью.
Программирование для не-программистов. Биография джуна