Как НЕ надо начинать изучать программирование

Приветствую, Хабровцы!

Решил поделиться своим опытом «успешного» изучения языка(ов) программирования.

Не сказать, что в IT-индустрии я полный профан, однако мой план обучения «стать IT developer-ом» — с треском пошел по швам.

Немного предыстории.

Сразу скажу, что целенаправленного обучения по компьютерным наукам я не проходил. Да и специализация в образовании у меня далеко не техническая. Работал с 2005г. по 2012г. в различных компаниях, и мелких и крупных, непосредственно связанных с IT-индустрией. Научился всему понемногу: сис. администрированию Windows (даже MCP, MCSA успел получить), немного поюзал VMware (VCP тоже в копилке), дополнительно изучил разную кучу программ, которые сис. админы как правило используют в своей ежедневной работе.
Попробовал себя в корпоративных продажах, кстати, неплохо получалось. Успел поработать немного и у дистрибьютора ПО, а также в компаниях-интеграторах, неплохо разобрался в политиках лицензирования ПО. Планировал стать Project manager-ом, даже начал изучать PMBOK, тайм-менеджмент, различные международные стандарты, типа ISO, Tier, и даже замахнулся на PCI DSS.

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

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

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

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

Теперь сама история, поехали…

Так вот, спустя 8 лет отдыха от IT в целом, принялся изучать заокеанский рынок труда и решил для начала специализироваться в мобильной разработке. Погуглив языки программирования для мобильных приложений и вдохновившись, что Google официально анонсировала язык Kotlin как приоритетный язык для android-приложении, твердо решил максимум за 1 год самостоятельно выучить Kotlin и строить планы по иммиграции на ПМЖ в США.

Пару недель просмотра тренингов и чтения мануалов мне хватило, чтобы убедиться, что без знаний Java в Kotlin делать нечего. Хотя на просторах интернета многие твердят что можно выучить с нуля. А после регистрации на GitHub-е, установки IntelliJ IDEA, JDK и попытки разобраться в коде я уже начал осознавать что придется учиться очень-очень долго и упорно.
Было принято решение отложить Kotlin пока что в сторону, и углубиться в язык java. Так и сделал. Эх, помнится в мое время java был еще SUN-овским детищем.

Быстро переключился на Java без сожаления, т.к. и мануалов больше для самостоятельного изучения и вакансии для Java-разработчиков намного больше. Правда не определился с чего стартануть будет лучше: с Java, либо все-таки переключаться на JS, ну да ладно, думал походу разберусь. На форумах где-то читал, что с JS войти в мир разработки намного легче и быстрее.
Приступил к изучению Java стандартно, прочитав гору статей и просмотрев кучу видео «Как стать Java программистом». Скачал книгу Брюса Эккеля «Философия Java», по рекомендациям многих на форумах, как самый правильный старт изучения языка новичкам.

Так вот скажу вам честно, она нисколько не для новичков.

Пробовал не обращать на это внимания и читать дальше, усвояемость около 20-25%, понял что так дело не пойдет. Придется разбираться и в С языке, да еще и в книге регулярно черным по белому пишут, что материал рассчитан на читателей со знанием основ С языка.

Что-ж, выбора нет. Опять читаю кучу информации, сотни просмотров видео разной тематики о языке С. Качаю книгу Кернигана и Ричи «Язык С», приступаю к изучению, усвояемость уже получше чем в Java, так сказать около 50-60%, что вовсе не радует меня.

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

Однако такие заголовки в книге как:
«Настоящая книга не является вводным курсом в программирование; она предполагает определенное знакомство с основными понятиями программирования такими как переменные, операторы присваивания, циклы, функции»
или:
«предполагается рабочее владение основными элементами программирования; здесь не объясняется, что такое ЭВМ или компилятор, не поясняется смысл выражений типа N=N+1»
а также такие фразы как:
Символические константы.
и т.д.
постепенно подводили меня к тому, что без изучения Computer Science мне не обойтись.
Параллельно начинаю вникать в Computer Sciense, качаю опять-таки тонны книг. Регистрируюсь на Гарвардский курс CS50, приступаю к изучению основ программирования, внимательно читаю книгу Владстона Феррейра Фило «Теоретический минимум по Computer Science».

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

И если в двоичном коде, переменных, функциях, циклах, компиляторе, интерпретаторе, простых уравнениях и т.д. я еще более менее разобрался, то выражение типа N=N+1 и более сложные уравнения меня загоняли в легкий ступор.

Я долго вникал почему 0 в степени 0 равен 1, и у меня ощущение что я до конца так и не понял всей сути.

А вот эта задача меня вообще заставила остановиться на чтении книги по CS, т.к. чем дальше читал, тем сложнее уже шли уравнения и задачи:



Пришлось гуглить про квадратные уравнения, как написано в книге и вникать в дискриминанты. Ну забыл, подумал я, алгебру, с кем не бывает. Однако я так и не смог решить самостоятельно задачу, пришлось обращаться за помощью к школьному преподавателю ребенка по математике.

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





На мой вопрос: «как решаются такие уравнения?», ответ был очень прост:
«учи исследование функции, начало анализа и задачи на оптимизацию. Алгебра 10-11 класс».
Ну думаю, ок, посмотрю пару видео-примеров для школьников в youtube, пойму как решать их, и дальше буду «глокать» изучение по CS.

И вот после просмотра подобных роликов по алгебре меня осенило…

www.youtube.com/watch?v=RbX_QHxu7Lg
www.youtube.com/watch?v=FVSG7Neopuo

Я не то что не помню, как решаются такие задачи, — я элементарно, как выяснилось, попросту не знаю Алгебру за 10-11 класс!

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

Наверное, мои познания математики остались на уровне уроков математики 5-6 классов.

Начинаю осознавать, что для полной картины понимания Computer Science, мне необходимо будет заново учить алгебру, а затем и ВысшМат. Не исключаю, что походу скорее всего, появится необходимость и повторения уроков физики и еще чего-то из школьной программы. И до реального изучения Java и JS мне понадобится лет 5 изучения алгебры и высшей математики.
До Марса и обратно быстрее долететь, всего то 1,5 года, как утверждают ученные…

Так вот, проанализировав прошедший месяц-полтора самостоятельного обучения, для меня стало очевидно, что я как «хомяк в колесе», вроде как бы и бегу (учусь), а по факту стою на месте. Знаний в программировании не прибавилось, разве что программку на С языке («Hello, world») смогу запустить.
Да еще и после свалившейся тонны новой информации в мой маленький мозг, он кажется вообще ушел «shut down», и категорически отказывается воспринимать новую информацию.
Алгоритм, построенный мной для изучения программирования, дал сбой практически в самом начале.
Стало понятно что надо пересмотреть свой план обучения и подход к нему.
Однако пока не до конца ясно представляю себе картину, и с какой стороны вообще теперь подходить к обретению профессии «Java-developer», ибо стандартный пусть обучения, с основ алгебры и высшмата, будет очень долгим и не подходит в моем случае.

И вот тут-то мне стало уже совсем как-то грустно.

Неужели чтобы стать программистом без технической базы, требуется так много времени?
Меня конечно вдохновляют статьи в интернете, где люди пишут, что за 1,5 года стали Java developer-ом и уехали в Германию, Канаду, США, однако оценивая свои печальный опыт я не уверен что такое возможно.

Или все-таки это не моё? И профессия «разработчик» — это для элиты, «касты особенных людей»?

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

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

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

Заранее благодарю!
AdBlock похитил этот баннер, но баннеры не зубы — отрастут

Подробнее
Реклама

Комментарии 411

    +10
    В список самых высокооплачиваемых профессий, для тех кто не любит математику, программирование не входит:
    www.businessinsider.com/high-paying-jobs-for-people-who-hate-math-2014-11
      +26
      Чтоб формошлёпить на мобилках последнее что нужно — это математика. Автор слишком увлёкся археологией.
        +2

        А если именно программировать – то алгебра уровня старших классов школы нужна как минимум (а это немало; я в свою очередь класса с 7-го не в то русло энергию направлял и в алгебре страшные провалы, о чём сейчас порой очень жалею).

          +12

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


          выражение типа N=N+1 и более сложные уравнения меня загоняли в легкий ступор

          Это не уравнение. Это команда машине увеличить переменную N на единицу. То есть конкретно этот пример может работать как счетчик.


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

            –5
            зачем ему бейсик и паскаль?
            нужно решать задачки на java или котлин, хотя котлин без java все же сложноват. Математику(leetcode) можно делать после освоения языка. Язык осваивается в виде сделаных 5-10 проектов. В большинстве случаев достаточно изучения web сервисов. Ну либо смотреть проекты на андроиде. Для начала написать hello world, потом добавить логику потом бд дальше сходить на собеседование(устроитья не цель, но если возьмут это круто) — узнать что спрашивают и двигаться в этом направлении.
            Не плохой вариант javarush как-раз чтобы голова не болела, что делать. Но полностью к собеседованию не готовит. Как варик можно курсы от jetbrains, правда только присматривался, вроде не плохие, но лично не пробовал.
              +3

              Школьная алгебра нужна для того чтобы научить:
              1) Точно выражать свои мысли (чтобы задача вообще была решена)
              2) Оформлять их в строгой нотации (чтобы код скомпилировался)
              3) Преобразовывать выражения из одной формы в другую без потери смысла (чтобы рефакторить)


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

            +4
            Даже «формошлепить» математика нужна будет. Иногда весьма интесивная… И статистика и методы оптимизации и алгебра всяческая. А ещё неплохо бы изучить физиологию восприятия и промышленный дизайн(для качественного формошлепства). Конечно дорогу осилит идущий и полюбить можно и после свадьбы, но лучше все таки по любви.

              +6
              Конечно дорогу осилит идущий и полюбить можно после свадьбы...

              — Знаешь, как называется любовь за деньги?
              — Продакшен, как же ещё! :)

                +1
                Интенсивная, но не вся. Стереометрия вам не понадобится пока вы не займётесь 3D. Интегралы/Дифференциалы же я живьём в рабочих проектах не видел.
                  +2
                  Ну а мне встречались. И всем кто занимается графикой тоже. Ну например:
                  en.m.wikipedia.org/wiki/Summed-area_table
                  Фильтры всякие, антиалиасинг…
                  Всегда можно обойтись без чего либо или выучить когда понадобится, но лучше все таки знать, чтобы хорошо делать работу
                    –2
                    К слову, summed area table не содержит Интегралов/Дифференциалов нигде, кроме 2го названия: «Integral Image»
                      +3
                      К слову это дискретный аналог интеграла или просто — дискретный интеграл.
                      И допускает обратную операцию дифференцирования. А еще у него есть много интересных свойств:

                      www.sfu.ca/math-coursenotes/Math%20158%20Course%20Notes/sec_VolumeAvgHeight.html
                      Добавлю еще. Метод позволяет быстро посчитать среднее значение на интервалах, что равносильно свертке с прямоугольной функцией, которая в свою очередь позволяет быстро найти приближение к свертке с гауссианом любой ширины(согласно предельной теореме) :)
                    +2
                    как примеры:
                    Smoothed particles hydrodynamics- гидродинамика сглаженных частиц. применяется в GameDev-е для визуализации потоков жидкости и физики. Там диф-уры в частных производных в интегральной форме записи решаются.
                    Твердотельное моделирование (Компас-3D, SolidWorks, T-Flex etc.)- всякие огибающие и поиск точек касания- дифференциалов хоть отбавляй.
                    ЧПУ- если управлять «рукой» типа Куки- то там тоже дифференциальной геометрии с полярными координатами по самые помидоры. Гексапод без этой ерунды тоже ногами ровно дергать не сможет.
                      +11
                      Не все разработчики работают с 3D (по-моему, вообще — меньшая часть). Я, как iOS разработчик, и из чистой математики за пределами алгебры ничего не встречал. Самый же полезный навык — понимание алгоритмической сложности.

                      Периодически ради фана пишу моды для игр, математики в них на порядок больше:
                      Из того, что встречал/применял и что никогда не понадобилось в профессиональной деятельности: интегрирование, теория управления, мат.ожидание, собственно стереометрия, теория графов, конечные автоматы. Вот сейчас с симплекс-методом воюю… Конечные автоматы очень долго ждали своего часа, чтобы оказаться в списке «применено в том числе для рабочих задач».

                      В общем не хотите учить математику — идите в iOS разработку, тут вам ничего кроме геометрии не понадобится…
                      +1
                      > Дифференциалы
                      Вообще любая динамика, не обязательно в играх — тупо нормальная модель динамики спроса (но в итоге её всё равно к линейной приводят)…
                      +2
                      Угу и всего этого не знает почти никто судя по интерфейсам и рынку труда.
                        0

                        А где там статистика может быть нужна?

                          +1

                          Навскидку — для A/B тестирования

                        +5

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

                          0
                          Несмотря на все наши попытки понять что такое массив и как его обрабатывать не получилось.

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

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

                                0
                                Практически на все эти вопросы легко ответит хождение по коду дебагером + чтение соответствующей теории по алгоритмам. Только опять же, в 80% современной типовой работе даже на такой уровень закапываться обычно не приходится. Понятно, что с таким подходом сениором не стать, но автор вон и на путь джуна даже стать не может из-за любви к археологии.
                                  +1
                                  Когда-то, будучи совершенно практическим двоечником по математике (и не только), совершая свои самые первые шаги в программировании столкнулся с тем, что на единственном доступном компьютере оператор FOR в Бейсике просто не работал (битое ПЗУ, компьютер сбрасывался при выполнении оператора). Ни знающих людей, у кого можно было бы спросить совета, ни хоть сколько-то адекватной литературы под рукой не было. Как-то не сильно остановило и не помешало ни в написании своих первых программ, ни в выборе жизненного пути. Бывают разные люди и разные истории, и со своей колокольни мне кажется, что мотивация гораздо важнее таланта и знаний.
                              0
                              Ну, формошлепить в долине — таки на собеседованиях это все нужно будет.
                                0
                                Сделать красивую анимацию на форме — математика как раз таки нужна
                                0
                                Этот список актуален для США.
                                Там на втором месте врач-педиатр, а еще есть медсестра.
                                Точно не для РФ и СНГ, у нас какой-нибудь педиатр — нищий.
                                Так что не совсем актуально в принципе.
                                  +3
                                  Ой, тут смотря какая математика! Про графы все же программисты знают?! А это часть дискретной математики. Мат.логику тоже все знают. Умение определять сложность алгоритма — тоже математика. Работаешь с float — должен знать часть вычислительной математики.
                                  Если поставить вопрос так: насколько нужен «чистый матан» (мат.анализ) программисту, то получили бы интересное исследование. Критерии сходимости рядов, разрывы функции, множества Парето, Слейтера и т.д.
                                  +18
                                  >Неужели чтобы стать программистом без технической базы, требуется так много времени?

                                  Да уж. Когда въедливость и желание разобраться до сути во зло. Всё что требуется на начальном этапе — понять тот уровень абстракции, где надо просто верить в магию нижних уровней и жить с ней и продолжать разбираться с верхним уровнем.
                                    +2

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

                                      +3
                                      а потом уже потихоньку начинаешь понимать почему на ноль делить нельзя.

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

                                        До сих пор жил с уверенностью что нельзя, вот это поворот.

                                          0
                                          «А теперь забудьте всё, чему вас там в этом вашем учебном заведении учили. Добро пожаловать в реальную жизнь на производство!» © не помню кто из начальства цеха, нам, свежевыпущенным синемордым краснодипломникам.
                                            +5
                                            — Забудьте все, чему вас учили в ВУЗе, здесь это не пригодится. Простите, но не учился в ВУЗе…
                                            — Извините, тогда вы нам не подходите, нам нужны только люди с высшим образованием.
                                            +2
                                            Да, корень из отрицательных чисел тоже можно брать
                                              –3
                                              Ну на 0 можно делить только 0.
                                              Неопределенности вида «0 делить на 0» учат разрешать в стандартном курсе анализа.
                                                0
                                                А что вам мешает 5 на 0 поделить, получив вполне законную +∞?
                                                  0

                                                  а почему не -∞?

                                                    0
                                                    это получится если на -0 делить. А если на +0, то таки +∞.
                                                      0
                                                      Ну про числитель-то давайте тоже не забывать. :)
                                                        0
                                                        А что числитель?
                                                        Число 5 в любом случае число чисто положительное, и даже если рассматривать его как предел — с любой стороны от него значения положительны.
                                                          0
                                                          Если я не ошибаюсь, то при -5 / 0 будет -∞.
                                                          А, понял, мы с вами к вопросу с разных сторон подошли :)
                                                            0
                                                            -5 / +0 = -∞, да. Но -5 / -0 = +∞.
                                                            То есть, я про то, что предел функции с/х таки меняет знак в зависимости от того, с какой стороны X стремится к нулю.
                                                    0
                                                    Тот факт, что деление на ноль — в большинстве случаев неопределенная операция (за исключением некоторых специфичных областей математики). Если очень хочется, то можно взять предел — тогда будет бесконечность:
                                                    lim_(x->0) 1/x = ∞
                                                +1

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


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

                                                  0
                                                  А кое у кого очень даже пересекаются


                                                  А у кого-то их даже нет. Зависит, с какой стороны глобуса живёшь :)
                                                    +1
                                                    А кое у кого очень даже пересекаются, но это уже совсем не евклидова геометрия.

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

                                                      +1
                                                      Нет же, параллельные прямые не пересекаются по определению. Ни в какой из геометрий.


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

                                                      Или вообще параллельные прямые становятся невозможными (в сферической геометрии).
                                                        0

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


                                                        Кстати, еще немного о делении на ноль.
                                                        За пределами арифметики не везде можно делить на ноль.
                                                        Более того, кое-где в математике вообще деление не предусмотрено как класс.


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

                                                  –1
                                                  А кстати, про приведённую задачу. Геометрия учит нас, что наилучшее соотношение площадь\периметр имеет квадрат, после круга, естественно. А я там квадратов пока не просматриваю.
                                                    +1
                                                    Забор посередине все портит
                                                      0

                                                      там интересно получается


                                                      пусть у нас 2 продольных и n поперечных заборов. при любом n максимум площади будет при длине продольного забора равной 25. при n=2, это будет квадрат, но в задаче n=3

                                                  +4
                                                  для полной картины понимания Computer Science, мне необходимо будет заново учить алгебру, а затем и ВысшМат

                                                  Для полной картины даже этого не хватит… Я учился на ВМК, работаю в целом по специальности, и все равно — чем дальше, тем больше IT-направлений мне становятся непонятны и прямо-таки тяжелы для освоения.

                                                  Но чтобы стать средненьким программистом, этого понимания, в общем, не требуется. Базовые алгоритмы (хотя бы вслепую уметь писать сортировку) + решение задачек по предметной области (клепание форм, роутинг или куда там идёте) в общем и целом даст квалификацию на джуниора-мидла. А дальше уж посмотрите, имеет ли смысл жрать этот математический кактус… Сениору-архитектору это да, неплохо бы иметь технический склад характера + математический бекграунд.

                                                  PS: Я вот занимаюсь ИИ, так мне пришлось осваивать психологию и лингвистику. Тоже не фунт изюму…
                                                    +1

                                                    Не вижу связи между современным ИИ и психологией

                                                      +1
                                                      современная психология — это много-много матстатистики, например…
                                                    0
                                                    Неужели чтобы стать программистом без технической базы, требуется так много времени?
                                                    Меня конечно вдохновляют статьи в интернете, где люди пишут, что за 1,5 года стали Java developer-ом и уехали в Германию, Канаду, США, однако оценивая свои печальный опыт я не уверен что такое возможно.


                                                    Ну, без описания начального уровня тут особо говорить не о чем. У меня был коллега, который имел опыта java разработки меньше, чем вы описываете (только курсы, де факто). Но придя на наш проект, он вполне вписался в работу, и примерно год вполне справлялся, в том числе писал например на скале. Но при этом у него, надо заметить, было примерно 10 лет опыта в другой области — 1С, т.е. скажем базы данных и SQL он знал вполне прилично. То есть, отсутствие опыта в самой разработке и языке/инструменте должно чем-то компенсироваться, как правило. Отсутствие знания математики — обычно тоже.

                                                    Германия тут кстати может упрощать дело — потому что дефицит программистов там вполне может быть больше, чем где-то в глубинке России, например, и если вы по остальным показателям проходите…
                                                      0
                                                      10 лет в 1с означают 10 лет опыта в написании кода в процедурном стиле, возможно написание внешних компонент на плюсах. Возможно еще что то полезное. Так что по сути ему нужно было освоить только ООП и конкретный инструментарий. Ну может еще какие хорошие практики. Не так много.
                                                        0

                                                        1С это ведь по сути VisualBasic с русским синтаксисом. Так что вполне язык программирования и навык качает. Пересесть с процедурного программированмя на ООП, не так и сложно. Особенно если практика ООП была в универе.

                                                          0
                                                          Собственно я об этом и написал. Там конечно нужно еще учитывать распространенность плохих практик программирования и еще некоторые нюансы, но в целом да, опыт 1с вполне можно, пусть и с понижающим коэффициэнтом, считать за опыт продакшен программирования. Та же работа в команде, то же умение декомпозиции задач и выделения абстракций.
                                                          Я в общем то на своем опыте такое провернул. Спустя года 3 в 1с, может чуть раньше начал изучать не привязанные к языкам вещи, читал дядюшку боба, макконела, хабр, смотрел записи конференций, читал про ООП и паттерны. А потом, после еще полутора-двух лет перешел на котлин достаточно спокойно, даже с учетом что менторить некому меня было. Оценить трудно самому себя, но где то через месяц ушел от программирования в процедурном стиле, через месяцев 4-5 пошло более менее идиоматичное ООП, с элементами ФП. При наличии более опытных товарищей думаю быстрее бы прошла адаптация.
                                                            0
                                                            Вообще то там есть ООП, просто объекты фиксированы)
                                                            А так когда работал с 1С, то это было: собственно само 1С, написание и оптимизация хранимых процедур MSSQL (не 1Сных, но работающих с 1Сными данными), внешние компоненты на C#, обмен данными с различными системами самыми различными вариантами…
                                                              0
                                                              Да нет там ООП. Там одни обрывки от него не дающие никаких знаний ООП и навыков практического использования этой парадигмы.
                                                                0
                                                                Вообще то там есть ООП, просто объекты фиксированы)

                                                                ООП это всякий там полиморфизм, наследование и т.п. там этого нет от слова совсем, то что там некоторые системные объекты «какбы» работают по принципам ООП, это не означает что оно там есть… этим же нельзя пользоваться
                                                                  0
                                                                  Да, оно очень обрезано, но немного похоже)
                                                                  Любой документ создается от базового документа (ручками в конфигураторе, тут же добавляются поля), как и все прикладные объекты создаются от какого-то базового типа.
                                                                  Потом нужные функции переопределяются путем написания кода.
                                                                    +1
                                                                    Вот когда можно будет сделать платежку, а потом унаследовать от неё входящую и исходящую — тогда будет наследование. А до того — год обжекты в процедурном языке + кастомные обработчики событий событий.
                                                                      0
                                                                      Да и тогда не будет наследования нормального.
                                                            0
                                                            Это все примерно так и было, только у нас нет ООП :) И освоить нужно было не так мало — еще одну СУБД MS SQL, еще два языка — груви и скалу, Apache Spark, Hive, Oozie, Hadoop. Ну таки да, опыт написания какого-то кода был, а главное был опыт SQL, который и пригодился полностью.
                                                          +7
                                                          Такие выражения как: пределы, математическое мышление, экстремум, производные, многочлены и т.д. для меня оказались как речь на языке племени Майя.

                                                          Для 99% программ это не нужно.
                                                          Я сам не люблю и слабо понимаю математику, хотя и занимаюсь 3D графикой =)

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

                                                          А вот эта задача меня вообще заставила остановиться на чтении книги по CS
                                                          Какое отношение эта задача имеет к программированию? Никакого.

                                                          Качаю книгу Кернигана и Ричи «Язык С»
                                                          Вместо всяких курсов по CS и древних книг лучше обратите внимание на такую серию:
                                                          stolyarov.info/books/programming_intro

                                                          У меня, и многих моих коллег был путь снизу-вверх: от электроники к программированию.
                                                          Когда знаешь как работает железо, просто не может быть проблем с пониманием всех нюансов использования переменных/циклов/указателей.
                                                            +3
                                                            И как Вы учили электронику без математики???
                                                            .Для 99% программ это не нужно.

                                                            И вот на оставшийся процент и придется потратить 99% времени
                                                              +1
                                                              Чтобы собирать любительские схемы из книжек и проектировать свои из готовых блоков и по готовым шаблонам расчётов, никакой особой математики не нужно. Нужен калькулятор.
                                                                0
                                                                Ну да, у меня был как раз. Б3-34. (1983 год) Первое что я на нем написал — это численное интегрирование дифф. уравнения методом рунге кутта 4 порядка. По странному совпадению как раз для расчета схемы.
                                                                Ни в одном учебном заведении электронику без математики не преподают.
                                                                Сначала просто математика. А потом уже электроника.
                                                              –4
                                                              Извините, но Паскаль в 2020 году это за гранью разумного.

                                                              Керниган-Ритчи — великолепны. Не знаю как для взрослых, а для школьников отлично заходит для обучения азам.
                                                                +7
                                                                .Паскаль в 2020 году это за гранью разумного

                                                                Почему? Вполне симпатичный язык для обучения. И полный по Тьюрингу естественно.
                                                                  –11
                                                                  Почему? Вполне симпатичный язык для обучения.

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

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

                                                                  И полный по Тьюрингу естественно.

                                                                  Баш тоже Тьюринг полный. Но это же не повод его изучать первым?
                                                                  Да и CSS Тьюринг полный. Это же не повод на нем писать программы?

                                                                    +3
                                                                    Не знаю, мне нравится
                                                                    en.m.wikipedia.org/wiki/Free_Pascal
                                                                    Stable release 2 months ago
                                                                    У него компактный компилятор, который легко спортировать на маленькую платформу
                                                                      –5
                                                                      Не знаю, мне нравится
                                                                      github.com/Clozure/ccl/releases
                                                                      released this on 20 Apr
                                                                      У него компактный компилятор, который легко спортировать на маленькую платформу

                                                                      PS: Дельфисты атакуют. Вы хотя бы пишите что не так. Чем вам Керниган-Ритчи и Си как первый язык для обучения основам не угодил. Уже минимум пара поколений разрабочиков на них выросли.
                                                                        +10
                                                                        Да меня вполне язык С устраивает, на нем и пишу, он хороший и удобный.Но Паскаль специально был написан для обучения, в нем есть некое изящество. Лично я начинал с Алгола, Фортран, APL потом Паскаль, Пролог, Лисп.
                                                                        Переход с Паскаля на Си без проблем, они весьма близки идеологически. Бейсик, тот да, ужасен. Сейчас я развлекаюсь с разным ретро, вот там Паскаль иногда заходит удобнее чем Си.
                                                                        Ну а на работе конечно с++ only.
                                                                        PS Паскаль это эпоха, это священная корова, наезжать на неё нельзя
                                                                          –1
                                                                          Ну да был написан для обучения. В итоге оказалось что когда теоретик делает язык для обучения получается не очень.

                                                                          Учить второй очень похожий язык вторым это потеря времени. Это для нас пара недель с синтаксисом ознакомится и можно писать. Все же одинаковое у них. Для начинающих это все сложно и требует кучу времени. Я бы вторым предложил учить Питон. И уже на нем преподавать весь остальной cs.
                                                                          Так совсем хорошо выйдет и с парой Си/Питон уже любой язык будет знаком и похож на что-то уже выученное. (Любители Идриса проходите мимо, не про вас речь)

                                                                          с я развлекаюсь с разным ретро, вот там Паскаль

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

                                                                              Свобода наоборот дает возможность поговорить с обучающимся. Почему он так сделал, а как еще можно сделать, а в чем разница? Красота же. Даже не углубляясь в тонкости в правильно написанной программе есть о чем поговорить.

                                                                              Стиль это все потом. Тут что IDE сделает то и хорошо. Какой-нибудь MSVC вполне прилично все делает.
                                                                                +5
                                                                                Извинит, но Си в качестве первого языка — это как учится кататься на велосипеде, используя для этого его одноколёсный вариант.

                                                                                Для чего нужен первый язык — для связи бумажной алгоритмики с реальным программированием. В первом языке не должно быть свободы — он ДОЛЖЕН быть дубовым. Чтобы не отвлекаться на синтаксис, а заниматься непосредственно творчеством.

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

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

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

                                                                                  Вы тех же Керниган-Ритчи читали? Сначала рассказывается про один способ. Лабы, практика, вперед.
                                                                                  Все остальное в разделе указатели. Понимание что такое указатель приходит очень долго и очень тяжело. И чем больше примеров и того что можно пощупать в этом месте тем лучше.
                                                                                    +1
                                                                                    С Сями можно потратить полчасика на рассказ про git

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

                                                                                      +1
                                                                                      Ветки, пуш, пулл, мердж в полчаса укладываются. Если что не так действуем по инструкции.
                                                                                      image

                                                                                      Тут важно что это Си. Живой, массовый и сложный проект. Учим не мертвому языку дедов, а живому на котором пишут живые проекты.
                                                                                        +2
                                                                                        У вас как-то через все сообщения проскальзывает вот этот «язык дедов», «времен динозавров». Хотя, казалось бы, оперировать понятиями «модно» / «не модно» — так себе аргумент.
                                                                                        Quicksort, например, из 1960-х. Я так понимаю, вы его тоже будете рекомендовать не использовать? :)
                                                                                          0
                                                                                          Я не о дате изобретения, а об использовании сегодня.

                                                                                          Квиксорт живой. Им пользуются в продакшене.
                                                                                          Си, несмотря на возраст, живой.
                                                                                          А вот Паскаль мертвый. Им в продакшене не пользуются.
                                                                                            0
                                                                                            А вот Паскаль мертвый. Им в продакшене не пользуются.

                                                                                            DRL(ранее известный как DoomRL) поглядывает с некоторым недоумением.

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

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

                                                                                        +2
                                                                                        Понимаете, какая штука, все, о чем вы говорите — правильно. И всё это будет — но позже.
                                                                                        Вы мешаете в кучу язык для обучения и язык для разработки.

                                                                                        Язык для обучения должен быть неудобен. Он должен постоянно заставлять выкручивать мозги. Он обязан содержать минимум инструкций. Он должен научить человека программировать что угодно при помощи говна и палок.
                                                                                        Тут как в армии, на курсе молодого бойца: -«Любой дурак выкопает окоп лопатой. А ты сумей ножом и руками. Сумел? Потом выкопаешь чем угодно»

                                                                                        Не помню кто сказал что люди делятся на тех, кто программирует и тех кто нет. Те, кто программируют, могут программировать что угодно — от древней релейной логики до трассировки лучей на новейших видеокартах.

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

                                                                                        С точки зрения продакшена язык для обучения ужасен.
                                                                                        Но язык обучения не предназначен для разработки, хотя такое тоже встречается.

                                                                                          +2
                                                                                          Тогда лучший язык для обучения — Brainfuck.
                                                                                          Впрочем, машина Тьюринга тоже сойдет.
                                                                                            0
                                                                                            У нас (МАИ, не школа) были таки машины тьюринга, потом их связки, потом паскаль как основа курса алгоритмов, си++ как основа курса ООП, пролог, Оракловый вариант скуля как основа курса РБД.
                                                                                            Без глубоких заходов в IDE и библиотеки. С учтом того, что на С++ писали в Борланд билдере — правильно что без заходов.
                                                                                  +1
                                                                                  Так совсем хорошо выйдет и с парой Си/Питон уже любой язык будет знаком и похож на что-то уже выученное.

                                                                                  Да они ведь во многом похожи как языки, на базовом уровне. Те же переменные, if/for/etc, функции, etc — разница в чуть другом стиле синтаксиса и явном указании типа в Си. Паскаль и иже с ним туда же.


                                                                                  Если говорить о разнообразии, то есть множество используемых языков, которые намного сильнее отличаются — из относительно популярных например скала/f#/лиспы/хаскель.


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

                                                                                    +2
                                                                                    Да они же во многом похожи как языки, на базовом уровне. Те же переменные, if/for/etc, функции, etc — разница в чуть другом стиле синтаксиса и явном указании типа в Си. Паскаль и иже с ним туда же.

                                                                                    Это приходит через годы регулярного написания кода. До этого все сложно. Питон удобнее всего чтобы обучать именно CS.

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

                                                                                    из относительно популярных например скала/f#/лиспы/хаскель.

                                                                                    Хотя бы полгода Коммон Лиспа курсе на четвертом это хорошо и полезно. Но не раньше. Человек перед изучение должен уметь код писать. Обычный и простой код.

                                                                                    Мы тут про азы. На чем рассказывать про циклы с переменными и на чем первый пузырек писать.
                                                                                      +1
                                                                                      Хотя бы полгода Коммон Лиспа курсе на четвертом это хорошо и полезно. Но не раньше. Человек перед изучение должен уметь код писать. Обычный и простой код.

                                                                                      Мы тут про азы. На чем рассказывать про циклы с переменными и на чем первый пузырек писать.

                                                                                      Есть какие-то исследования, что условный питон эффективнее для начального обучения программированию, чем условный лисп? По-моему это совершенно неочевидно. Конечно, если речь не идёт о курсах типа "дата саенс за 21 день".

                                                                                        +2
                                                                                        Я бы с радостью посмотрел за таким А/Б экспериментом.
                                                                                        Берем 2 группы студентов технарей.
                                                                                        Считаем что они обучены простейшим вещам и ничего кроме них. Одну группу учим Хаскелю и cs на нем. Вторую Питону и cs на нем. Через год и через два года подбиваем результаты.
                                                                                        Вылетел 1 балл.
                                                                                        Попытка самоубийства 100 баллов.
                                                                                          +1
                                                                                          Ну а как вы себе это представляете? Берём студентов и начинаем экспериментировать с их жизнью, а если провал — ну ничего, новые через год придут?

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

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

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

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

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

                                                                                                хм, я бы говорил не про «проще для изучения», а про «лучше для обучения».


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

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

                                                                                                  0
                                                                                                  про «лучше для обучения».

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

                                                                                                  Я тоже. К сожалению, они по факту все вымерли, ну вот разве что Scratch есть, но это всё-таки немного другая лига.
                                                                                                    0
                                                                                                    Осталось выяснить, как понять, какой же лучше.
                                                                                                    Если брать «программирование вообще», то максимально отвязанный от железа: лисп, тикль, питон или ещё что-то выразительное, но очень медленное.
                                                                                                      +2
                                                                                                      Ну вот я лично думаю, что Питон, потому что он объективно ненамного хуже «любого другого языка», и при этом очень популярен на практике. Т.е. ценой небольших гипотетических неудобств по сравнению с «языком X» студент получает бонусом готовый практический навык для работы.

                                                                                                      Вот условно 30 лет назад такой опции не было: либо чисто учебный Бейсик, либо «туда-сюда» Паскаль, либо уже по хардкору с головой в C/С++ и иже с ними.
                                                                                                        0
                                                                                                        ненамного хуже «любого другого языка», и при этом очень популярен на практике.
                                                                                                        Это да. Но именно как учебный мне больше нравится лисп, просто потому, что на нём в силу единства данных и кода можно сделать вообще всё, и это будет достаточно лаконично. Своя система типов? Своё ООП с плюшками? ФП? Рекомендательные системы? Логическое программирование? Всё это можно реализовать в сотни-тысячи строк поверх ванильного лиспа. Тикль, внебрачный сын плюсов и лиспа, кстати, всё это же поддерживает, просто там синтаксис ещё более мутный. А вот как в питоне, например, перейти от ООП на классах к ООП на прототипах я вообще не пойму.

                                                                                                        EDIT Правда, если учить студентов ближе к индустрии, то принцип «Если на текущем ЯП тебе приходится вывихивать мозг над задачей, а на другом ЯП это три строчки, пиши на другом плюс биндинг» придётся внушать. Питон изначально разрабатывался как язык — универсальный клей, так что тут он в самую тему.
                                                                                                        0
                                                                                                        Выразительно и медленно совершенно не обязательно сочетается в одном языке.
                                                                                                      0
                                                                                                      читать дети тоже не по «Войне и миру» учатся, для этого придумали азбуки и красочные книжки с минимумом текста.
                                                                                                      Но читать дети учатся все-таки сразу именно на реальном языке, а не придумывают для этого специально искусственный. А азбуки и красочные книжки — это аналог «Hello World» и подобных простых учебных программ, но не другого языка.
                                                                                                  +1
                                                                                                  Ну а как вы себе это представляете? Берём студентов и начинаем экспериментировать с их жизнью, а если провал — ну ничего, новые через год придут?

                                                                                                  Так иного варианта-то нет. Так и экспериментируют, только (почти) никому не говоря, что это эксперимент. Если у вас есть маховик времени из саги про ГП — можно попробовать часть студентов учить впараллель. Но ведь его нет?


                                                                                                  Просто начинают с относительно небольшой группы и пытаются по ней оценивать, стоит ли расширять эксперимент… (в лучшем случае)

                                                                                                    0
                                                                                                    Ну так интересантов нет. Представьте, что вы, условно, декан в университете. Зачем вам такое экспериментаторство? Смотрите, что преподаётся в хороших вузах, по каким языкам есть учебники и преподаватели (у вас), вот и утверждаете их. А если вы, условно, флагман типа MIT, там можно попытаться, но тоже не знаю, кому там подобные телодвижения интересны. Люди туда работать идут не ради того, чтобы выяснять, первокурсник лучше освоит лисп или питон.
                                                                                                      0
                                                                                                      А если вы, условно, флагман типа MIT, там можно попытаться, но тоже не знаю, кому там подобные телодвижения интересны

                                                                                                      хорошо, что не все рассуждают так, как вы


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

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

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

                                                                                                          А она и будет составлять 1% от того, что делается в нормальном университете — но она должна выполняться, иначе там так и будут преподавать Паскаль вместе с программированием для ЕС ЭВМ на перфолентах.

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

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

                                                                                                          0
                                                                                                          Ну я не знаю, вы как налогоплательщик считаете, что тратить деньги общества на выяснение «что лучше для университета — Питон или Лисп» — это хорошее расходование средств? Притом что классики типа Брукса (или может, не он это сказал, а Перлис или Парнас, не помню) давно заметили, что если бы какой-то язык давал прирост производительности труда по сравнению с другим хотя бы на 5%, все на нём бы сидели. Я не против такого исследования, конечно, с чего бы мне быть против. Но навскидку мне не кажется, что это сверхинтересная работа, потому что с практической точки зрения если даже студенты полгода посидят на Лиспе, всё равно ради реальной жизни через полгода они начнут изучать Питон или C, а если им это слишком сложно, то скорее всего, они для этой профессии слабо пригодны всё равно.
                                                                                                            +2
                                                                                                            вы как налогоплательщик считаете, что тратить деньги общества на выяснение «что лучше для университета — Питон или Лисп» — это хорошее расходование средств?

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


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


                                                                                                            если бы какой-то язык давал прирост производительности труда по сравнению с другим хотя бы на 5%, все на нём бы сидели.

                                                                                                            Это откровенная ерунда, потому что приросты бывают и в 500 и в 100500 процентов, но — в конкретных областях и для конкретных типов задач. Иначе бы новые языки просто не выстреливали, и мы бы действительно сидели на одном Фортране или Коболе. Если вы видите язык, который вышел из породившей его лаборатории и пошёл по миру, то он даёт прирост не 5%, а как минимум десятки процентов — иначе легаси не дало бы ему развиться.


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

                                                                                                            "Реальная жизнь" она разная бывает. Вон если больше половины (навскидку и например) применений Python это врапперы вокруг numpy/pandas/etc., то тем, кто использует его для таких задач, LISP нафиг не сдался.
                                                                                                            А вот тем, кто целится на широкий спектр понимания CS, надо учить и LISP, и Forth, и обычные процедурные языки, и акторные цепочки из промисов… а вообще такому надо пройти, например, этот список до указанного уровня (знать по каждому слову, что оно и чем характерно). (Может, чуть устарел — ну так обновлять.)

                                                                                                              0
                                                                                                              резкий перевод на тему налогов выглядит приёмом некорректной полемики.
                                                                                                              Смотрите, этот приём корректен потому, что именно таким образом оцениваются предложения учёных в грантовых комиссиях. Если кто-то захочет провести подобную работу и выбить под это деньги, то проект будут изучать на предмет научной интересности, новизны и да, impact/spillover effects/importance, вот и всё.

                                                                                                              Это откровенная ерунда, потому что приросты бывают и в 500 и в 100500 процентов
                                                                                                              Безусловно. Эта цитата относилась к языку «общего назначения» в рамках написания «софта широкого профиля». Сейчас мы имеем куда больший зоопарк языков и сфер применения, но если сосредоточиться на «учебных» языках, то назовите любую десятку — пусть там будет и Паскаль, и Питон, и Руби, и что угодно ещё. Вот я уверен, что не найдётся такого языка, который вот прямо все понимают, а Питон не понимают. Ну ведь уже учили и на Бейсике, и на Лого, и на чём только не. Любой не слишком замороченный язык плюс-минус одинаков.

                                                                                                              А вот тем, кто целится на широкий спектр понимания CS,
                                                                                                              Мы здесь по сути обсуждаем «вход в IT», то есть с чего начать, а не чего в принципе стоит освоить. Это другой вопрос.
                                                                                                    +1
                                                                                                    Есть какие-то исследования, что условный питон эффективнее для начального обучения программированию, чем условный лисп?

                                                                                                    MIT таки писал какое-то обоснование, почему они перевели CISP со Scheme на Python. Можете поискать.

                                                                                                  +3
                                                                                                  Не вижу особой проблемы начинать с паскаля в школе

                                                                                                  Пачка граблей, которые непонятны и которые надо тупо запомнить, я об этом писал несколько раз: 1 2 и т.д.


                                                                                                  Я понимаю критику C, но тогда надо брать не Pascal, а хотя бы Modula-3.


                                                                                                  кто заинтересуется изучит и другие.

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

                                                                                                    +2
                                                                                                    Я понимаю критику C, но тогда надо брать не Pascal, а хотя бы Modula-3.

                                                                                                    Но зачем? Это очередной мертвый язык. Ни IDE, ни SO, ни реальных проектов. Ничего нет. Не надо откапывать стюардессу.
                                                                                                      0

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

                                                                                                        0
                                                                                                        Начальная школа это вы преувеличиваете.

                                                                                                        Да, а почему нет? Пусть привыкают что на правильно сформулированный вопрос как сделать тото интернет всегда ответит.
                                                                                                        Мы же используем so. Так почему обучающимся не надо? Не надо решать за других. Есть сложившиеся практики. Надо просто обеспечить их доступность.
                                                                                                        0

                                                                                                        Паскаль по факту не сильно от него отличается (да, есть анклавы дельфистов и т.п. — но это чудовищно далеко от мейнстрима). Да, надо было сказать "надо было брать лет 20 назад", или даже раньше.


                                                                                                        Сейчас обстановка интересна тем, что ломается всё — ждём, что выживет из новой волны языков. Хоть выбирай между Swift и Julia какими-нибудь...

                                                                                                  0
                                                                                                  Бейсик, тот да, ужасен.

                                                                                                  Чем же бейсик так ужасен?
                                                                                                    0
                                                                                                    Бейсик ужасен всем мням. То есть мне и моей шизе.
                                                                                                    За других не ручаюсь.
                                                                                                      0
                                                                                                      ну мне просто интересно, можете объяснить чем бейсик хуже, например питона?
                                                                                                      а то я часто слышу как бейсик называют ужасным, но никто не может привести ни единого примера ужасности?.. максимум вспоминают косяки 70х годов прошлого века…
                                                                                                        +1
                                                                                                        Питон моей шизе нравится ещё меньше. А пользоваться приходится и им тоже изредка. Так что я Вам объяснить не смогу.
                                                                                                        Не нравится и все. Неудобно как неудобная обувь. Может кто нибудь сможет найти явные причины этого, но я не зна
                                                                                                        А серьезно я сторонник строгой типизации
                                                                                                          0
                                                                                                          А серьезно я сторонник строгой типизации

                                                                                                          Так в питоне как раз строгая типизация и есть. Может, путаете с динамической типизацией?

                                                                                                            –1
                                                                                                            В питоне, в переменной может быть все что угодно. Сейчас там число, чуть позже строка, а потом массив. Там скорее не переменная владеет объектом, а объект переменной.
                                                                                                            И мне это не нравится.
                                                                                                            Может, путаете с динамической типизацией?

                                                                                                            В смысле как dynamic_cast с++?
                                                                                                            Я не силен в теории современных языков. Когда я изучал программирование, их еще не было и терминология была сильно другая.
                                                                                                            А еще меня раздражает питоновское форматирование. Мой любимый редактор на ней все время выкидывает фортели…
                                                                                                            Впрочем это уже совсем мое старческое ворчание…
                                                                                                            И еще. За все нужно платить. Питон хорош для маленьких поделок, на один, два, три листа кода. А вот с объемными проектами гарантированно будут проблемы.
                                                                                                              +1
                                                                                                              В питоне, в переменной может быть все что угодно. Сейчас там число, чуть позже строка, а потом массив.

                                                                                                              Не так. В Питоне переменная, по-сути, является нетипизированной ссылкой на строго типизированный объект. Т. к. эта «ссылка» нетипизированна, её в любой момент можно перенаправить на строго типизированный объект совершенно другого типа. Возможно, вы именно об этом и пишете далее («объект владеет переменной»), но тут уж, скорее, дело в отсутствии объявления переменных как такового. Впрочем, строго статически типизированный Rust позволяет наобъявлять что-то вроде
                                                                                                              let x = 3;
                                                                                                              let x = "blah";

                                                                                                              И ничего, как-то живут с этим.

                                                                                                              В смысле как dynamic_cast с++?

                                                                                                              В смысле, в языке с нестрогой типизацией вы запросто можете сложить вместе строку и массив целых чисел. Например, Javascript:
                                                                                                              let msg = 'fuck my brain' + [1, 2]

                                                                                                              Питон такой содомии, всё же, не допускает.

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

                                                                                                              Да ну, нет. Объёмные проекты требуют дисциплины, пиши их хоть на чём. Питон, конечно, позволяет некоторый пофигизм, по-сравнению с С++ каким-нибудь, но с «объёмными проектами» там встают проблемы уже несколько иного порядка, на фоне которых все эти вот мелочи вроде «переменная владеет объектом или объект владеет переменной» вообще ни о чём.

                                                                                                              Неудобно как неудобная обувь.

                                                                                                              Пишу последние несколько лет, в основном, на Питоне. Мне, наоборот, удобно — даже если заранее знаю, что надо будет С++, зачастую мне быстрее и удобнее всё равно сперва написать прототип на Питоне. Что бесит, несмотря на мою любовь к Питону?
                                                                                                              • Форматирование. К нему привыкаешь, без него Питон не был бы Питоном, оно снимает вопрос, оставлять фигурную скобку или переносить (но при этом усугубляет холивар «табы vs. пробелы»).
                                                                                                              • Размытая и неявная грань между «ссылкой» и «значением». Некоторые объекты (большинство) передаются по ссылке всегда. Некоторые объекты передать по ссылке нельзя вообще никак.
                                                                                                              • Сам синтаксис языка провоцирует совершать множество мелких ошибок, которые в C++ или Java спалил бы еще IntelliSense. А тут давай, до свиданья, в смысле, до рантайма.
                                                                                                              • Иногда не хватает перегрузки функций — то, что легко и изящно делается на этапе объявления в таком неуклюжем языке, как C++, в минималистичном Питоне выглядит каким-то извращением.
                                                                                                                +1
                                                                                                                Не так. В Питоне переменная, по-сути, является нетипизированной ссылкой на строго типизированный объект. Т.

                                                                                                                Но при этом сам "строго типизированный объект" тоже может быть достаточно непредсказуемого типа из-за динамичности — можно менять поля и методы, можно заменить класс-подложку…
                                                                                                                то, что он не допускает 2+"3", конечно, немного повышает порог, после которого начинаются чудеса и проблемы анализа (как ручного, так и машинного), но по сравнению с более устойчивыми в этом смысле языками — порог чудовищно низок.


                                                                                                                Форматирование.

                                                                                                                Его главная проблема не холивар — а когда встают вопросы типа "а сколько блоков и какие закрываются вот на этом сдвиге влево?"
                                                                                                                При наличии {} все адекватные современные редакторы позволяют перейти на парную скобку, тут же такого нет (ну можно самому написать #end, конечно, но это локальное хакерство).


                                                                                                                Сам синтаксис языка провоцирует совершать множество мелких ошибок, которые в C++ или Java спалил бы еще IntelliSense. А тут давай, до свиданья, в смысле, до рантайма.

                                                                                                                Странно, ни разу не видел такого. Можно примеры?


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

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

                                                                                                                  +1
                                                                                                                  Форматирование.

                                                                                                                  У меня почему-то проблем с визуальным разделением блоков как раз нет. Code folding работает, если что, во всех адекватных редакторах — можно свернуть блок, выделить строку, развернуть блок — выделенным окажется и всё содержимое. Навигацию хоткеями по блокам я, кажется, тоже где-то видел, но вот не помню, где именно (и правда ли видел).

                                                                                                                  Странно, ни разу не видел такого. Можно примеры?

                                                                                                                  Дык как раз всякая мелочь типа 2 + «3», когда код рефакторили, рефакторили, да не вырефакторововали. В итоге получается как в известной шутке: «Вы раз за разом стреляете себе в ногу, но всё время попадаете между пальцами.»

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

                                                                                                                  Ну либо внутри функции парсить args и kwargs. Либо даже просто один-два параметра надо переопределить (чтобы работало и для 2 + 3, и для «2» + «3») — проверять типы переменных вручную в рантайме.
                                                                                                                    0
                                                                                                                    При наличии {} все адекватные современные редакторы позволяют перейти на парную скобку, тут же такого нет (ну можно самому написать #end, конечно, но это локальное хакерство).

                                                                                                                    Всё есть. Адекватные Python-IDE позволяют. Даже Notepad++, что уж про PyCharm говорить. Точнее, не переход — а обозначение и сворачивание.

                                                                                                                    0
                                                                                                                    в языке с нестрогой типизацией вы запросто можете сложить вместе строку и массив целых чисел
                                                                                                                    Типизация — это всё же больше о том, когда вы убираете у ваших данных поведение (или используете интерфейс иным неправильным образом), и они перестают тайпчекаться.
                                                                                                                    А сложение, которое дурно совпадает с конкатенацией — это мелочи.
                                                                                                                    Большие проекты на Python требуют MyPy.
                                                                                                                      +1
                                                                                                                      Большие проекты на Python требуют MyPy.

                                                                                                                      я заметил тенденцию, что при росте размера проекта, туда начинают тащить и MyPy и контроль типов и абстрактные классы и самодельные интерфейсы… и и проект начинает быть похож а яву, написанную на питоне… причем это так забавно выглядит, сначала все мотивируется тем что питон выбран потому что не надо морочится всякой шелухой лишней… а потом те же люди начинают её туда костылить потому что окааазывается шелуха нужна
                                                                                                                        0
                                                                                                                        А «шелуха» ведь и вправду нужна. Точнее не шелуха, а ограничения программиста. Вообще это касается всего GTD, но это другой вопрос.
                                                                                                                        Python — просто не очень удачно спроектированный для широкого применения язык. Но это были лихие 90-е, тогда такой же Javascript был придуман и вообще казалось, что динамика с monkey patching даёт бесконечные возможности программисту (что правда).
                                                                                                                        Но для некоторых областей Python терпим и питоно-подобный синтаксис приятен.
                                                                                                                        и абстрактные классы и самодельные интерфейсы
                                                                                                                        Тут еще привычка к другим ЯП может сказываться. Абстрактные классы не особо нужны (inheritance coupling), самодельные интерфейсы покрываются Protocols из Python 3.8+.
                                                                                                                  +1

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


                                                                                                                  К сожалению, для data science библиотеки сплошной Питон.

                                                                                                                +3
                                                                                                                Современный Бейсик не ужасен, но бесполезен, к сожалению. В восьмидесятых годах уже к нему относились свысока из-за нехватки средств структурного программирования (по сравнению с другим главным учебным языком — Паскалем). Потом в Бейсике (я про Microsoft версии в первую очередь) накрутили столько всего, что по сложности он стоит теперь в одном ряду с Питоном, и прочими. Но по факту используется гораздо реже, и стало быть, нет ни одной разумной причины начинать с него.

                                                                                                                Вообще мне кажется, что ниша учебных языков либо перестала быть востребованной, либо просто переживает тёмные времена. По факту Scratch, а дальше уже что-то взрослое.
                                                                                                          +1
                                                                                                          Чем вам Керниган-Ритчи и Си как первый язык для обучения основам не угодил
                                                                                                          В Си (и асме) ломает мозг и потом значительно усложняет освоения более высокоуровневых языков определение переменной: в С это именованный адрес (ячейка памяти), а в высокоуровневых языках — именованное значение.
                                                                                                            0
                                                                                                            Такие сложности нужны ближе к концу первого года обучения. Вместе с рассказом про указатели. Большим и обстоятельным рассказом с кучей практических работ.

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

                                                                                                                  Ну там всё равно будет фактический эквивалент адреса в виде какого-нибудь id объекта и проверки его на идентичность другому такому же.


                                                                                                                  (Уточнение: мне недавно доказывали, что в Haskell этого нет. Готов поверить: для таких языков идентичность может не являться чем-то важным по сравнению с равенством.)

                                                                                                                    +1
                                                                                                                    Идентичность в java проверяется оператором ==, проверяет как раз равенство ссылок на объект. Но по факту получить адрес в памяти не выйдет. Вроде как дефолтная реализация хеш кода возвращает или когда то возвращала адрес в памяти, но учитывая работу сборщика мусора — адрес может меняться, потому значение берется первое и фиксируется, и не меняется при перемещении в памяти.
                                                                                                                      0

                                                                                                                      Ну я ровно про это же. Проверить идентичность там таки доступно, и это типовой вариант для таких средств. Что этот адрес, даже если доступен, может меняться — это уже неизбежная специфика реализации.

                                                                                                                        0
                                                                                                                        Ну конкретно программисту адрес таки недоступен.
                                                                                                                          0

                                                                                                                          Можно его сравнить на равенство другому.

                                                                                                                            0
                                                                                                                            Нет, сравнивать можно только объекты. Числовое выражение адреса никак не вытащить. Точнее через NDK что то подхимичить можно, если передать плюсам жава объекты то адрес получить выйдет, но это все же не средствами джава.
                                                                                                                              0

                                                                                                                              Зачем вы по третьему кругу возражаете на то, что не говорилось?

                                                                                                                                0
                                                                                                                                Ну там всё равно будет фактический эквивалент адреса в виде какого-нибудь id объекта

                                                                                                                                А это что?
                                                                                                                                  0

                                                                                                                                  Я не говорил, что он будет доступен прикладному программисту. Это уже вы домыслили.

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

                                                                                                                    На самом деле я сделал акцент на то, что «именованному значению» больше соответствует понятие константы, а не переменной.
                                                                                                                      0
                                                                                                                      Я к тому, что в С нельзя эффективно работать без указателей, ну вот вообще. Самые простые вещи типа возврата массива или нескольких значений из функции делаются через указатель. Функции высшего порядка — тоже через указатель. Операции memmov и memcpy тоже работают напрямую с памятью и встречаются достаточно часто… А потом ты приходишь в ту же джаву, а там указателей просто нет. И ты теряешься.
                                                                                                                +7
                                                                                                                > Чем вам Керниган-Ритчи и Си как первый язык для обучения основам не угодил.

                                                                                                                Строгий «академический» ответ на этот вопрос приведен в монографии Столярова, ссылку на которую дали в комментах выше.
                                                                                                                А я по-простому скажу. Си похож одновременно на самурайский меч, турецкую саблю и мушкетёрскую шпагу — устроен очень просто, в нём почти ничего нет, но приёмы написания программ на нём — сложны и замысловаты. И для освоения именно этих приёмов (и безопасного их применения!) нужно много специальных знаний.
                                                                                                                Таким образом, изучение Си на уровне чуть выше элементарного тут же превращатся в изучение операционной системы (что такое файл? а дескриптор файла? И зачем функция dup2?), архитектуры компьютера (ошибки buffer overflow где-то рядом, а вместе с ними — опасные уязвимости) и прочих интересных вещей. Такие знания, разумеется, программисту тоже нужны, но на самом начальном этапе обучения программированию у студента начинается информационный перегруз — он не в состоянии справиться с потоком сведений и отделить важное от неважного, как, собственно, и произошло с автором исходного поста.
                                                                                                                  –2
                                                                                                                  Все учебные примеры это 100 строк. Как правило даже до 50 строк.
                                                                                                                  Все тонкости не нужны. Замысловатости заканчиваются на выборе имен переменных.
                                                                                                                  Прочитать файл — вот одна функция. Или вобще вот плюсовой стрим. Мы не стремимся к чистоте кода или языка. Мы стремимся чтобы попроще было. Просто прочитать или записать файл это несложно.

                                                                                                                  Что-то утекает или не безопасно? Ну и ладно. Файлик прочитан, данные из него корректно обработаны. Остальное не важно.
                                                                                                                  –2
                                                                                                                  Дельфисты атакуют

                                                                                                                  Насильников? ;)

                                                                                                                0
                                                                                                                У него плохой синтаксис.

                                                                                                                ?!?

                                                                                                                  0
                                                                                                                    +1
                                                                                                                    Фигня там почти все. Основная претензия — это писал не я и поэтому барахло.
                                                                                                                    Посмотрите например пассаж про яблоки апельсины и целые числа.
                                                                                                                    В свете сползания с к плюсам половина текста уже не релевантна.
                                                                                                                    Просто он весьма необъективен, а Вирт мужик весьма порядочный
                                                                                                                    Впрочем это уже о другом
                                                                                                                    PS Да и посмотрите на его собственное детище язык AWK.
                                                                                                                      –1
                                                                                                                      Посмотрите например пассаж про яблоки апельсины и целые числа.

                                                                                                                      Так он до сих пор прав. И в 2020 году это выглядит ужастно.
                                                                                                                      Можно складывать теплое с мягким. Да, это работает. Специально проверил.
                                                                                                                      program p1;
                                                                                                                           type
                                                                                                                                   apple = integer;
                                                                                                                                   orange = integer;
                                                                                                                      var
                                                                                                                          apple1 : apple = 0;
                                                                                                                          orange2 : orange = 0;
                                                                                                                      begin
                                                                                                                          apple1 := 1;
                                                                                                                          orange2 := 2;
                                                                                                                          writeln(apple1 + orange2);
                                                                                                                      end.


                                                                                                                      В свете сползания с к плюсам половина текста уже не релевантна.

                                                                                                                      Плюсы это отдельно. Мы про первый язык. Для обучения самым основным понятиям.
                                                                                                                      Плюсам тут не место. Немного самого простого сахара взять из них и хватит. Чтобы обучающиеся страдали поменьше.

                                                                                                                      PS Да и посмотрите на его собственное детище язык AWK.

                                                                                                                      Специализированный язык. Вроде sed. Что такого? Тогда еще было непонятно как такое должно выглядеть чтобы удобно было. Вот и делали все подряд. Не проверишь не узнаешь. Это мы сейчас опытные.
                                                                                                                        +1
                                                                                                                        и
                                                                                                                        #include <stdio.h>
                                                                                                                        typedef int apple;
                                                                                                                        typedef int orange;
                                                                                                                        apple    apple1 = 0;
                                                                                                                        orange  orange2 = 0;
                                                                                                                        
                                                                                                                        int main()
                                                                                                                        {
                                                                                                                        	apple1 = 1;
                                                                                                                        	orange2 =2;
                                                                                                                        	printf("%d\n",apple1+orange2);
                                                                                                                        return 0;
                                                                                                                        }

                                                                                                                        Все чего то стOит, и за всеми решениями есть компромиссы
                                                                                                                        У Ады типы строже, а компилятор тяжелее
                                                                                                                        С break вообще все сложно. Была сильная парадигма структурного программирования. Она и сегодня во многом релевантна. А break в нее не укладывался толком.
                                                                                                                          0
                                                                                                                          Ну право. Вы же прикапываетесь. Прямо в документации это написано. Синоним, ничего больше. Легко объяснить, легко понять, везде написано.
                                                                                                                          Ключевое слово typedef позволяет программисту создать псевдоним для любого типа данных и использовать его вместо фактического имени типа. Чтобы объявить typedef (использовать псевдоним типа) — используйте ключевое слово typedef вместе с типом данных, для которого создается псевдоним, а затем, собственно, сам псевдоним.


                                                                                                                          А вот в документации по Паскалю слова синоним не видно. Как понять без эксперимента что это именно так будет работать я не уверен.
                                                                                                                          Ссылок не даю. Где лежит правильная документация на которую не стыдно сослатьcя я не уверен.
                                                                                                                            0
                                                                                                                            #include <stdio.h>
                                                                                                                            enum apple{one, two};
                                                                                                                            enum  orange{four,five};
                                                                                                                            enum apple    apple1 = 0;
                                                                                                                            enum orange  orange2 = 0;
                                                                                                                            
                                                                                                                            int main()
                                                                                                                            {
                                                                                                                            	apple1 = 1;
                                                                                                                            	orange2 =2;
                                                                                                                            	printf("%d\n",apple1+orange2);
                                                                                                                            return 0;
                                                                                                                            }
                                                                                                                              0
                                                                                                                              Вы точно шутите.
                                                                                                                              Занудным голосом лектора: enum в Сях это не тип, это просто кучка именованных интов. Используется чтобы избежать магических цифр в коде.
                                                                                                                                0
                                                                                                                                #include <stdio.h>
                                                                                                                                enum apple{one, two};
                                                                                                                                enum  orange{four,five};
                                                                                                                                enum apple    apple1 = 0;
                                                                                                                                enum orange  orange2 = 0;
                                                                                                                                
                                                                                                                                int main()
                                                                                                                                {
                                                                                                                                	apple1 = 1;
                                                                                                                                	orange2 =200;
                                                                                                                                	printf("%f\n",1.0+2.0f+apple1+orange2+'b'+'a'+'n'+'a'+'n');
                                                                                                                                return 0;
                                                                                                                                }

                                                                                                                                я это к тому, претензия на смешивание типов к Паскалю от Брайана по меньшей мере забавна.
                                                                                                                              +2
                                                                                                                              «Документация по Паскалю» — это по какой версии? На сайте Freepascal прямо написано, что в примере выше вводится type alias, так что всё понятно.
                                                                                                                    0

                                                                                                                    Те, кто считает, что для того, чтобы научиться программировать, надо учить конкретные языки программирования, никогда программистами не станут. Язык — это не цель, а всего лишь инструмент. И изучать надо общие принципы работы с инструментами.

                                                                                                                      0
                                                                                                                      В чем-то Вы правы, но дьявол прячется в деталях.
                                                                                                                      +2
                                                                                                                      Да и просто новичков не хотим учить вымершему языку.

                                                                                                                      Тут Кобол никак похоронить не могут, а вы Паскаль в вымершие записали.

                                                                                                                        0
                                                                                                                        На кобол написано огромное количество кода, который все еще работает на проме.
                                                                                                                        А что написано на Паскале из того, что все еще активно используется?
                                                                                                                          0
                                                                                                                          Дельфи?
                                                                                                                          Больше чем на хаскеле, но меньше кобола:
                                                                                                                          pypl.github.io/PYPL.html
                                                                                                                            –1
                                                                                                                            А что «дельфи»? То, что написано на коболе, написано еще в прошлом веке. И продолжает работать (и будет продолжать еще долго) — банки и различные госслужбы структуры очень консервативные. Плюс стоимость перехода на что-то новое там исчисляется суммами со многими нулями.

                                                                                                                            А Дельфи, Паскаль? Сколько там время жизни приложения?

                                                                                                                            Вот сейчас в банке. У нас работает огромное количество кода, написанного лет 10 назад. И никто его не будет менять до тех пор, пока оно работает. Да, при необходимость вносятся изменения, доработки.

                                                                                                                            Правда, у нас не кобол, RPG. Он вполне себе живет и развивается (хотя узконишевый, платформа AS/400).
                                                                                                                            +1

                                                                                                                            На Паскале (точнее на Object Pascal, еще точнее на Delphi) написано огромное количество кода, который до сих пор используется и развивается. Лично знаю людей, которые занимаются не просто поддержкой такого кода, но и написанием нового.
                                                                                                                            Что еще интереснее, несмотря на среду разработки и диалект языка, далеко не весь код написан и пишется в парадигме ООП. Значительная часть — это просто старый добрый голый процедурный Паскаль (когда там в него юниты завезли?)
                                                                                                                            Более того, тот факт, что Embarcadero при наличии совершенно свободного (хотя и не столь продвинутого) конкурента (Free Pascal) пока не разорилась, продавая Delphi (не так уж и дешево, кстати, продавая), как бы намекает, что оно востребовано не только на уровне DIY.
                                                                                                                            Понятно, что язык стал весьма нишевым, но жив, и еще не подает признаков приближения смерти.

                                                                                                                          0
                                                                                                                          >У него плохой синтаксис.
                                                                                                                          Вот с этого места — и без вкусовщины. Сможете обосновать?
                                                                                                                            0
                                                                                                                            Мое мнение это так себе.
                                                                                                                            Вот мнение stackoverflow. Можно по соседним разделам тоже покликать.

                                                                                                                            Я ни Паскаля ни Делфи там не вижу. Хотя даже очень молодой Раст уже есть.
                                                                                                                              +1
                                                                                                                              Вообще-то я вас не об этом спрашивал. Вы сказали «у него плохой синтаксис», вы а не SO. Я не спрашивал о популярности (ваше мнение, что лучше учить живой язык я не то чтобы разделяю, но понимаю, и думаю что C реально популярнее паскаля).

                                                                                                                              Но можете ли вы аргументировать свое утверждение, что синтаксис паскаля плохой? Не для вас, а вообще? Потому что на мой взгляд, все подобные утверждения — чистая вкусовщина. Ну так, процентов на 90.
                                                                                                                                0
                                                                                                                                Ну а как еще без вкусовщины в таких вопросах?
                                                                                                                                Писать код можно? Да можно.
                                                                                                                                Нравится? Нет.
                                                                                                                                Со мной общество согласно? Согласно. SO подверждает.
                                                                                                                                Бизнес со мной согласен? Тоже согласен. SO подверждает.

                                                                                                                                Считаем что я прав. Синтаксис плохой. Был бы хороший на нем люди бы хотели писать или бизнес платил бы. А ни того ни того не происходит.

                                                                                                                                Есть некие остатки работ по поддержке легаси. Так они много на чем есть. Не критерий.
                                                                                                                                  0
                                                                                                                                  >Ну а как еще без вкусовщины в таких вопросах?
                                                                                                                                  Ну очень просто. Объективные показатели есть? Скажем, простота и эффективность парсера/компилятора (с этим у семейства C так себе обстоит). Не то чтобы они покрывали все аспекты, но попробовать сформулировать можно.

                                                                                                                                  >Считаем что я прав. Синтаксис плохой. Был бы хороший на нем люди бы хотели писать
                                                                                                                                  На мой взгляд, синтаксис в этом деле дело не то чтобы десятое, а скажем примерно пятое. Скажем, Java считается по синтаксису близким к C. Ну, насколько близки — это вопрос темный, но с другой стороны, не к паскалю же, верно? Если ли у них что-то общее в применении? Я бы сказал, что нифига — ниши разные. Популярны ли они за счет своего синтаксиса? Я бы тоже сказал, что нифига — популярны, но каждый по своему, за счет разных своих характеристик.
                                                                                                                                    0
                                                                                                                                    Ну очень просто. Объективные показатели есть? Скажем, простота и эффективность парсера/компилятора (с этим у семейства C так себе обстоит). Не то чтобы они покрывали все аспекты, но попробовать сформулировать можно.

                                                                                                                                    Вот на простоту парсера/компилятора всем глубоко пофиг. Их пишут специальные люди, которым это нравится. Массам все равно.

                                                                                                                                    Эффективность парсера/компилятора посчитанная в скорости сборки приложения уже важна. У плюсов с этим все очень плохо. Их в том числе за это не любят. Но для учебных целей это тоже не так важно. Проекты маленькие, собираются быстро в любом случае.

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

                                                                                                                                    Хороший синтаксис с точки зрения бизнеса это такой который позволяет эффективно писать код и доводить его до прода. Бизнес умеет считать деньги.
                                                                                                                                    Точка зрения разработчиков на язык тоже бизнесу важна. Если язык людям массово не нравится нанимать на него становится сложно. Это тоже потеря денег. Надо дольше искать, предлагать больше денег. Лишние траты.
                                                                                                                                    Попробуйте сейчас нанять Перл разработчиков. А кода в проде на нем море.

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

                                                                                                                                    Паскаль этот отбор не прошел. Хотя был сильнейший игрок на его стороне. Для своего времени Дельфи был великолепен. И все равно не пошел.
                                                                                                                      0

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

                                                                                                                      +3
                                                                                                                      Видеокурсы очень плохо усваиваются. Нужно больше практики, например на codewars.com или аналогичных сайтах.
                                                                                                                        –3
                                                                                                                        А как по мне, так довольно хорошо усваиваются. Но у меня ~5 лет программирования.
                                                                                                                        +12

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

                                                                                                                          +1
                                                                                                                          У меня вот с математикой плохо совсем. Даже с линейными уравнениями, типа kx+b. Тем не менее, программирование очень нравится и вроде неплохо получается (последние 12 лет). Так что зря вы так категорично :)
                                                                                                                            –1
                                                                                                                            Я даже не знаю, что такое квадратное уравнение. Четверть века вроде не мешало делать достаточно сложные вещи, но видимо надо послушаться мнения из интернета и срочно заняться чем-то другим.
                                                                                                                            +5
                                                                                                                            У меня такое чувство что я читаю свою историю только с другим набором параметров ;))
                                                                                                                            Тоже была пауза почти в 8 лет в ИТ, тоже работал админом… тоже некоторые разочарования в планах (точнее сроках) Только проблемы несколько иного порядка мне планы тормозят.

                                                                                                                            Коммерческим программистом (ready to relocalte) за 1,5 года стать мОжно, если есть какаято база, я в первые в жизни открыл питон в 2016 году устроившись работать сразу миддлом на питон-бекенд программиста. НО я до этого программированием увлекался как хобби с 97 года… писал на VB/C#/Java и работал около 5 лет 1C программистом в 2000х хотя у меня до сих пор возникают проблемы с собеседованиями (в РФ)
                                                                                                                            А в данном вопросе надо пройти собес так чтобы с опытом 1,5 года убедить работодателя тебя релоцировать...imho довольно непростое занятие

                                                                                                                            Но вот конкретно у меня проблемы были
                                                                                                                            1) с языком, я думал что довольно сносно знаю язык и надо «чуть подтянуть»… до первого звонка рекрутера из вакансии на Monster ;) а раскачать язык на уровень выше надо минимум полгода (и то это тоже при оптимитичном варианте)
                                                                                                                            2) Вопрос «решил через 1,5 года переехать в США» — это ооочень оптимистично, я в течении года прошерстил все миграционные особенности большинства «нормальных» стран и это далеко не такой простой и легкий путь как часто пишут на хабре (очень часто забывают упоминать очень важные детали, о типе визы, о работодателе, о наличии профильного образования, которые зачастую являются заградительными у многих стран)

                                                                                                                            ===
                                                                                                                            но вот знания теории (в плане какойто математики) на самом деле не так важны, важнее знать типовые вопросы на собеседованиях, остальное не так важно, всёравно большая часть работы это рутинные типовые сервисы где большинство этого не нужно
                                                                                                                              +4
                                                                                                                              Очень интересная статья! Я так понимаю, большая часть нынешних программистов все же
                                                                                                                              а) Нормально относилась в школе к математике за пределами таблицы умножения.
                                                                                                                              б) Закончила хотя бы пару курсов технического ВУЗа.
                                                                                                                              И им не понять истинных гуманитариев или естественников. То что кажется очевидным технократам в понимании Нила Стивенсона — как задачка про огораживание загона — для кого-то вовсе неочевидно.
                                                                                                                              Для сравнения и получения гм… сходных ощущений можно окунуться в биологию. У меня знакомая написала как-то популярную (в её понимании) статью по биологии.
                                                                                                                              Вот пример фразы: "… успех комбинации блокирования ингибирования PD-1 / PD-L1 с комплементарным ингибитором иммунной контрольной точки CTLA-4 при меланоме и немелкоклеточном раке легкого...". Я из всей статьи понимаю только отдельные слова.

                                                                                                                              Способность понять технический текст – привилегия. Она дается образованием, которое доступно лишь членам элиты. Вот какой смысл я вкладываю в слово «технократ». «Криптономикон» Нил Стивенсон
                                                                                                                                +1
                                                                                                                                Естественники сейчас тоже вынужденно окунаются в программирование (как и некоторые гуманитарии, вроде лингвистов). Вряд-ли много найдете молодых успешных естественников без знания азов питона/R. Впрочем, везде можно сачкануть.
                                                                                                                                По поводу цитаты, терминология — это не самая большая проблема. Имхо, сложнее сам подход к проблеме, аппарат науки и реальная деятельность. По-моему, расшифровать текст сравнительно несложно, если знать, что аббревиатуры — обычно белки (или другие конструкты) и загуглить некоторые термины (вроде «контрольной точки»). Скорее всего за месяц вдумчивого чтения, получится с лету понимать о чем речь. Другое дело, что в реальной лабе ничего не светит (кроме повторения банальностей), но вот и с программированием та же штука.
                                                                                                                                  0
                                                                                                                                  Надо будет спросить как у них с программированием. Так-то биоинформатика вполен существует как направление. Насчет терминологии — задумался… а ведь не всё так просто. Каждый термин — это объект со свойствам в смысле ООП и цепочкой связей.
                                                                                                                                  Что у меня всплывает в голове связанное с квадратным уравнением -коэффициенты… дискриминант… теорема Виета… кубическое уравнение сводится к квадратному… график — парабола… задача на экзамене по математике должна приводить к квадратному уравнению… производная — линейная функция, интеграл — кубическая… уравнение теплопроводности с источником… и т.д… И у биологов, очевидно, аналогично.
                                                                                                                                    0
                                                                                                                                    Во-всяком случае, мои знакомые, спешно учат, если еще/уже не. Например, друг перешел недавно с хим в программирование (после ~10 лет рисерча в универе, т.к. видимо достало, год учил питон/js + сопутствующие фреймворки). Кроме био/хим информатики в естественных еще полно статистиков и расчетчиков (обычно первое профильное образование, а потом программирование в разном виде), такие специалистов стараются удерживать (знакомый получил профессора после одного постдока, что очень круто, классическим естественникам сейчас практически такое не удается). Плюс тенденция, что «мокрые» исследователи завидуют «сухим». Такая вот позитивная дискриминация (зарплата + нормальные условия + большая уверенность в будущем). Тем более, после карантинов ситуация ускоряется, вот, к примеру заметка про это.
                                                                                                                                      +1
                                                                                                                                      У меня есть пара знакомых химиков-биологов и по их мнению программирование им надо. То есть им часто проще накидать маленькую программку для расчётов самим чем объяснять штатным программистам что от них требуется.

                                                                                                                                      Плюс оборудование у них вполне себе программируется уже давно. То есть такие вещи как PLC-программирование чуть ли не всем понимать надо. Что в лаборатории, что на производстве.
                                                                                                                                        0

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

                                                                                                                                          0
                                                                                                                                          Естественно это не индустриальное программирование. И естественно это всё на более «примитивном» уровне. И да, с какими-нибудь проблемами архитектуры им разбираться не надо. Но алгоритмы уже надо понимать. И от этого уже никуда не денешься даже в этих профессиях.
                                                                                                                                    +1
                                                                                                                                    Шо за наезд на естественников? Нормально у нас всё с матаном, дифурами и теорвером/статистикой.
                                                                                                                                      +1

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

                                                                                                                                    +13

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

                                                                                                                                      –2

                                                                                                                                      Не кодер, но всё же с чтением документации проблем обычно не возникает.


                                                                                                                                      Но не смотря на это, обычно выбираю видео, а не текст по многим причинам:
                                                                                                                                      1) Легче воспринимается
                                                                                                                                      2) Привычная единая площадка. Обычно это Ютуб или Khan academy
                                                                                                                                      3) В большинстве видео (да хоть по квадратным уравнениям) есть живые примеры и их решения
                                                                                                                                      4) Легче рассчитать время которое будет потрачено на ознакомление с материалом


                                                                                                                                      Но есть и недостатки, такие как:
                                                                                                                                      1) Высокая фрагментированность контента — найти полный глубокий видеокурс по некой теме сложнее, чаще всего это просто запись лекций. В книге по языку можно найти в одном месте и теорию и практику; различные темы структурированы и разбиты на главы.
                                                                                                                                      2) Может не быть подходящего видео, даже на английском языке. Тогда именно приходится читать, а не смотреть.


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

                                                                                                                                        +9
                                                                                                                                        1) Легче воспринимается

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


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

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

                                                                                                                                          0
                                                                                                                                          психологи говорят, что люди делятся в визуалов, аудиалов и т. п

                                                                                                                                          В таком случае мы, похоже, спорим о вкусе фломастеров

                                                                                                                                            0
                                                                                                                                            (Задумчиво)
                                                                                                                                            Знаете, я примерно всю жизнь: вернее, ту ее часть, в которой сталкивался, ненавидел обучающие ролики. И внезапно именно в программировании, области от меня достаточно удаленной, ролики начали заходить. Может быть, на просмотре ролика в сознании включаются те же механизмы, которые обрабатывают обычную оффлайновую лекцию?
                                                                                                                                              –2
                                                                                                                                              Я не защищаю видео-формат, но
                                                                                                                                              видео же идёт с какой-то заданной кем-то другим скоростью
                                                                                                                                              Скорость меняется легко, как угодно, разве нет? Можно по хоткеям скорость менять, можно сразу позицию выбирать, никаких проблем.
                                                                                                                                              перемотать ровно на пару предложений назад — тот ещё квест
                                                                                                                                              Если открыть скрипт субтитров (на youtube или на coursera), то можно сразу ткнуть куда нужно (кстати, это неплохой вариант, хотя конечно книжка все-равно выигрывает).
                                                                                                                                              психологи говорят, что люди делятся в визуалов, аудиалов и т. п
                                                                                                                                              Читал, что это полнейший бред, нет четкого деления.
                                                                                                                                              если же для вас работа с текстом некомфортна, то зачем же туда полезли
                                                                                                                                              Так он же не программист, он что-то другое по видео изучает, насколько я понял из первого предложения.

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

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


                                                                                                                                                Если открыть скрипт субтитров (на youtube или на coursera), то можно сразу ткнуть куда нужно

                                                                                                                                                спасибо, не знал, что на ютубе можно посмотреть список субтитров.
                                                                                                                                                это возражение снимается.


                                                                                                                                                Читал, что это полнейший бред, нет четкого деления.

                                                                                                                                                «нет чёткого деления» — да, как и на умных и глупых, например.
                                                                                                                                                «полная ернуда» — нет, конечно.


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

                                                                                                                                                фраза была обращена не только (не столько) к 1tuz

                                                                                                                                                  0
                                                                                                                                                  не как угодно, но меняется
                                                                                                                                                  Если именно онлайн, то существуют расширения (например github.com/igrigorik/videospeed, скорость от 0.1x до 16x). Оффлайн, как минимум vlc.
                                                                                                                                                  да, как и на умных и глупых, например.«полная ернуда» — нет, конечно
                                                                                                                                                  Деление на визуалов/аудиалов/кинестетиков (вак), это одна из многих теорий обучения, полно других, но почему-то именно идея вак всем запомнилась. Проблема в том, что те, кто предложили эту модель, еще постулировали, что со временем приоритет меняется и выравнивается, а еще то, что сила влияния какого-либо из факторов, который человек сам себе выбрал, часто не совпадает. И да, модель вак критикуют.
                                                                                                                                                    +1
                                                                                                                                                    Проблема не в том чтобы менять скорость, проблема в том чтобы она динамически менялась сама с учетом сложности материала. Например читаем вводные общие слова — глаза сами выхватывают строчки целиком и страницу можно за несколько секунд пробежать. Но вот натыкаемся на что то важное и нужное — скорость автоматически скидываем до комфортной. Потом видим что это все материал известный, автоматически не прикладывая усилий ускоряемся до комфортной скорости чтобы понимать о чем текст, но не вникать в детали, до следующего важного момента. На важном моменте снова сбрасываем скорость почти до нуля. Читаем приложение/абзац. Что то недопоняли — перечитываем еще медленнее. С паузами на подумать. Да руками такое просто невозможно с перемотками и изменением скорости воспроизведения. Не говоря уж о том что я давно заметил, видео я комфортно могу смотреть на 1.5х максимум, аудио слушать максимум на 2.5х. Книгу же, субъективно, могу до 20-30х ускорять если воды много.
                                                                                                                                                      0
                                                                                                                                                      Нельзя напрямую сравнивать видеоматериал и книги. 20-30х это не чтение, вы просто скользите по ненужному (в данный момент материалу). У книг известные (веками) плюсы, не нужно мне их объяснять. У видеоматериалов есть свои плюсы, я уже писал, что бывают люди с проблемами зрения, дислексики и т.д. Кроме того, у некоторых людей могли быть проблемы со слабой школой и они плохо воспринимают объяснение из книг (слабая база).
                                                                                                                                                      Слепые аудио слушают вообще на огромной скорости.
                                                                                                                                                      Честно, мне не понятен спор, я написал в начале, что не защищаю видео-формат, но высказанные претензии весьма надуманные. Я частенько смотрю лекции (не по программированию) в незнакомых областях или от топовых лекторов в своей области. Бывают лекторы, которые могут объяснить сложные вещи за минимальное время.
                                                                                                                                                      Критиковать с сильной позиции легко, но попробуйте стать «адвокатом дьявола» и непредвзято посмотрите 3 случайных видео из этого канала www.youtube.com/channel/UCYO_jab_esuFRV4b17AJtAw (есть начала линала, дифф и про нейросети) и напишите мне, что канал совершенно бесполезен для новичка.
                                                                                                                                                        0
                                                                                                                                                        Я смотрел как то с этого канала видео, если не ошибаюсь про уравнение логистической кривой. Но смотрел не с целью что то узнать, понять и изучить, а просто с целью убить время. Канал очень хороший, но, имхо, дело больше в проработке, потому что смотреть его интересно. Но уверен что в тексте изучить материал проработанный автором на таком же уровне было бы проще и быстрее.
                                                                                                                                                        Я в целом не против видео как формата, но в программировании (если это не касается программирования графики, анимаций и т.п., где нужно визуализировать какую то динамику) более естественным источником знаний мне видится текст.
                                                                                                                                                        З.Ы. Причем тут школа и слабая база я не очень понял. Я например в сельской школе учился, но предпочитаю текст.
                                                                                                                                                          0
                                                                                                                                                          Мне кажется мы с вами просто к этому привыкли и в принципе лучше воспринимаем текст. А «новое поколение» уже местами просто с текстами работать умеет хуже чем с видео/аудио.
                                                                                                                                                            0
                                                                                                                                                            Возможно, не знаю. Мне как то сложно себя с новым поколением не ассоциировать, пусть мне 28 лет уже. Хоть и понимаю что скачок был довольно сильный между родившимися в 90-х и в 00-х.
                                                                                                                                                              0
                                                                                                                                                              У нас есть несколько студентов-практикантов и им однозначно проще с видео. Я не понимаю почему, но проще. Но так вроде не тупые ребята и соображают.
                                                                                                                                                              0
                                                                                                                                                              «новое поколение» уже местами просто с текстами работать умеет хуже чем с видео/аудио

                                                                                                                                                              … но, ведь, исходники программ — это ТЕКСТЫ, а не видео!
                                                                                                                                                                0
                                                                                                                                                                С исходниками у них проблем нет. Но исходники и обычный текст для чтения это на мой взгляд немного разные вещи.
                                                                                                                                                                  –1

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

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

                                                                                                                                                                Если бы кто-то действительно хотел написать про минусы обучения при помощи видео, то (имхо) начинать нужно было с другого. Как минимум с того, что
                                                                                                                                                                1. рандомные видео в youtube обычно это не полноценный курс
                                                                                                                                                                2. сделаны неизвестно кем (не знаю правда или нет, но рассказывали, что встречаются люди, которые делают видео, но не способные пройти рабочее собеседование по теме своих роликов)
                                                                                                                                                                3. видеокурсы не прошли проверку рецензентами и наверняка содержат ошибки (комментарии не спасают)
                                                                                                                                                                4. материалы не прошли проверку временем, нет людей, которые бы сказали, что изучили предмет только по видео
                                                                                                                                                                5. как правило нет практических заданий (в книгах обычно есть)
                                                                                                                                                                6. копировать примеры неудобно, официальные мануалы удобнее (и как правило лишены ошибок)
                                                                                                                                                                7. Не являются стандартом в преподавании предмета, сложно ссылаться на видеокурс.

                                                                                                                                                                Имхо, видеолекции от известных универов (например, MIT OpenCourseWare) или интервью смотреть ок (+ можно почитать сначала обсуждение/критику курсов на каком-нибудь ycombinator). Учиться только на видеокурсах, вероятно, не стоит. Повторять известное и смотреть как подан материал вполне нормально.

                                                                                                                                                                в сельской школе учился
                                                                                                                                                                Сельские школы не обязательно слабые. У меня друг тоже из маленькой сельской школы, так у него подготовка намного лучше моей пгт'вской (у меня в классе были люди, которые читать нормально не могли, не то, что в математику думать, впрочем сами не учились). Это уже частности, впрочем.
                                                                                                                                                        0
                                                                                                                                                        > перемотать ровно на пару предложений назад — тот ещё квест
                                                                                                                                                        
                                                                                                                                                        Если открыть скрипт субтитров (на youtube или на coursera), то можно сразу ткнуть куда нужно (кстати, это неплохой вариант, хотя конечно книжка все-равно выигрывает).

                                                                                                                                                        А как это сделать на ютубе? Я вижу как включить субтитры, и как их выбрать или настроить, но где посмотреть весь скрипт и куда там можно "ткнуть" в упор не вижу.

                                                                                                                                                          0
                                                                                                                                                          Странно, если есть субтитры, то и транскрипт должен быть. Попробуйте так:
                                                                                                                                                          скрины
                                                                                                                                                          В описании видео нажать многоточие:

                                                                                                                                                          дальше нажать open transcript

                                                                                                                                                          справа должен открыться транскрипт (как на скриншоте).

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


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

                                                                                                                                                        Видео такое не позволяет. Там долго и нудно рассказываются какие-то частности они продолжают разжевываться (видимо, ориентируясь на совсем непроходимых) даже когда уже все понятно.

                                                                                                                                                        Кстати, про оффлайновые лекции. Не знаю как сейчас, а когда (и там где) я учился, лекции практически никогда на не строились на одном учебнике. И сдать курс только по конспектам можно было на слабенькую троечку в лучшем случае. Всегда давался список литературы и подразумевалось, что конспект лекции это всего лишь план для работы с этой литературой.
                                                                                                                                                          0
                                                                                                                                                          Ютуб слегка ослабляет проблему со скоростью: скорость видео можно изменить.
                                                                                                                                                          К тому же иногда скорость передачи информации определённого канала подходит изначально.
                                                                                                                                                          В качестве основного источника информации такие видео врядли подходят, но вот для расширения кругозора — почему бы нет? (Примерно как чтение хабра)
                                                                                                                                                          +3
                                                                                                                                                          Я понимаю, что есть тип информации, который проще воспринять через видео. В первую очередь это, например, что-нибудь типа уроков по Фотошопу, где проще увидеть, куда там мышью тыкают и какие конкретно кнопки нажимают. Но всё остальное как-то странно; я не вижу ни одной причины, почему квадратное уравнение на видео должны объяснять на других примерах нежели в книжке. Ну и аналогичным образом мне сложно понять, почему поиск по фразе «квадратное уравнение» должен приводить к нужному контенту на видео, а не в тексте, т.е. чем поиск проще.

                                                                                                                                                          В целом мне кажется, тут есть ещё и более глобальная проблема. Да, можно сводить дискуссию к теме «кому что удобнее», но по факту по целому ряду причин среднестатистическое видео содержит информацию менее высокого качества, нежели текст. Если речь не идёт о чём-то совсем уж научно-популярном, конечно.
                                                                                                                                                            0
                                                                                                                                                            но по факту по целому ряду причин среднестатистическое видео содержит информацию менее высокого качества, нежели текст
                                                                                                                                                            Однако Coursera и прочие ведь нормально заходит, и не только из-за проверки заданий. Приходится смотреть видео потому, что там легче найти понятную поверхностную информацию (когда этого достаточно).
                                                                                                                                                            Хотя легкодоступный текст лучше такого же видео. Просто почему-то их реже делают. Если писать, так глубоко и обо всём, и в итоге нужно потратить время. А обучающие видео всегда делают с упором на доступность (и иногда даже получается), и время нормировано. Но квадратных уравнений и прочего базового материала это не касается, слишком долго смотреть видео про единственный кирпичик знаний, к тому же если не смотреть цельный курс, то эффективность подачи сильно падает.
                                                                                                                                                              +1
                                                                                                                                                              Да, Курсера — это не «среднестатистическое видео», это по сути некий отдельный продукт. У университета есть устоявшийся курс — с лекциями, заданиями и т.п., и они его выкладывают в онлайн. Т.е. это не совсем «видео», это скорее «виртуальное присутствие» на занятиях. Такого качества работ немного — требуется большую работу провести.
                                                                                                                                                            +5
                                                                                                                                                            1) Легче воспринимается

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


                                                                                                                                                            2) Привычная единая площадка. Обычно это Ютуб или Khan academy

                                                                                                                                                            А какая разница, какая площадка?


                                                                                                                                                            3) В большинстве видео (да хоть по квадратным уравнениям) есть живые примеры и их решения

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


                                                                                                                                                            4) Легче рассчитать время которое будет потрачено на ознакомление с материалом

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


                                                                                                                                                            чаще всего это просто запись лекций.

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

                                                                                                                                                            0

                                                                                                                                                            Заметьте, в технических вузах вам лектор ведет лекцию, а не выдают книгу со словами — учите. Лично мне, тяжело дается чтение. По моим ощущениям лекция/видеоурок раз 5 эффективнее чем чтение документации. Естественно, без документации никак и гугл наше все. Когда тебе нужно не всю тему понять, а лишь ньюансы — документация лучшее средство, но когда нужно с нуля что-то освоить, то эффективность преподавателя заметно выше.

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

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

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


                                                                                                                                                            Так как мы говорим о навыке, то потребуется немалое время для его выработки (сколько времени нужно чтобы получить разряд по боксу?). Новые нейронные связи не быстро формируются. Хорошая новость заключается в том, что навык можно набивать практикой и одновременно читать и разбираться в языках, платформах, сетях, БД, железе и т.д. Не знаю сколько времени уйдёт до достижения «нанимаемого» уровня, но я бы готовился к 6-18 месяцам довольно интенсивной работы по несколько часов в день.

                                                                                                                                                              +1

                                                                                                                                                              Странно что сразу программистом и переезд. Может сначала хотя бы устроиться "джуном" на полгодика тут? Это помогло бы "быстро въехать".
                                                                                                                                                              IT конечно та ещё кроличья нора.

                                                                                                                                                                +4
                                                                                                                                                                Я долго вникал почему 0 в степени 0 равен 1, и у меня ощущение что я до конца так и не понял всей сути.

                                                                                                                                                                это хорошо, что не поняли.


                                                                                                                                                                википедия:


                                                                                                                                                                Выражение 0⁰ (ноль в нулевой степени) многие учебники считают неопределённым и лишённым смысла

                                                                                                                                                                впрочем, не обижайтесь, но бессмысленно рассуждать о 0⁰ человеку, который не знает/понимает производных.


                                                                                                                                                                по остальному… боюсь вас обидеть, но как-то слишком сложно у вас всё заходит. того же k&r я читал подростком и я был поражён изящностью и … какое слово подобрать? очевидностью? … выбранных решений. это одна из немногих вещей, которые не нужно учить, а нужно понять и оно навсегда останется в памяти.


                                                                                                                                                                выражение типа N=N+1 и более сложные уравнения меня загоняли в легкий ступор.

                                                                                                                                                                если спустя несколько лет в IT вы говорите такое, программирование — не ваше.
                                                                                                                                                                btw, а как же вы админили? я не представляю админства без скриптов, и выражения вроде N=$((N+1)) вполне обыденны.
                                                                                                                                                                ИМХО чтобы стать хорошим специалистом в любой области нужно гореть, интересоваться этой темой. сколько вам лет? судя по ребёнку, к которому ходит репетитор, не так уж и мало. если вы к этому возрасту не проявили склонности к программированию, то почему сейчас что-то должно измениться?


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

                                                                                                                                                                  0

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

                                                                                                                                                                    0

                                                                                                                                                                    А еще адекватный взрослый человек должен прекрасно понимать, что никому "там" он не нужен без профильного образования, опыта работы, рекомендаций, портфолио (не обязательно все пункты сразу). Ну и ещё момент: очень сложно вот так вот взять и кардинально поменять свою жизнь, когда в ней столько якорей. Это я если что про ребенка, который уже с репетитором занимается. Так что согласен с вами, статья с большой долей вероятности ничего общего с действительностью не имеет.

                                                                                                                                                                      +2
                                                                                                                                                                      В ИТ сейчас столько денег…
                                                                                                                                                                      Ломанулись толпы которые программировать не любят и не хотят, но хотят денег.
                                                                                                                                                                      Смотришь количество курсов «Стань фронтэндером за 30 дней и зарабатывай 100к+» и офигеваешь.

                                                                                                                                                                      Статья на Хабре это неплохая строчка в резюме.
                                                                                                                                                                        +1
                                                                                                                                                                        Статья на Хабре это неплохая строчка в резюме.

                                                                                                                                                                        У Вас какое-то предвзятое мнение. Лично мне строчка в резюме о «статье на хабре» ни о чем не говорит. Тем более все-таки не научная же статья была написана. Возможно она имела бы значение для публицистов, журналистов и т.д.
                                                                                                                                                                          0
                                                                                                                                                                          Ломанулись толпы которые программировать не любят и не хотят, но хотят денег.
                                                                                                                                                                          Многие работают только ради денег, и вполне рационально поступают. Я тоже так делаю. А развлечения по интересам — по вечерам.
                                                                                                                                                                            +3
                                                                                                                                                                            Ну это как бы моё ИМХО и на истину в последней инстанции я не претендую. Но на мой взгляд если работать исключительно ради денег и не получать от работы никакого удовольствия то с большой вероятностью это рано или поздно приведёт к выгоранию. По крайней мере если мы говорим о умственном труде, а не о физическом.
                                                                                                                                                                              0
                                                                                                                                                                              Выгорание — это если плохо отдыхать. Вечером и на выходных можно заниматься более интересными вещами и так компенсировать унылость основной работы.
                                                                                                                                                                              и не получать от работы никакого удовольствия
                                                                                                                                                                              Хотя зря вы так фривольно с квантификаторами всеобщности. В любом упорядоченном труде находишь хоть какое-удовольствие, в том числе и интеллектуальное. Вопрос в том, что днём рутинно копаешь картошку клепаешь апишки, тестишь и фиксишь баги за деньги, а вечером нагружаешь мозг чем-то более вызывающим и разнообразным.
                                                                                                                                                                          0
                                                                                                                                                                          очень сложно вот так вот взять и кардинально поменять свою жизнь, когда в ней столько якорей. Это я если что про ребенка...

                                                                                                                                                                          В моем случае наоборот. Ребенок является мощной мотивацией к действиям. Думаю это все индивидуально у всех.
                                                                                                                                                                          0
                                                                                                                                                                          откуда он узнал про хабр? тут нет видеороликов. как решил сам писать статьи?

                                                                                                                                                                          А что именно смутило то?
                                                                                                                                                                          Про хабр знают многие, более-менее связанные с IT. Это же не закрытый клуб единомышленников :)
                                                                                                                                                                          Решение о написании статьи было принято исходя из соображении, что на данном ресурсе и сконцентрированы в основном — developer-ы, которые могут дать дельные рекомендации и советы по исправлению багов в моем плане и подходе к изучению програмирования.
                                                                                                                                                                            +1

                                                                                                                                                                            про хабр — это один из моментов только.
                                                                                                                                                                            0⁰, N=N+1, список упомянутых технологий, да много всего. у меня всё более устойчивое ощущение, что статья фейковая.

                                                                                                                                                                          +1
                                                                                                                                                                          почему вы решили стать программистом? из-за зарплаты? так нейрохирурги или дантисты получают не меньше. адвокаты, думаю, много больше

                                                                                                                                                                          Самое начало же топика, предыстория вопроса дана текстом. Нейрохирурги и дантисты требуют 1. мед.диплома, 2. хорошей практики 3. невероятно прямых рук 4. высокой стрессоустойчивости 5. высокий уровень ответственности 6. конкуренция не обязательно ниже 7. хирургия требует некоторой доли таланта и т.д.
                                                                                                                                                                          Пошли бы вы к специалисту, который переучился в нейрохирурги из админов после 25 лет?
                                                                                                                                                                            0
                                                                                                                                                                            Возьмёте к себе в больницу, на систему хранения DICOM (PACS вроде называется) сканов больных, сисадмина который переучился после 25 лет работы хирургом?
                                                                                                                                                                              +1
                                                                                                                                                                              Нет, но в теории (очень натянутой теории) я думаю, что хирург мог параллельно админить (вместе с работой). А вот админ, который параллельно ходит в анатомичку и еще делает операции, меня бы немного испугал.

                                                                                                                                                                              PS. Я имел в виду возраст (25), а не стаж. Если у хирурга 25 лет стажа, то ему очень очень много лет:
                                                                                                                                                                              где-то 50, если не напутал
                                                                                                                                                                                0
                                                                                                                                                                                Ну пусть будет возраст. Я бы обоих испугался. Важна не должность и даже не профессия, а цена ошибки. Если она велика, то всегда лучше перебдеть, чем недобдеть. И цена может быть весьма высока, как у доктора, так и у программиста. А может быть и не очень. Только не для клиента. Вон посмотрите на адвокатов. Они как в том анекдоте по предсказанию пола младенца за деньги. Если не угадали, то деньги вернём.
                                                                                                                                                                                  0
                                                                                                                                                                                  Но есть куча работы для программиста где цена ошибки не так уж и велика. А вот для нейрохирурга такой работы мало, если она вообще есть.
                                                                                                                                                                              +1
                                                                                                                                                                              Нейрохирурги и дантисты требуют 1. мед.диплома, 2. хорошей практики 3. невероятно прямых рук 4. высокой стрессоустойчивости 5. высокий уровень ответственности 6. конкуренция не обязательно ниже 7. хирургия требует некоторой доли таланта и т.д.

                                                                                                                                                                              1. без диплома по специальности получить программисту рабочую визу в США реально?
                                                                                                                                                                              2. как и программирование;
                                                                                                                                                                              7. как и программирование.


                                                                                                                                                                              Пошли бы вы к специалисту, который переучился в нейрохирурги из админов после 25 лет?

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


                                                                                                                                                                              впрочем, речь-то была совсем не про это. почему-то то, что стать нейрохирургом сложно, понимают все.
                                                                                                                                                                              но вот вот автор статьи (если это не фейк, в чём я сомневаюсь) решил стать программистом без каких-либо предпосылок к этому за пару месяцев просмотра видеороликов на досуге. притом не просто джуном, а получить приглашение на релокацию в США.

                                                                                                                                                                                +1
                                                                                                                                                                                1.
                                                                                                                                                                                программисту рабочую визу в США реально

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

                                                                                                                                                                                PS. Коммент, изменился, поэтому добавлю:
                                                                                                                                                                                почему-то то, что стать нейрохирургом сложно, понимают все но вот вот автор статьи (если это не фейк, в чём я сомневаюсь) решил стать программистом
                                                                                                                                                                                Ну это же желание стать, не факт что получится. Может и фейк, раз «НЕ» в заголовке. Зарплаты, наверное, привлекают и примеры (которыми наводнена сеть). Это ведь практически единственный шанс для обычного человека получить неплохую зарплату умом и упорством.
                                                                                                                                                                                С медиками есть еще другие сложности (долго и дорого учиться по сравнению с другими специальностями; низкий уровень обучения в медвузах; медицина сильно бюрократизирована; непотизм и взятки). Адвокатов просто много.
                                                                                                                                                                                Впрочем я понял ваш посыл. Со временем, скорее всего, интерес «вайти» пропадет.
                                                                                                                                                                              –1
                                                                                                                                                                              btw, а как же вы админили? я не представляю админства без скриптов, и выражения вроде N=$((N+1)) вполне обыденны.

                                                                                                                                                                              Как-то так и админили, без скриптов. В основнов обходились стандартными средствами Windows, ну или сторонними приложениями. Максимум что делали, простенькие bat-файлы писали, для бекапов например.
                                                                                                                                                                              Видимо задач таких не было, чтобы использовать скрипты по полной…
                                                                                                                                                                                0
                                                                                                                                                                                если вы к этому возрасту не проявили склонности к программированию, то почему сейчас что-то должно измениться?

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

                                                                                                                                                                                Как бы зарплата тоже имеет определенный вес. Однако больше исхожу из понимания что в IT сфере у меня есть определенный background, ну а developer-ом, т.к. входной порог на зарубежный рынок будет намного проще, нежели например sales-ом.
                                                                                                                                                                                Я как-то себе не представляю возможным переезжать и обучиться ради этого, например на нефтяника или врача.
                                                                                                                                                                                  +1
                                                                                                                                                                                  в IT сфере у меня есть определенный background

                                                                                                                                                                                  и


                                                                                                                                                                                  выражение типа N=N+1 и более сложные уравнения меня загоняли в легкий ступор

                                                                                                                                                                                  не вяжутся друг с другом, извините.

                                                                                                                                                                                +4
                                                                                                                                                                                Честно, после прочтения статьи напомнило мне видео Коваленко Клима, где затрагивается похожая тема. «Подход к обучению (программирование, математика). Математическая тревожность» — www.youtube.com/watch?v=9Dc-dWS6ldQ&list=WL&index=22&t=1. Чтобы изучить одно, необходимо углубиться во второе, затем в третье, четвёртое и т.д., пока не достигнешь твёрдого основания и не начнёшь подыматься выше. Этот путь подойдёт тем, кому нравится всё это изучать, у кого неограниченный запас времени и кто хочет иметь очень сильную базу, чтобы потом с лёгкостью решать любые задачи. Это путь для избранных.

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

                                                                                                                                                                                Многие вещи проще заказать у других людей, чем пытаться сделать самому. Чтобы сделать бутерброд с ветчиной, мне надо лишь купить ингредиенты в магазине, т.е. мне не надо тратить время, чтобы покупать зерно, выращивать его, обрабатывать, покупать печь, сделать там хлеб, вырастить свинью, добыть и обработать её мясо и т.д. Я просто покупаю ингредиенты в магазине и получаю нужный результат. Если я захочу углубиться, я начну экспериментировать с хлебом, толщиной нарезки, добавлять\убирать сыр, менять овощи, а не уходить в селекцию семян зерна, выбор плодородной почты и качественных удобрений.

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

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

                                                                                                                                                                                    +2
                                                                                                                                                                                    Такой шеф-повар это уже довольно высокая ступень.
                                                                                                                                                                                    Повар-технолог обычной столовой всё-таки таким не заморачивается. И эта квалификация эквивалент отнюдь не джуна. Джунами и мидлами можно считать поваров 2-4 разрядов, которые не разрабатывают рецептуру.
                                                                                                                                                                                      0
                                                                                                                                                                                      Повар-технолог обычной столовой всё-таки таким не заморачивается

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


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


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


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

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

                                                                                                                                                                                    У "Thinking in Java" ("Философия Java") было аж целых три издания, так вот первое — как раз вполне для новичков. В следующих напихали больше конкретных технологий. Не знаю, правда, есть ли у 1-го официальный русский перевод.


                                                                                                                                                                                    P.S. А, нет — даже уже четыре.

                                                                                                                                                                                      +2
                                                                                                                                                                                      Аналогичная ситуация. Только я давно понял, что я гуманитарий. И лишен начисто математического мышления. Я чистый визуал. Могу врубиться с полпинка во все что вижу глазьми. А вот с формулами всякими высокими прям беда. И что интересно, кодить на различных ассемблерах мне в кайф и получается, потому что я сразу вижу результат, воплощенный в устройстве. Я знаю что код будет делать с железом, а вот какой-то веб девелопмент просто не идет и все… А вот мой брат, например, давно старший разраб, пилящий для мастер кард и виза систем всякое, руками вообще ничего сделать не может, просто не соображает так же как и я в жабе, например. Ищите себя и обрящете.
                                                                                                                                                                                        +1
                                                                                                                                                                                        Быстро переключился на Java без сожаления… Правда не определился с чего стартануть будет лучше, с Java либо JS, ну да ладно, думал походу разберусь. На форумах где-то читал, что с JS войти в мир разработки намного легче и быстрее

                                                                                                                                                                                        Вы понимаете, что это разные языки программирования и знания Java не релевантны Javascript?
                                                                                                                                                                                          +1
                                                                                                                                                                                          Можно же начать со Scratch, а потом перейти на MIT App Inventor — т.е. научиться программировать с помощью графических блоков. Когда станет ясно что такое циклы, ветвления, переменные, функции, события, можно будет перейти уже и к текстовому языку программирования.
                                                                                                                                                                                            +4
                                                                                                                                                                                            Как уже многие до меня заметили: Вы слишком распыляетесь, оставьте «магию нижних уровней» на потом и, если понадобится, почитаете, поизучаете — говорю, как человек, который не имеет технического образования, изучивший за пару месяцев базис Java сам, после прошедший специализированный полугодовой курс и устроившийся месяц назад после второго собеседования на работу Java разработчиком.
                                                                                                                                                                                            Удачи, не сдавайтесь, немного терпения и упорства (много) и у Вас все получится!
                                                                                                                                                                                              0
                                                                                                                                                                                              Благодарю.
                                                                                                                                                                                              0

                                                                                                                                                                                              Аааарррр Java и Js разные языки

                                                                                                                                                                                                0

                                                                                                                                                                                                Может быть программирование просто не ваше? Может быть не стоит себя мучатт, если не идёт?

                                                                                                                                                                                                  +2
                                                                                                                                                                                                  Не изучайте «вообще», это как «я изучу физику». Возьмите конкретную, посильную задачу, и изучите для нее. Например, несложную игру. Пятнашки или крестики-нолики напишите.
                                                                                                                                                                                                    +2
                                                                                                                                                                                                    Первое с чего нужно начинать изучать программирование, это ЧЕТКО ответить для себя на вопрос — что именно вы хотите научиться делать. И уже в зависимости от поставленной цели решать, какие знания вам могут понадобиться. Скорее всего вы сразу не сможете найти то что вам нравится, но процесс поиска должен протекать так: решили попробовать какую-то область программирования которая вам приглянулась, постарайтесь четко очертить для себя её границы, определите какие знания она требует и вперед. В процессе поняли что не нравится? Ок, пробуем другое направление по тому же приницпу.
                                                                                                                                                                                                    Второе — чтобы научиться программировать надо… программировать. Внезапно, правда? Надо постоянно решать задачи и реализовывать их в коде. От элементарного, до сложного. Тут важно понимать — пытаться разобраться в механизмах и принципах работы той или иной технологии до той степени, до которой это требует решаемая задача.
                                                                                                                                                                                                    Третье, касательно теории и прочного фундамента — тут нужна хорошо составленная программа, освоив которую вы научитесь решать типовые задачи и у вас будет достаточное представление касательно смежных областей знаний и их взаимосвязи с программированием, чтобы уже самостоятельно заниматься углубленным изучением интересующих вас областей в интересующем вас направлении.
                                                                                                                                                                                                    Четвертое — первый и второй пункт важнее третьего.
                                                                                                                                                                                                      0
                                                                                                                                                                                                      Решение то получил, однако понять, как преподаватель решила не смог:
                                                                                                                                                                                                      Например так:
                                                                                                                                                                                                      Wolfram
                                                                                                                                                                                                      Алгоритм, построенный мной для изучения программирования, дал сбой практически в самом начале.
                                                                                                                                                                                                      Возможно потому, что стоило ставить конкретные цели? Хотя бы лабораторные работы из университета по джаве. Они очень простые.

                                                                                                                                                                                                      Я не то что не помню, как решаются такие задачи, — я элементарно, как выяснилось, попросту не знаю Алгебру за 10-11 класс!
                                                                                                                                                                                                      Ммм нет, эта задача 7 класса.

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

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

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


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

                                                                                                                                                                                                          0
                                                                                                                                                                                                          Скорее задачей с 2 звёздочками. Где я учился на отлично нужно было их решать.
                                                                                                                                                                                                            0

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

                                                                                                                                                                                                              0
                                                                                                                                                                                                              В параболу проходят и в 7 классе. А свойства симметрии достаточно для нахождения вершины. Корни же при 0 в явном виде есть в уравнении(да и догадаться когда площадь прямоугольника равна нулю можно).

                                                                                                                                                                                                              Вдобавок можно нарисовать график и по нему найти. И метод перебора ещё есть.
                                                                                                                                                                                                          0

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

                                                                                                                                                                                                            0
                                                                                                                                                                                                            Вот например:
                                                                                                                                                                                                            mathematics-tests.com/algebra-7-klass-novoe/kontrolnye-raboty-novye/mordkovich-novoe
                                                                                                                                                                                                            Максимум линейной функции.
                                                                                                                                                                                                            Максимум параболы в 7 классе был. Так что вполне решаемо.
                                                                                                                                                                                                              0

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

                                                                                                                                                                                                                0
                                                                                                                                                                                                                Среднее из 2 корней это координаты максимума. Это прямо следует из написанного по ссылке.
                                                                                                                                                                                                                  0
                                                                                                                                                                                                                  Спасибо! Видимо я прогулял этот урок (четверть).
                                                                                                                                                                                                            +1
                                                                                                                                                                                                            Ммм нет, эта задача 7 класса.

                                                                                                                                                                                                            Программиста сразу видно по тому, что он считает с нуля :)
                                                                                                                                                                                                            (тоже думал, что седьмой, но оказался всё же восьмой https://www.yaklass.ru/p/algebra/8-klass/kvadratichnaia-funktciia-funktciia-y-k-x-11012/funktciia-y-ax-bx-c-ee-svoistva-i-grafik-9108/re-92d9d602-f9c6-43f6-8f78-6f80b2c8227a)

                                                                                                                                                                                                                0
                                                                                                                                                                                                                В этом материале для 7-го класса не рассматривается аналитическое нахождение максимума обобщённой квадратичной функции.
                                                                                                                                                                                                                По предыдущей ссылке для 8 класса для максимума даётся вывод из производной квадратичной функции как факт, без упоминания его получения. Я думаю, что это довольно мусорное оторванное от всего знание. Хотя я не помню, может эту формулу можно иначе получить, но ad hoc для взрослого возраста из школы всё же нужно что-то более тупое, как производные (достаточно просто знать, что это такое).
                                                                                                                                                                                                                  0
                                                                                                                                                                                                                  Если есть 2 корня, то очевидно где максимум, парабола же симметричная. Тут ненужно общее решение, достаточно частного.
                                                                                                                                                                                                                    0
                                                                                                                                                                                                                    Эта идея мне не пришла сразу в голову. У всех разная смекалка. Знание математики уравнивает разные умы.
                                                                                                                                                                                                                      0
                                                                                                                                                                                                                      Неа, не уравнивает. Туже задачу забора мне решит вольфрам, потому что я догадался его использовать, а математик её будет решать.
                                                                                                                                                                                                                        0

                                                                                                                                                                                                                        ой ли. многие математики активно используют подобный софт.

                                                                                                                                                                                                                          0
                                                                                                                                                                                                                          А попадете на «необитаемый остров» (в ситуацию, где нужно решить задачу, а вольфрама нет)? И что?
                                                                                                                                                                                                                          Поверьте, сталкивался не раз с ситуацией:

                                                                                                                                                                                                                          — Нужно решить вот эту задачу
                                                                                                                                                                                                                          — Она не решаемая
                                                                                                                                                                                                                          — Почему?
                                                                                                                                                                                                                          — В этом фреймворке нет компонента для ее решения

                                                                                                                                                                                                                          Все. Полный аут.
                                                                                                                                                                                                                            –1
                                                                                                                                                                                                                            И где же на необитаемом острове мне может понадобится математика? Кокосы считать что ли?
                                                                                                                                                                                                                              0

                                                                                                                                                                                                                              Да где угодно. Вот вы строите загон для животных (Робинзон что-то подобное делал) — какой толщины должны быть ветки? Какая должна быть высота забора? Как прочно надо приматывать? Итд итп…
                                                                                                                                                                                                                              (Да, это физика, но выливается снова в математику)


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

                                                                                                                                                                                                                                0
                                                                                                                                                                                                                                (Да, это физика, но выливается снова в математику)

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

                                                                                                                                                                                                                                Оно то понятно что там в основе математика лежит, только это все делается имперически, а не расчетами
                                                                                                                                                                                                                              +1

                                                                                                                                                                                                                              Почему сразу аут? Человек знает возможности инструмента и адекватно оценивает свои силы.
                                                                                                                                                                                                                              Нужно дополнительные вопросы задавать:


                                                                                                                                                                                                                              • В каком фреймворке есть такой компонент?
                                                                                                                                                                                                                              • Сколько будет стоить допиливание фреймворка для решения этой задачи?

                                                                                                                                                                                                                              В общем то тащить несколько фреймворков в один проект тоже плохая идея, поэтому неплохо задать вопрос:


                                                                                                                                                                                                                              • Как можно изменить задачу, чтобы она ложилась на фреймворк?
                                                                                                                                                                                                                                +1
                                                                                                                                                                                                                                Изменить задачу мы не можем — есть задание на разработку от бизнеса, мы его реализуем.
                                                                                                                                                                                                                                Что значит «адекватно оценивает свои силы»? Если ты не можешь написать нужный алгоритм сам, а можешь только использовать готовые реализации, тебе нужно поискать другое место работы. Там, где от тебя не будут требовать «невозможного».

                                                                                                                                                                                                                                Ну вот из старого пример. Была разработка некоего многопоточного приложения и в нем был нужен индикатор относительной загрузки потоков плюс флаг что поток подвис и его надо перезапустить. Писалось все это на CBuilder. Разработчик утверждал что это невозможно потому что таких средств нет в VCL. Пришлось ткнуть человека носом в MSDN, где есть функции, возвращающие количество тактов процессора, использованные кодом потока внутри процесса и кодом всего процесс в целом. Т.е. надо было просто выйти за рамки VCL и написать небольшой кусок кода на WinAPI.

                                                                                                                                                                                                                                Из текущего. Взяли нового разработчика. Говорит, что писал на питоне, есть опыт разработки, вроде как все круто. Прошел год и видно, что ничего не умеет, кроме как дергать готовые функции из библиотек.
                                                                                                                                                                                                                                Питона у нас нет. Есть RPG? C/C++, CL (еще есть COBOL, но не пользуемся). Есть своя кодовая база, но многие вещи нужно просто реализовывать самому. С человеком сплошные проблемы — «а это как сделать, а тут что писать?» Ну почитай документацию, погугли, включи, наконец, мозг. Ничего сверхестетсвенного не требуется. Задачки тривиальные на уровне исключить дубли, отсортировать в нужном порядке и т.п…
                                                                                                                                                                                                                                  0
                                                                                                                                                                                                                                  есть задание на разработку от бизнеса, мы его реализуем.

                                                                                                                                                                                                                                  У вас бизнес никогда не просил дичь, которую в постановке бизнеса просто нецелесообразно делать?


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


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


                                                                                                                                                                                                                                  Тут с вашей стороны косяк. Зачем вы брали нового разработчика, который "писал на питоне", и давали задачи по всяким другим языкам?

                                                                                                                                                                                                                                    0
                                                                                                                                                                                                                                    Все задания на разработку (BRD) проходят стадию согласования. И отказать в согласовании на основании того, что «Вася не знает как это сделать» — это бред.

                                                                                                                                                                                                                                    Найти готового разработчика под платформу AS/400 (IBM i) в РФ малореально — их очень мало. Поэтому берется человек и обучается. И это декларируется «на берегу», еще на собеседовании все честно рассказывают. Если согласился — значит принял правила игры. И подразумевается что разработчик не просто лепит задачу из кирпичиков, но еще и делает что-то сам. В том числе и думает о том, какое решение выбрать для получения максимальной эффективности (это вообще краеугольный камень нашей разработки). И действует самостоятельно, а не бежит чуть что к соседу с вопросами «а это как сделать?» (это допустимо на начальном этапе обучения, но не спустя год работы).

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

                                                                                                                                                                                                                                    Вот у меня сейчас большая задача в работе (примерно под мегабайт только написанного кода, без описаний таблиц, индексов и всяких настроечных скриптов). 33 таблицы, 54 индекса. Суть в том, что извне (через MQ) приходит некоторая информация в XML (достаточно наворочнные — минимум три варианта форматов, внутри списки, вложенные структуры и т.п.). Все это нужно разобрать, разложить по таблицам (с учетом того, что там уже есть). С сохранением целостности — если по дороге что-то пошло не так, то полный откат к начальному состоянию. Ну и потом еще куча всяких проверок и поисков по различным параметрам. И дополнительно все это надо увязать с другими, уже существующими компонентами системы.

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

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

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

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

                                                                                                                                                                                                                  Мне кажется, программисту нужна начальная математика в основном. Если это в норме, то можно начать изучать программирование. Главное подобрать хорошие курсы(советую посмотреть на Udemy) или книги(для начала в джава советую Герберта шилдта «Java 8 руководство для начинающих»; или если не жалко переплатить 2-3к сначала прочитать «hed first java», потом того же шилдта, но не для начинающих, а полное руководство), дальше уже начнёте понимать в этом и разберётесь что читать дальше. Котлин тоже очень крутой язык, советую разобраться в java (пофрилансить неплохо было бы) и если с джавой всё ок, то хотя бы учить Котлин. Дальше уже пробовать искать работу(если зашёл Котлин, то выучить его, тоже пофрилансить, дальше можно попробовать переехать.
                                                                                                                                                                                                                  Конечно не забывайте читать книги!

                                                                                                                                                                                                                  P.S. во время обучения решайте задачки на Codewars
                                                                                                                                                                                                                    0
                                                                                                                                                                                                                    Спс. Книжки добавил в закладки.
                                                                                                                                                                                                                    +3
                                                                                                                                                                                                                    Попробую объяснить, как непрограммист непрограммисту.

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

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

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

                                                                                                                                                                                                                    Какая у вас основная специальность, или направление? Посмотрите, что автоматизируют там, и попробуйте решить похожие задачи. Тогда вы не будете терять время и силы на задачу, а сможете изучать инструмент.
                                                                                                                                                                                                                      0
                                                                                                                                                                                                                      Самая большая проблема в том, что, пользуясь вашей аналогией, работа программиста — это не «прочитать Китса в оригинале», а «написать почти как Китс». Когда человек не может решить задачу вообще — это даже меньшее зло, потому что ну не может и всё, его задача переходит другому. Если же он с помощью лома и такой-то матери задачу всё-таки решает, в полный рост встаёт другой вопрос: это был одноразовый код на выброс или часть будущей кодовой базы? И вот если второе, то не менее важно, чтобы не получилась чудовищная неподдерживаемая лапша, которую можно считать отрицательным вкладом в проект. Беда в том, что нужно обладать очень неплохим общим техническим уровнем, чтобы оценить качество своего кода и не допускать там откровенных часовых бомб. Ну то есть да, если хотите написать хотя бы среднего качества рассказ, надо сначала прочитать энное количество рассказов, чтобы приобрести какой-никакой вкус и понимание критериев качества.
                                                                                                                                                                                                                        0
                                                                                                                                                                                                                        Кажется, вас запутало то, что и стихи, и программы «пишут») Аналогия моя была не в этом, а в том, что «прочитать Китса», «синхронно перевести речь Дональда Трампа», «посмотреть Звёздные войны», «склеить чику на курорте» – это всё разные задачи для одного и того же инструмента.

                                                                                                                                                                                                                        Вы же говорите о качестве решения. Это бесспорно, того же Китса можно читать по-разному. Что-то вроде такого:
                                                                                                                                                                                                                        «Так, что-то про деревья...»
                                                                                                                                                                                                                        «Листок упал на мой разум»
                                                                                                                                                                                                                        «Листья падают на душу»
                                                                                                                                                                                                                        «Как лист увядший падает на душу»
                                                                                                                                                                                                                        «Как лист увядший… М-м, любопытная аллюзия на Тидемана! Жаль, Китс не знал его в переводе Нильсена – он гораздо ближе к оригиналу, чем канвальдовский»

                                                                                                                                                                                                                        Параллели с миром программистов, думаю, вы сможете провести лучше меня)
                                                                                                                                                                                                                      +7

                                                                                                                                                                                                                      Как человек, всю свою профессиональную карьеру стоящий на грани "зарыться навсегда в одну узкую область" могу сказать, что в этом неудачном пути обучения отсутствовал навык breath vs depth. И навык делегирования ответов.


                                                                                                                                                                                                                      Объясняю: в любой области всегда можно копать дальше. Например, начинаем мы копать в Computer Science. CS нас быстро подводит к пониманию вычислимости, которое напрямую связано с перечисляемостью и разрешимостью множеств, что в свою очередь нас утыкает лицом в математическую логику и теорию множеств, которая совершенно не стесняется перепрыгивать из счётных множеств в несчётные, что опасно близко нас подводит к множеству R и открывающейся при этом несчётной бездне. Где-то тут рядом с лёгкостью всплывает функциональный анализ, теория групп и понеслось…


                                                                                                                                                                                                                      Это мы всё ещё не прочитали первую главу CS, которая к программированию не относится.


                                                                                                                                                                                                                      Вместо этого надо уметь принимать часть решений на веру. Запоминать, что там "есть что-то такое" и вовремя останавливаться. Приспичит — можно нырнуть. Не приспичит — держать голову над водой.


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


                                                                                                                                                                                                                      Таким образом надо уметь в нужный момент прекращать искать знания и начинать рабатывать опыт. Одно другое не исключает (знания сильно помогают), но без опыта никакого результата не будет, даже если вы выучите все курсы MIT'а наизусть.


                                                                                                                                                                                                                      Программирование — как рисование. 10000 часов теории сильно помогут вам научиться рисовать. 10000 часов рисования научат вас рисовать.


                                                                                                                                                                                                                      Что надо делать: программировать. Берёте и пишите программу. Копипаста, "оно работает но я не знаю почему" и т.д. Опыт — важнее, чем 100% понимание происходящего.

                                                                                                                                                                                                                        0
                                                                                                                                                                                                                        Копипаста, "оно работает но я не знаю почему" и т.д. Опыт — важнее, чем 100% понимание происходящего.

                                                                                                                                                                                                                        гхм, это однозначно вредный совет.


                                                                                                                                                                                                                        я понимаю, что это продолжение вот этого правильного совета:


                                                                                                                                                                                                                        Вместо этого надо уметь принимать часть решений на веру. Запоминать, что там "есть что-то такое" и вовремя останавливаться. Приспичит — можно нырнуть. Не приспичит — держать голову над водой.

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

                                                                                                                                                                                                                          0

                                                                                                                                                                                                                          "Бездумную копипасту" придумали вы. Я говорил про копипасту. Она — основна для начала изучения любой области. Берёшь готовое и пробуешь использовать. Работающее можно ломать и смотреть как оно не работает (или работает). А если работающего нет, что ломать не понятно.

                                                                                                                                                                                                                            0
                                                                                                                                                                                                                            "оно работает но я не знаю почему"

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

                                                                                                                                                                                                                              +1

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

                                                                                                                                                                                                                                +1

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


                                                                                                                                                                                                                                про это даже на stackoverflow написано «this practice should be avoided»

                                                                                                                                                                                                                                  0

                                                                                                                                                                                                                                  Если вы просто скопипастите код с ответа SO, то он с 99% вероятностью работать не будет. Прелюдия, бойлерплейт код, имена переменных и т.д.


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

                                                                                                                                                                                                                          +1
                                                                                                                                                                                                                          Множества, категории и т.п. — это просто математическое описание логики. Для использования логики не нужно знать её формальное описание. Как для использования автомобиля не нужно… вот это всё из теормеха. Но для использования какой-то математики или механики нужно их знать (правда, программисты редко такое используют, ограничиваясь простой логикой).
                                                                                                                                                                                                                          +6
                                                                                                                                                                                                                          В программировании математика как таковая не нужна.
                                                                                                                                                                                                                          Математика и программирование — отличающиеся вещи. Очень большая ошибка полагать, что программирование будет похоже на математику. Это верный способ так и не понять элементарных вещей.
                                                                                                                                                                                                                          Дело в том, что математика оперирует довольно сложными и довольно туманными абстракциями (число, функция, производная, уравнение, предел и так далее). Есть множество вариантов базовых аксиом и все это на самом деле очень сложно.
                                                                                                                                                                                                                          Задача изучения математики — освоить эти абстракции и научиться применять их для решения задач.
                                                                                                                                                                                                                          Программирование — это другая задача. Программист по сути имеет дело с неким устройством, которое нужно заставить сделать то что нужно. Здесь нет ничего абстрактного как в математике. Все абстракции вводятся поверх вполне материальных существующих битов и вводятся только чтобы упростить понимание того что происходит с этими битами. Устройство это состоит из памяти и процессора, перекладывающего числа из одних ячеек в другие согласно программе. Все что нужно программисту — научиться писать программы, перекладывающие числа именно требуемым образом. Здесь нет тех абстракций из тонкого воздуха, как в математике, все очень конкретно и очень определенно.
                                                                                                                                                                                                                          Другими словами: в математике мы имеем дело с абстрактными объектами, про которые не говорится как их изготовить, в программировании — речь всегда идет о вещах, которые имеют материальное воплощение в битах памяти.
                                                                                                                                                                                                                          На днях смеялся, как мой ребенок осваивает программирование. Он научился на питоне писать операторы while (true), break, if с одним условием и присваивания. Теперь он пишет любые программы и решает олимпиадные задачи по информатике для детей. Его код чудовищен, но все чудесным образом работает. Т.е. он осознал как работает эта «машина»: она умеет перекладывать числа из одной переменной в другую, ходить по кругу, выходить из круга и учитывать условия. Этого достаточно, воображение ребенка отыскивает последовательность операторов для решения нужной задачи и можно считать что он уже программист.
                                                                                                                                                                                                                          то выражение типа N=N+1 и более сложные уравнения меня загоняли в легкий ступор.
                                                                                                                                                                                                                          Потому что это никакая не математика. Это инструкция для процессора достать число из ячейки с именем N, прибавить к нему 1 и снова положить в ячейку N. Это инструкция для машины а не уравнение. То что это выглядит как уравнение — плохая аналогия, сбивающая с толку. На самом деле здесь записано что-то типа «PutTo N value (N+1)».
                                                                                                                                                                                                                          Плохая новость заключается в том, что если человек этого всего не понял сам и у него школьная математика вызывает трудности, то высока вероятность, что его склад ума очень плохо подходит для программирования. Таким людям обычно стоит изучать программирование в качестве дополнения к негой основной профессии для того, чтобы быть аналитиком, дизайнером или что-то подобное.
                                                                                                                                                                                                                            +1
                                                                                                                                                                                                                            То что это выглядит как уравнение — плохая аналогия, сбивающая с толку.

                                                                                                                                                                                                                            Вот да, знаю многих людей, которые не могли осознать суть присваивания из-за этой путаницы.
                                                                                                                                                                                                                            В этом плане Паскаль с его := (часто читают как «пусть будет равно», аналогично конструкции QBasic «LET A = B+C») имеет некоторое преимущество перед языками, где для присваивания используется просто знак равенства (каковых, увы, большинство).
                                                                                                                                                                                                                            А уж синтаксис присваивания в языке «Рапира» вообще прозрачен: a + b -> x сначала вычисляем выражение операции, и только после этого результат помещаем в указанную переменную.
                                                                                                                                                                                                                              +1

                                                                                                                                                                                                                              Чем глубже я ухожу в хорошо написанный код, тем больше там оказывается этих "туманных абстракций". В системе конфигурации реализовывать ковариантное или контрвариантное наследование свойств? Является ли exception методом сохранения инварианта функции?

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

                                                                                                                                                                                                                                  Забавно, что большая часть теоретических результатов CS, применяемых для "конструктивного программирования" (другого у нас нет) доказывается неконструктивными методами (собственно, одним-единственным — диагональным методом Кантора).

                                                                                                                                                                                                                                    0
                                                                                                                                                                                                                                    А что неконструктивного в диагональном методе?
                                                                                                                                                                                                                                    Он же явно строит двумерной бесконечной матрице «не-диагональ».
                                                                                                                                                                                                                                      0

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


                                                                                                                                                                                                                                      В системе типов результатом такого вычисления будет bottom type.


                                                                                                                                                                                                                                      fn diagonal_build () ->! {
                                                                                                                                                                                                                                        loop {
                                                                                                                                                                                                                                          loop {
                                                                                                                                                                                                                                            ...
                                                                                                                                                                                                                                          }
                                                                                                                                                                                                                                        }
                                                                                                                                                                                                                                      }

                                                                                                                                                                                                                                      И без единого break'а, замечу. Чистой воды divergence type.


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

                                                                                                                                                                                                                                        0
                                                                                                                                                                                                                                        Да, конечно.
                                                                                                                                                                                                                                        Только диоганальный метод — он вполне себе конечный.
                                                                                                                                                                                                                                        Он по индексу i возвращает значение ячейки (i,i) (возможно как-то модифицированное).
                                                                                                                                                                                                                                          0

                                                                                                                                                                                                                                          Даже если мы примем, что это перечисляющий метод, то разрешающим он не является.
                                                                                                                                                                                                                                          Потому что в финале у нас assert diagonal(S) not in S, что требует досчитать до бесконечности дважды.

                                                                                                                                                                                                                                            0
                                                                                                                                                                                                                                            Да, проверка " in S" не является конструктивной.

                                                                                                                                                                                                                                            Но сам diagonal(S) — вполне конструктивен (настолько же, насколько S конструктивно. Например, если в S вычислимы все клетки, то и diagonal(S) вычислим ровно в том же смысле).

                                                                                                                                                                                                                                            И даже diagonal(S) != S_i тоже вычислимо проверяется. После этого возникает проблема с переходом к бесконечности — достаточно ли, эффективно по i доказывать X != S_i, или нужно больше, чтобы сказать X \not in S. Насколько я помню классическую конструктививную логику — этого достаточно, но я не полностью уверен.
                                                                                                                                                                                                                                              0

                                                                                                                                                                                                                                              Это как раз и есть разница между перечислимыми и разрешимыми множествами. Есть множества, которые мы можем перечислить (перечислять), но для которых мы не можем в конечное время дать ответ, относится ли данный элемент к указанному множеству или нет. Приличная доля всех теорем в теории алгоритмов с ответом "нет, не можем" как раз сводится к ситуации, когда перечисление есть, а разрешения нет.
                                                                                                                                                                                                                                              (https://ru.wikipedia.org/wiki/%D0%9F%D0%B5%D1%80%D0%B5%D1%87%D0%B8%D1%81%D0%BB%D0%B8%D0%BC%D0%BE%D0%B5_%D0%BC%D0%BD%D0%BE%D0%B6%D0%B5%D1%81%D1%82%D0%B2%D0%BE)


                                                                                                                                                                                                                                              Теория алгоритмов говорит, что попытка разрешения для неразрешимого множества невозможна (алгоритм никогда не закончится). Собственно, в районе assert diagonal(S) in S мы это видим интуитивно, если S — бесконечный генератор.

                                                                                                                                                                                                                                                0
                                                                                                                                                                                                                                                Да, конечно, diag(S) наследует перечислимость или разрешимость от S.
                                                                                                                                                                                                                                                Если S разрешимо, то и diag(S) разрешимо.
                                                                                                                                                                                                                                                Если S перечислимо, то и diag(S) станет перечислимым.
                                                                                                                                                                                                                                                Это даже распространяется дальше, например, на перечислимость снизу или сверху (которая нужна для полумер и колмогоровской сложности соответственно).

                                                                                                                                                                                                                                                Конечно, задача разрешить diag от перечислимого множества — не разрешима (и для конкретного перечислимого множества может являться просто проблемой остановки).
                                                                                                                                                                                                                                                  0

                                                                                                                                                                                                                                                  Можно ли считать конструктивной математику, оперирующую неразрешимыми множествами? Я (основываясь на программистской интуиции) так считать не могу.

                                                                                                                                                                                                                                                    0
                                                                                                                                                                                                                                                    Перечислимые (а не разрешимые) множества с точки зрения программирования (и теоретического CS) гораздо более правильная абстракция.

                                                                                                                                                                                                                                                    Хотя бы потому, что множество программ перечисляющих множества — разрешимо (это, примерно, все программы правильной сигнатуры), а множество программ разрешающих множество — нет (и даже не перечислимо).
                                                                                                                                                                                                                                                      0

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


                                                                                                                                                                                                                                                      Т.е. с точки зрения практического программиста, конструктивная математика — это математика, которая даёт нам независающие разрешающие алгоритмы. Т.е. она решает наши проблемы и не глючит.


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


                                                                                                                                                                                                                                                      Вот тут вот главная драма программирования и зарыта.

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

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

                                                                                                                                                                                                                                0
                                                                                                                                                                                                                                N=N+1
                                                                                                                                                                                                                                Дело в том что после этой записи практически сразу следовала задача. Мое подсознание автоматом применило аналогию с формулой a=b+c, ну и следом представилось а=а+1.
                                                                                                                                                                                                                                То есть подставив любо значение (e.g. 6=6+1). Я не мог уяснить как 6 может быть равно 7. С этим и был связан ступор.
                                                                                                                                                                                                                                PutTo N value (N+1)
                                                                                                                                                                                                                                Благодарю за разъяснение, теперь разобрался.
                                                                                                                                                                                                                                +3
                                                                                                                                                                                                                                Я долго вникал почему 0 в степени 0 равен 1, и у меня ощущение что я до конца так и не понял всей сути.

                                                                                                                                                                                                                                Ноль в степени ноль в математике не определенно, также как и ноль делить на ноль, ноль умножить на бесконечность и т.п.

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

                                                                                                                                                                                                                                Например, в функции y = x^x, при положительных значениях х, все определенно и понятно (постройте этот график и убедитесь сами, можно попутно найти минимум этой функции). Так вот, при x, стремящемся к нулю справа (при x, меньших нуля, эта функция неопределенна), легко видеть, что значение функции стремиться к единице. Его еще называют значением по непрерывности. Поэтому, ничего нам не мешает доопределить эту функцию в нуле, так чтобы для всех неотрицательных значениях x, функция сохраняла непрерывность (и даже дифференцируемость).

                                                                                                                                                                                                                                На мой вопрос: «как решаются такие уравнения?», ответ был очень прост: «учи исследование функции, начало анализа и задачи на оптимизацию. Алгебра 10-11 класс».

                                                                                                                                                                                                                                Мы квадратные уравнения изучали в пятом-шестом классе. А тригонометрию вам в школе преподавали? А стереометрию? Классов у нас было десять, анализа, исследования функции и оптимизации не было, но я лично в десятом классе все это легко выучил самостоятельно (по учебнику для первого курса ВТУЗов).

                                                                                                                                                                                                                                Начинаю осознавать, что для полной картины понимания Computer Science, мне необходимо будет заново учить алгебру, а затем и ВысшМат.

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

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

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

                                                                                                                                                                                                                                Могу открыть маленький секрет, достаточно знать не объемный курс высшей математики, а просто быть способным легко усваивать нужную тему. А по сложным алгоритмам можно попросить помощи на форуме математиков. Я вот недавно задал там вопрос: «Как группировать бинарные матрицы по степени их похожести?» ( dxdy.ru/topic142232.html ) и нашел ответ с общей помощью, что позволяет мне программировать дальше.
                                                                                                                                                                                                                                  –1
                                                                                                                                                                                                                                  Программисту математика нужна именно как точка опоры, в основном ради абстрактного мышления.

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


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

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


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

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

                                                                                                                                                                                                                                    +2
                                                                                                                                                                                                                                    Не соглашусь. Я давно заметил, что из крутых математиков редко получаются хорошие программисты. Понимание навороченных математических абстракций слабо связано с пониманием абстракций программистских.

                                                                                                                                                                                                                                    Согласен в то части, то 100%-ные математики не готовят себя к программированию, поэтому они его просто не знают. Но среди крутых программистов трудно найти человека, который совершенно не знает математику. Возьмите трехтомник Кнута, «Искусство программирования». Сможете ли вы утверждать, что он не знает математику? Да он ее знает покруче некоторых дипломированных математиков.

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

                                                                                                                                                                                                                                    Так современное программиование — это не придумывание новых алгоритмов, а переиспользование уже существующих.

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

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

                                                                                                                                                                                                                                    Речь идет не столько о самостоятельной реализации алгоритмов OpenCV, сколько о понимании их работы. А как вы их поймете, если не знаете математики? А непонимание чревато. Убедился на себе. Я вот сейчас пишу обучающую программу по распознаванию встроенных субтитров видео роликов и перевода их на русский язык. В том числе использую OpenCV (наряду с SDL и FFmpeg / FFplay). Так вот использование алгоритмов OpenCV вслепую, по аналогии с опубликованными примерами, приводит, в конечном счете, к плачевным результатам (для более-менее серьезных проектов). И только когда я начал вникать в алгоритмы и пользоваться их собственными аналогами, дела пошли лучше. И даже код получался проще и понятнее. Надеюсь, я еще опубликую здесь свою статью об этом.

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

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

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

                                                                                                                                                                                                                                    Возьмем простейшую ситуацию. Допустим, вы специалист по интерфейсу программ. Вам поставили задачу использовать MDI-интерфейс, но чтобы в дочерних окнах были локальные меню. Не будем спорить, зачем? Приказы начальства не обсуждают. Вы думаете: «а, щас, задача – два пальца об асфальт». Делаете, но болт! Не получается. Начинаете копать глубоко и выясняете, что локальные меню запрещает парадигма MDI на уровне системных dll. Вот те на! И действительно, никто не использует локальное меню. Вместо этого применяется контекстное меню, панель инструментов, командную панель, кнопочное меню, различного рода панели управления, но полноценного локального меню в дочерних окнах нет (возьмите для примера интерфейс 1С любой версии).

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

                                                                                                                                                                                                                                    Хорошо, вас переключили на SDI-интерфейс. Говорят, сделай нам мультипоточный интерфейс с перегружаемыми либо неявным образом переключаемыми клиентским окнами. Есть хороший прототип для работы? «Брезенту ненту!», как говорил старый Райкин.

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

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

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

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

                                                                                                                                                                                                                                        Достаточно интересная проблема. Я ее называю проблемой модульного программирования. Ладно там в языках свервысокого уровня, типа 1С, когда просто сама платформа ограничивает вас в ваших хотелках. Но ведь даже в С++ писать на уровне слабосвязанных модулей, так чтобы можно было их легко менять «как перчатки» очень тяжело.

                                                                                                                                                                                                                                        Интересовался этой темой в Интернете. Как всегда, ничего путного нет. Хотя на абстрактном уровне вроде все понятно. Программные модули в С++ можно структурировать на уровне:

                                                                                                                                                                                                                                        – Каталогов / файлов;
                                                                                                                                                                                                                                        – Классов / структур;
                                                                                                                                                                                                                                        – Процедур / функций, в т.ч., inline functions.

                                                                                                                                                                                                                                        Однако проблемы здесь связаны с иерархическими зависимостями и распределенным использованием. Как с этим бороться? Непонятно!

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

                                                                                                                                                                                                                                        Но даже для собственных модулей встают вопросы. Где описывать хидер файлы общего назначения? Только в общем файле StdAfx.h или как-то раздельно для каждого включаемого пакета? Как отслеживать точки входа и выхода для используемых классов? А ведь могут быть еще и другие точки управления. Может быть, это все описывать в каком-либо внешнем скрипте, по которому некий мастер будет генерировать конечный код проекта? И т.д. и т.п., вопросов много, а ответы приходится искать методом «научного втыка» :).

                                                                                                                                                                                                                                        А как вы решаете проблемы модульности собственного кода?
                                                                                                                                                                                                                                          0
                                                                                                                                                                                                                                          Было бы интересно почитать на Хабре статью про проблемы модульности. :)
                                                                                                                                                                                                                                            0
                                                                                                                                                                                                                                            Ну во-первых, я стараюсь по возможности избегать сложных зависимостей. Все вспомогательные модули атомарны и не зависят от других (по возможности).

                                                                                                                                                                                                                                            Я не портирую на нашу платформу (IBM i) сложных фреймоворков в силу ее специфичности. Если что-то нужно, я просто реализую нужный алгоритм и делаю атомарный модуль (тут это называется *SRVPGM — нечто типа dll в винде, но со специфическими заморочками). На круг это выходит проще и быстрее (с учетом тестирования) чем тащить что-то объемное с других платформ.

                                                                                                                                                                                                                                            У нас есть своя «кодовая база», так называетмые «леса» (LES — низкоуровневые сервисы общего назначения) куда каждый может вносить свой вклад в виде реализации полезных алгоритмов. Фактически это куча *SRVPGM, объединенных одной *BNDDIR (что-то типа библиотеки импорта в винде) — чтобы подключить нужный модуль достаточно добавить исходник (т.н. copysource) с прототипом и подключить LESBNDDIR к проекту.

                                                                                                                                                                                                                                            Основная проблема с портированием — концепция т.н. «групп активации» (ACTIVATION GROUP, ACTGRP) — это такое подмножество задачи (JOB). Для каждой программы указывается тип группы активации.

                                                                                                                                                                                                                                            *CALLER — вызываемая программа работает в той же группе активации, что и вызывающая (наиболее предпочтительный у нас способ)
                                                                                                                                                                                                                                            *NEW — программа каждый раз создает новую группу активации и работает в ней. У нас крайне не рекомендуется т.к. страдает эффективность.
                                                                                                                                                                                                                                            Именованная — программа имеет свою группу активации, которая создается при первом ее запуске в рамках данного задания (JOB) и удаляется только вместе с окончанием задания (или специальной командой RLSACTGRP).

                                                                                                                                                                                                                                            С одной стороны, группы активации не имеют изолированной памяти (память на IBMi одноуровневая, изоляция памяти идет на уровне задания, внутри задания память доступна всем программа в нем работающим). С другой же, в рамках группы активации между вызовами программы сохраняются открытые файловые дескрипторы, глобальные и статические переменные. Т.е. если вы сделали программу (или SRVPGM) с именованной группой активации и в ней где-то используете статическую переменную, то при втором (и последующих) вызовах этой программы в рамках одного задания значения этих переменных будут сохраняться с предыдущего вызова.
                                                                                                                                                                                                                                            В общем, при портировании чужого фреймворка где используются глобальные и статические переменные, могут быть сюрпризы — нужно быть очень внимательным и досконально разбираться во всех потрохах.
                                                                                                                                                                                                                                            У кого-то из наших с этим были какие-то проблемы, когда он попытался сделать SRVPGM, внутри которой были контейнеры из STL, а наружу торчали врапперы для использования этого из RPG программ (в RPG нет объектности). Как раз что-то там со статикой порой странновато работало.
                                                                                                                                                                                                                                            Посему я для своих целей сделал свои контейнеры (то, к чему привык и то, чего мне нехватало в RPG) — двусвязный список, SkipList (сортированый список пар данные-ключ) и на его основе обычный сортированный список (где данные одновременно являются ключом) и «набор» (однотипные данные, они же ключ + специфические функции типа AND/OR/XOR по двум наборам, разность наборов и еще некоторая специфика) — все это отлично работает из RPG программ через врапперы.
                                                                                                                                                                                                                                              0

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

                                                                                                                                                                                                                                                0
                                                                                                                                                                                                                                                Это просто другой мир. Мир высокопроизводительных мейнфреймов. И финтеха. Тут свои законы.

                                                                                                                                                                                                                                                Основной язык программирования — RPG. Он хорошо работает с БД, хорошо работает со строками. Но есть вещи, которые удобнее делать на С/С++. Есть вещи, котрых лично мне нехватает в RPG. И я их себе дописываю на С/С++.

                                                                                                                                                                                                                                                Тут еще есть более экзотяческая вещь — концепция ILE (Intergated Language Environment). Если кратко — в составе ОС идет набор компиляторов — CL (Comman Language — системный язык операционки, достаточно мощный), COBOL (у нас не используется, но он есть), С/С++ и RPG. И концепция ILE позволяет писать разные куски кода на разных языках, компилировать каждый в отдельный модуль (аналог объектного файла), а потом несколько модулей собирать в один программный объект (исполняемая программа PGM или сервисная SRVPGM). Т.е. получаем некоторые функции написаны на С, некоторые на RPG и все они друг из друга вызываются (при правильном описании прототипов и понимании принципа соотвествия типов и способов передачи параметров).
                                                                                                                                                                                                                                                Более того, там еще можно непосредственно в код вставлять SQL запросы (есть препроцессор соответсвующий)…

                                                                                                                                                                                                                                                Все это позволяет достаточно гибко писать весьма эффективный код.
                                                                                                                                                                                                                                                Ну а возможности самой системы… На тесте стоит сервер PowerS 924 c 18-ядерным SMT8 процессором и 1.8Тб оперативки, выделяющий 16Гб памяти на задачу (JOB). Нехватает одной задачи — можно распараллелиться через submit job (SBMJOB или spawn) и организовать параллельную обработку с обменом данными через очереди (DataQueue/UserQueue), пайпы или юникссокеты.
                                                                                                                                                                                                                                                На проме — кластер из трех PowerS 928 (каждый по 18 12-ядерных SMT8 процессоров и 2.5Тб оперативки).
                                                                                                                                                                                                                                                Операционка сейчас IBM i 7.3 TR8 Ждем апгрейда до 7.4 в обозримом будущем.

                                                                                                                                                                                                                                                В общем, это весьма интересный мир.
                                                                                                                                                                                                                                                0
                                                                                                                                                                                                                                                Спасибо! Но чужая платформа – потемки! Как-то все сложновато для человека, привыкшего к Windows и C++ / WTL. Хотя, идея минимальной зависимости модулей достаточно естественна, вопрос только, насколько реализуема при использовании чужих фреймворков.
                                                                                                                                                                                                                                                  0
                                                                                                                                                                                                                                                  Ну я сам из виндов туда пришел :-) Первые три месяца был сущий ад — вникать во все это. IBM i вообще не похожа ни на винду, ни на никсы. Ни в чем. Даже файловая система совершенно иная. Это изначально объектная среда — там все есть объект. Вся система состоит из объектов, у каждого из которых есть имя и тип. Имя можно менять, тип нет, каким его создали, таким они будет. С каждым объектом можно делать только то, что разрешено делать с данным типом. Ну условно говоря, нельзя взять программу (объект типа *PGM), открыть его в hex редакторе и поменять там байтики — для объекта данного типа не предусмотрена операция редактирования.

                                                                                                                                                                                                                                                  Там нет ассемблера. В принципе. Т.к. есть определенный уровень, ниже которого доступ запрещен. Всем. Кроме разработчиков самой ОС. Это уровень TIMI — машинных инструкций, не зависящих от технологии.

                                                                                                                                                                                                                                                  Ну и еще много всяких чудес. Кому интересно — есть неплохая книга — Френк Солтис (один из отцов-основателей AS/400, которая потом «ребрендилась в IBM i) „Основы AS/400“. Там от истории и достаточно популярного изложения до достатчно сложный вещей — базы данных (DB2, она тоже интегрирована в систему), уровней защиты, машинных инструкций, устройства одноуровневой памяти, структуры указателей (они там 16-байтные) и прочих потрохов.

                                                                                                                                                                                                                                                  Менее года назад я был в Буэнос-Айресе на встрече с группой пользователей этой системы. По окончании встречи молодой репортер газеты «La Nacion» спросил меня: «Сформулируйте, пожалуйста, коротко причины того, почему в AS/400 столь много новшеств?». И я ответил: «Потому что никто из ее создателей не заканчивал MIT.» Заинтригованный моим ответом, репортер попросил разъяснений. Я сказал, что не собирался критиковать MIT, а лишь имел в виду то, что разработчики AS/400 имели совершенно иной опыт, нежели выпускники MIT. Так как всегда было трудно заставить кого-либо переехать с восточного побережья в 70-тысячный миннесотский городок, в лаборатории IBM в Рочестере практически не оказалось выпускников университетов, расположенных на востоке США. И создатели AS/400 — представители «школ» Среднего Запада — не были так сильно привязаны к проектным решениям, используемым другими компаниями.

                                                                                                                                                                                                                                                  Френк Солтис, „Основы AS/400“


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

                                                                                                                                                                                                                                        Вообще-то определена www.wolframalpha.com/input/?i=complexplot++x%5Ex
                                                                                                                                                                                                                                        И вдобавок в -1 -2 -3 даже не в комплексной плоскости.
                                                                                                                                                                                                                                          –1
                                                                                                                                                                                                                                          На вашем рисунке нет никакой функции в отрицательной полуплоскости аргумента. Об этом и шла речь, что функция y = x^x не определена для x < 0. Именно как функция, точнее, как непрерывная функция и уж тем более, как гладкая функция. Но как разрывная функция она определена, согласен. При целых четных отрицательных значениях функция будет положительна, а при целых нечетных отрицательных значениях функция будет отрицательна. Сложнее вопрос обстоит с рациональными аргументами, здесь помимо действительных, могут быть комплексные значения, а для отрицательных иррациональных чисел функция не определенна даже в комплексной плоскости и вообще для любых числовых множеств.

                                                                                                                                                                                                                                          Поэтому непрерывности, при x < 0, у этой функции нет, а гладкости тем более. А поскольку речь шла, о предельном значении по непрерывности справа, то я и утверждал, что данная функция не определенна по непрерывности слева. Хотя, строго говоря, функция определенна, как уже говорилось, как разрывная функция и то за исключением иррациональных аргументов. Причем, мера рациональных чисел на любом отрезке равна нулю. Это дает нам право говорить, что строго математически, данная функция не определенна, при x < 0, почти всюду.

                                                                                                                                                                                                                                          Вас такой ответ устроит :)?
                                                                                                                                                                                                                                            +1
                                                                                                                                                                                                                                            На вашем рисунке нет никакой функции в отрицательной полуплоскости аргумента.
                                                                                                                                                                                                                                            А вот я вижу, что есть: image

                                                                                                                                                                                                                                            Поэтому непрерывности, при x < 0, у этой функции нет, а гладкости тем более. А поскольку речь шла, о предельном значении по непрерывности справа, то я и утверждал, что данная функция не определенна по непрерывности слева.
                                                                                                                                                                                                                                            А вольфрам считает иначе: www.wolframalpha.com/input/?i=lim+x%5Ex+as+x-%3E0-

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

                                                                                                                                                                                                                                            А вольфрам считает иначе: www.wolframalpha.com/input/?i=x%5Ex+where+x%3D-pi

                                                                                                                                                                                                                                            Вас такой ответ устроит :)?
                                                                                                                                                                                                                                            Не устроит, ибо я не вижу на графике разрывов.
                                                                                                                                                                                                                                              0
                                                                                                                                                                                                                                              Не устроит, ибо я не вижу на графике разрывов.
                                                                                                                                                                                                                                              А то, что в левой части графика изображена комплексная функция, вы видите? На рисунке представлены действительная (real) и мнимая (imaginary) части комплексного значения. Действительного предела (по непрерывности) слева для этой функции нет. Есть только предел слева для real-части комплексного значения. А это, как бы, не одно и то же.

                                                                                                                                                                                                                                              Тоже самое для минус пи в степени минус пи. Это выражение многозначно, как, скажем sin(x) на бесконечности. Вы можете выбрать любое значении от –1 до +1 и указать некоторую подпоследовательность, сходящееся к этому значению, что, однако, не сделает это выражение определенным, только с точностью до некоторой подпоследовательности.

                                                                                                                                                                                                                                              Вы можете сказать, что приведенное значение «главное». Тогда я скажу, что «главное» значение sin(x) на бесконечности равно нулю, что проблемы, понятно, не закроет.
                                                                                                                                                                                                                                                0
                                                                                                                                                                                                                                                Тоже самое для минус пи в степени минус пи. Это выражение многозначно, как, скажем sin(x) на бесконечности.

                                                                                                                                                                                                                                                Скорее оно многозначно так же, как квадртаный корень: sqrt(4) — это либо +2, либо -2. Но вы же не хотите сказать, что квадратный корень — разрывная функция?

                                                                                                                                                                                                                                                  0
                                                                                                                                                                                                                                                  Вообще-то, в математике принято соглашение об арифметическом значении квадратного корня. Т.е., по определению, квадратный корень всегда положителен. Но если, допустим, нужно решить квадратное уравнение x^2 = 1, то корнем будут два значения: +sqrt(1) = 1 и –sqrt(1) = –1. Так что, в математике, функция y = sqrt(x) – функция однозначная.

                                                                                                                                                                                                                                                  А вот функция y = x^x для иррациональных отрицательных чисел просто неопределенна, другими словами, многозначна. Это означает, что существуют разные подпоследовательности, сходящиеся к аргументу, но имеющие различные значения. Равно, как это обстоит с sin(x) на бесконечности. Только sin(x) многозначна в «точках» плюс / минус бесконечность, а x^x многозначная для всех иррациональных отрицательных чисел.
                                                                                                                                                                                                                                                    0

                                                                                                                                                                                                                                                    Простите, что с вами спорю, но "неопределена" и "многозначна" — разные понятия. Функция sin(1/x) в нуле неопределена — у нее нет значения. Функция x^x определена везде, включая x = 0 и x = -pi, и при определенных аргументах она многозначна.

                                                                                                                                                                                                                                                      +1
                                                                                                                                                                                                                                                      Неа, в нуле она не определена. В нуле обычная неопределённость. Но левый и правый лимит для нуля это 1.
                                                                                                                                                                                                                                                        0
                                                                                                                                                                                                                                                        Ну, на счет различия понятий «неопределенна» и «многозначна» могу согласиться. Как я понимаю, «неопределенна» это определенность с точностью до подпоследовательности, сходящейся к аргументу, когда разные подпоследовательности могут давать разные значения. В этом смысле неопределенными являются функции sin(1/x) в нуле и функция x^x в точке x = –pi. Во втором случае, как я писал выше, можно взять две подпоследовательности рациональных чисел, сходящихся к –pi, в первой из которых все числители четные, а во второй – нечетные. Знаменатель во втором случае нечетный. Тогда пределом функции будет, в первом случае, положительное число, а, во втором, отрицательное, не равное нулю. Также можно подобрать последовательность, сходящуюся к комплексному числу.

                                                                                                                                                                                                                                                        Многозначность, как я понимаю, это значение корня функции, дающее одно и то же значение, не чувствительное от некоторой константы или ее кратной величины. Пример, x = arcsin(y). Если y0 – корень, то и y0 + 2pi*n – тоже корень. В этом смысле также многозначна функция Ln(z) в комплексной плоскости (и в отрицательной вещественной полуплоскости), с точностью до 2pi*i.

                                                                                                                                                                                                                                                        Однако функция у = x^x, при x = 0 – неопределенна, хотя имеет там предел по непрерывности, равный 1.

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

                                                                                                                                                                                                                                                        Ситуация с извлечением корня и возведением в степень x^x ровно одна и та же. У этих функций есть разные ветви, и нужно для каждого конкретного применения эту ветвь выбирать. Просто для корня в силу его популярности решили, что обычно проще использовать одну конкретную ветвь. При этом если рассматривать эту ветвь, но такая комплексная функция по необходимости получается разрывной. Вот и с x^x то же самое — если брать "обычную" ветвь логарифма, то неоднозначности не будет. И такая функция тоже будет разрывна — всё как у sqrt.

                                                                                                                                                                                                                                                          0
                                                                                                                                                                                                                                                          Неа, корень положительный так как по настоящему это x^(1/2). Никакого выбора никогда не существовало. Просто в школе проще учить так, как будто есть функция sqrt.
                                                                                                                                                                                                                                                            0

                                                                                                                                                                                                                                                            В треде, к которому относятся эти комментарии, речь про комплексные числа и соответсвующие функции. Хоть в школе хоть не в школе, у функции корня при этом никак не одно значение.

                                                                                                                                                                                                                                                              0
                                                                                                                                                                                                                                                              Если уж ооочень покопаться, то получается, что есть множество корней, и есть некий principial root(как его вольфрам называет). Из этого корня можно получить и остальные.

                                                                                                                                                                                                                                                              Однако рас против однозначного определения x^x в 1/2 никто ничего не сказал, значит обсуждается только этот самый principial root.
                                                                                                                                                                                                                                                  0

                                                                                                                                                                                                                                                  Если коротко, то функция y = x^x аналитическая на всей комплексной плоскости, за исключением может быть каких-то особых точек. Функция эквивалентна следующей: y = exp[x ln(x)], поэтому если логарифм аналитичен для всех комплексных x, тогда проблем нет — мы рассматриваем композицию аналитических функций.


                                                                                                                                                                                                                                                  Пусть x = r exp[i q], тогда ln(x) = ln(r) + i q, это основная ветвь логарифма, остальные отличаются на 2pi, т.е. i q, i (q + 2pi), i (q + 4pi) и так далее. Таким образом, при x = x_r, где x_r — строго отрицательное вещественное число, представимое как |x_r| exp[i pi], то ln(x) = ln(|x_r|) + i pi. Т.е. логарифм определен для всех отрицательных вещественных чисел, x ln(x) тоже, exp[ x ln(x)] тоже.


                                                                                                                                                                                                                                                  Остается проблема x = 0. Формально, ln(x = 0) = -Inf, но это не помогает. Попробовать разобраться можно так: посмотрим, как себя ведет x ln(x) при x близком к 0. Если эта величина примерно 0, значит x^x = exp[ x ln(x)] = exp [0] = 1 и проблема решена. Можно попробовать приложить правило Лопиталя, у которого есть ряд ограничений, но суть такова: если у вас есть две 'хорошие' функции, предел каждой из которых в какой-то точке это 0 или бесконечность, а вы хотите найти предел отношения этих двух функций, то если существует предел отношения производных этих двух функций (функции хорошие и должны быть дифференцируемы вплоть до предельной точки), то предел отношения этих двух функций равен пределу отношения их производных. Прикладываем эту теорию к нашему случаю:
                                                                                                                                                                                                                                                  x ln(x) при x -> 0 это f(x) / g(x), где f(x) = ln(x), g(x) = 1/x, обе функции 'хорошие' вплоть до x = 0, обе стремятся к бесконечности. Берем производные, получаем f'(x) = 1 / x, g'(x) = - 1/x^2, предел отношение f'(x) / g'(x) = (1 / x) / (-1 / x^2) = -x, что при x -> +0 едет к -0. Таким образом, x ln(x) при x = 0 это 0*, а значит exp[x ln(x)] = 1, а значит x ^ x при x = 0 это 1.


                                                                                                                                                                                                                                                  Как проверить численно? Берем убывающую последовательность x = 1 / w, где w = 10, 100, 1000, 10000, ..., считаем exp [x ln(x)] = exp [- ln(w) / w]. Не силен в питоне, но вот такой говнокод


                                                                                                                                                                                                                                                  import numpy as np
                                                                                                                                                                                                                                                  
                                                                                                                                                                                                                                                  [np.exp(-np.log(w) / w) for w in
                                                                                                                                                                                                                                                      [10 ** i for i in range(1, 20, 2)]
                                                                                                                                                                                                                                                  ]

                                                                                                                                                                                                                                                  выдает


                                                                                                                                                                                                                                                  [0.7943282347242815, 0.9931160484209338, 0.9998848773724686, 0.9999983881917339, 0.9999999792767343, 0.9999999997467156, 0.9999999999970066, 0.9999999999999655, 0.9999999999999996, 1.0]
                                                                                                                                                                                                                                                    0
                                                                                                                                                                                                                                                    Ценю ваш профессиональный ответ. Мне, откровенно говоря, лень разбираться с отображением формул. Но, думаю, можно обойтись без них.

                                                                                                                                                                                                                                                    Я согласен, что «композиция аналитических функций» функция аналитическая, но вы сами пишете, что есть «основная ветвь логарифма», а «остальные отличаются на 2pi». Другими словами, логарифм для отрицательных аргументов – функция многозначная. Как тот же sin(x) на бесконечности. Из этого следует, что значение отрицательного иррационального числа в точно такой же степени величина многозначная, даже если можно говорить о «главном» значении.

                                                                                                                                                                                                                                                    Что отличает однозначное значение от многозначного? Вы, как профессионал в математике, должны знать, что если непрерывная функция в некоторой точке однозначна, то любая подпоследовательность сходится к этому значению. А если многозначна, то разные подпоследовательности, сходящиеся к искомому аргументу, могут давать разные значения, как вышеупомянутый sin(x) на бесконечности.

                                                                                                                                                                                                                                                    И это достаточно очевидно. Возьмем тот же пример www.wolframalpha.com/input/?i=x%5Ex+where+x%3D-pi, указанный samrrr чуть выше. Речь идет о минус пи в степени минус пи. Представим минус пи в виде двух подпоследовательностей рациональных чисел, сходящихся к этому аргументу. В первой последовательности все числители будут четными, а во второй нечетными при нечетном знаменателе. Таким образом, мы получим два разных предельных значения, первое будет положительным числом, а второе отрицательным. Можно также подобрать подпоследовательность, дающую комплексный предел.

                                                                                                                                                                                                                                                    Так что, не все так однозначно :).
                                                                                                                                                                                                                                                      0

                                                                                                                                                                                                                                                      Если я не ошибся, то (-pi)^(-pi) = pi^(-pi) (cos(pi^2 + 2 pi^2 n) + i sin(pi^2 + 2 pi^2 n)), где n — целое число. Интересный результат заключается в том, что не существует чисто вещественного значения, потому что для этого необходимо, чтобы pi^2 + 2 pi^2 n = 2pi k, где k — целое, или n = k / pi - 1/2. Если k=0, n = -1/2 и не целое, k!=0n даже не рациональное, а скорее всего трансцендентное. Т.е. (-pi) ^ (-pi) представляет собой бесконечное количество чисто комплексных чисел, расположенных на окружности r = pi^(-pi).


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


                                                                                                                                                                                                                                                      Моя попытка была показать, что 0^0 = 1 это не просто 'кто-то так решил', а это действительно предельное поведение функции x^x в 0, и что с помощью комплексных чисел это можно прямо посчитать.

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

                                                                                                                                                                                                                                                        Моя попытка была показать, что 0^0 = 1 это не просто 'кто-то так решил', а это действительно предельное поведение функции x^x в 0, и что с помощью комплексных чисел это можно прямо посчитать.

                                                                                                                                                                                                                                                        Да, это предельное значение, но только справа. Слева предел не существует, просто потому, что x^x не является непрерывной функцией и даже, вообще говоря, однозначной. Хотя сама эта функция в математике довольно широко используется и изучается.

                                                                                                                                                                                                                                                        Однако, что нам мешает рассмотреть композиции типа f(x)^g(x), таких, что f(0) = 0 и g(0) = 0, при x –> 0. Там вообще могут быть чудеса.
                                                                                                                                                                                                                                                          0

                                                                                                                                                                                                                                                          x^x имеет пределы с обеих сторон от 0, эти пределы равны, это даже видно из графика который вам присылали:



                                                                                                                                                                                                                                                          Значение предела не зависит от того, с какой "стороны" к нему приближаться. "Сторона" регулируется phi — для 0+0 phi = 0, для 0-0 phi = pi, а если с чисто мнимой оси, то phi = +- pi/2. Любые значения между тоже допустимы.

                                                                                                                                                                                                                                                            0
                                                                                                                                                                                                                                                            То, что предел слева тоже равен единице, я могу согласиться (тем не менее, 0^0 – неопределенная величина). Однако согласитесь, что справа мы имеем однозначную вещественную функцию, а слева – многозначную комплексную (вообще говоря). При этом возникают тонкости в понятиях неопределенность и многозначность для отрицательных иррациональных чисел (разные подпоследовательности могут давать разные пределы). Все это и вызвало наш спор, который по сути сводиться к терминологическим разногласиям (как и большинство всех споров).
                                                                                                                                                                                                                                                            0
                                                                                                                                                                                                                                                            Слева предел не существует, просто потому, что x^x не является непрерывной функцией и даже, вообще говоря, однозначной.
                                                                                                                                                                                                                                                            Напоминаю, вольфрам считает иначе: www.wolframalpha.com/input/?i=lim+x%5Ex+as+x-%3E0-
                                                                                                                                                                                                                                                            Вы считаете что он ошибается?

                                                                                                                                                                                                                                                            И Что это за ваше новшество в математике, под названием «действительный предел»
                                                                                                                                                                                                                                                              0
                                                                                                                                                                                                                                                              Попросите свой вольфрам построить функцию Дирихле (принимающую единицу на рациональных числах, и нуль – на иррациональных). Боюсь, что он вам выдаст функцию y = 1 или y = 0.

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

                                                                                                                                                                                                                                                                Только вот эта функция не имеет никакого отношения к x^x. И поэтому обсуждать, чему равен интеграл от функции дирихле я не стану.
                                                                                                                                                                                                                                                                  0
                                                                                                                                                                                                                                                                  А я всё думал, когда же дойдёт до этой функции. Осталось только заявить, что иррациональных чисел больше, чем рациональных.

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

                                                                                                                                                                                                                                                                  Только вот эта функция не имеет никакого отношения к x^x. И поэтому обсуждать, чему равен интеграл от функции дирихле я не стану.

                                                                                                                                                                                                                                                                  А зачем об этом вообще сообщать? Мы и так знаем, что интеграл Римана для функции Дирихле не существует, а интеграл Лебега, на любом конечном промежутке равен нулю.
                                                                                                                                                                                                                                                            0
                                                                                                                                                                                                                                                            Нет 0^0 это не единица никак. Вам стоит подучить пределы.
                                                                                                                                                                                                                                                            Вот например это не единица:
                                                                                                                                                                                                                                                            www.wolframalpha.com/input/?i=lim+x%5E%281%2Fln+x%29
                                                                                                                                                                                                                                                            Хотя 0^0 же.

                                                                                                                                                                                                                                                            www.wolframalpha.com/input/?i=x%5Ex%3B+x%3D0
                                                                                                                                                                                                                                                              0

                                                                                                                                                                                                                                                              Смотря что вы имеете ввиду под 0^0. x^x имеет предел единицу, x^(1/ln(x)) = exp(ln(x)/ln(x)) = exp(1) это вообще константа и любой ее предел будет exp(1).
                                                                                                                                                                                                                                                              Ну т.е. ситуация 0^0 это ситуация f(x) * g(x) где f(x) -> 0 а g(x) -> inf. А дальше все просто — какие функции выберете, такой результат и получите. Вот в 0 x быстрее едет к 0 чем ln(x) к -inf, поэтому x^x в нуле будет единицей. Возьмите вместо ^x степень, которая будет ехат к 0 медленнее чем ln(x) к бесконечности — получите предел exp(-inf) = 0. Делов-то.

                                                                                                                                                                                                                                                                0
                                                                                                                                                                                                                                                                0^0 это неопределённость и всё. Как и 0/0 inf/inf итд

                                                                                                                                                                                                                                                                Однако если есть какая-то функция, например x^x, то при подстановке нуля её значение не определено, но при этом у этой точки существует левый и правый пределы, и они оба равны единице. Но это не меняет того, что 0^0 это неопределённость.
                                                                                                                                                                                                                                                  0
                                                                                                                                                                                                                                                  Для людей с уровнем основ где-то около уровня автора лучше всего подходит обучение с преподавателем.

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

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

                                                                                                                                                                                                                                                  От себя могу добавить, что курсы с нуля готовятся и у нас, но пока недоступны. Но теоретически мы могли бы помочь друг другу путём тестирования материала «на кошках» (добровольцах). Если вдруг у кого-то появится интерес — пишите в личку.
                                                                                                                                                                                                                                                    0
                                                                                                                                                                                                                                                    Касательно математики, есть прекрасный справочник, название — 'Алгебра в таблицах', автор — Е. П. Неллин. Краткий справочник, в небольшом журнальчике все данные по школьному курсу алгебры (и немного больше). Помогает, когда надо что-то быстро решить, а материалом не владеете.
                                                                                                                                                                                                                                                      +3

                                                                                                                                                                                                                                                      Почему жы все нетехнари пытаются зайти в самые высококонкурентные сферы программирования. Сфера мобильной разработки и вообще Java — высококонкурентна. Обратить стоит лучше усилия на WEB разработку. Особенно на фронтенд. Знаю много гуманитариев преуспевших на фронтенде как таковом при большом желании. Математика там вообще не нужна. Профессия скажем react разработчика котируется везде и в России и в Европе и Америке. Но не нужно циклиться на книгах. Набирается минимум знаний из книг и люди устраиваются джуном в офис. Там учиться надо у опытных людей. Потом поменяв несколько работ, и поднявшись хотя бы до реального миддла, можно пытаться устраиваться зарубеж. Без реального опыта в офисе хорошим разработчикам не стать никак. У кого-то до крепкого миддла путь по офисам занимает год, у кого-то 5. Тут уж все зависит от желания учиться.

                                                                                                                                                                                                                                                        +1
                                                                                                                                                                                                                                                        По моим ощущениям, во фронтенде наоборот самая бешеная конкуренция из-за относительно низкого порога входа.
                                                                                                                                                                                                                                                          +1

                                                                                                                                                                                                                                                          Там очень много некомпетентных разработчиков. Много просто знающих по верхам HTML и css. Среди java программистов или C# не найдешь тех, кто не знает паттерны разработки и работу с БД и сервером, во фронтенде сплошь и рядом. В фронтенде гораздо ниже порог входа в разработку. Но реально грамотных разработчиков во фронтенде знакомых со всеми тонкостями JS и построения правильных архитектур, глубокими знаниями js фреймворков днем с огнём не найдешь — они всегда при деле и имеют зарплаты не ниже всех остальных разработчиков в других языках с таким уровнем.

                                                                                                                                                                                                                                                        +2
                                                                                                                                                                                                                                                        Автор не сделал самого главного на пути к профессиональному совершенству: не отвалил каких-нибудь 100к за курс на каком-нибудь скилбокс… Статья получилась бы интересней.
                                                                                                                                                                                                                                                          +3
                                                                                                                                                                                                                                                          Я стал программистом вообще не имея никакого высшего образования, и я далеко не джун. Секрет в любви ко всему «техническому», из чего вытекает сильное любопытство и получение удовольствия в ковырянии с технической частью — начиная от замены лампочки в холодильнике. У таких людей, как и я, этот путь занимает годы. Но это движение всегда подпитывается любовью.

                                                                                                                                                                                                                                                          Если вы сможете найти любовь к чему-то, будь то комбинаторика, 3D-графика, ИИ, то двигайтесь в этом направлении.
                                                                                                                                                                                                                                                          Если желание именно разобраться — то снизу вверх, от теории к практике. Это долго.
                                                                                                                                                                                                                                                          Наоборот, если есть желание побыстрее войти в среду и работать в команде, то пробуйте сверху вниз, например, в случае с вебом, сначала поставьте и настройте wordpress.

                                                                                                                                                                                                                                                          Если это не ваша любовь, а ваша любовь только деньги — то увы, этот путь будет два вас намного сложнее. Имейте ввиду, вас может стошнить от задачек на вычисление факториала. Пусть вас подпитывает дисциплина. За год вполне реально стать джуном.
                                                                                                                                                                                                                                                            0
                                                                                                                                                                                                                                                            Если ты новичок, всегда надо взять какой нибудь курс толковый месяцев на 8 с практикой естественно, а потом еще такой же на другой платформе для закрепления материала. Он будет хорошо структурирован и не даст тебе погрязнуть в этом болоте. А вот уже потом, когда у тебя есть уже хоть какое то представление, можно обучаться самому.
                                                                                                                                                                                                                                                              +1
                                                                                                                                                                                                                                                              Меня напрягает, что вы как-то пришли к тому, что для изучения одного ЯП, нужно изучить другой ЯП. Такими темпами, вам придется ассемблеры учить еще. Да, путь будет долгим.

                                                                                                                                                                                                                                                              Мне кажется, по любой теме, книг в мире больше чем одна. И все же вы берете только ту, которую вам посоветовали. Она вам не подходит, потому что требует знания другого ЯП и не рассчитана для новичков. Ммм, что же делать? Может посмотреть другие книги по языку, пролистать их, сравнить подачу материала? Нет, лучше выучить другой ЯП. Бум!

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

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

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

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

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

                                                                                                                                                                                                                                                              Разработка действительно не для всех. Нужно обладать очень важным качеством — умением думать, анализировать задачи, смотреть на них с разных уровней абстракций. К счастью, этому можно научиться.

                                                                                                                                                                                                                                                              P.S. Работодатели смотрят не только на уровней знаний CS, и не для всех это ключевой показатель. Уровень владения ЯП и экосистемой, на каких языках говорите, как вы общаетесь, сможете ли влиться в коллектив — все имеет значение. Не знаю, есть ли какой-то главный критерий, потому что знаком с людьми, которые толком не зная самого языка, минимально осваивали фреймворк и получали оффер. И росли до нормальных специалистов, — помогали коллеги и любознательность. Один знакомый, пошел тестировщиком, за год освоился, выучил язык и стал программистом в той же компании, но у него техническое образование и некоторый профильный бэкграунд. Бывает наоборот, человек приходит программистом, а в итоге занимает совсем другое место. К цели обычно ведет множество путей, и никто за вас не выберет тот, который лучше всего вам подходит.
                                                                                                                                                                                                                                                                0
                                                                                                                                                                                                                                                                а по моему ты очень крут, знаю многих людей кто бы забили на первой книжке) имху твоя проблема что ты слишком глубоко копаешь (это отличный скилл, и он пригодится, но в начале все это не нужно).

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

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

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

                                                                                                                                                                                                                                                                главное не сдавайся, и с твоим упорством у тебя все получится. удачи!
                                                                                                                                                                                                                                                                  0
                                                                                                                                                                                                                                                                  Сам учусь программированию (33года -.-) и тоже без технического бэкграунда. Тоже по совету «учи джаву, там платят кучу денег» купил книгу, пытаться понять все и сразу, миллионы вкладок в браузере. И каждая из вкладок порождала еще пару десятков вкладок. И тоже в какой-то момент приуныл, понял что я дно и впал в депрессию. Без шуток, я пару дней не мог въехать как работает функция…

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

                                                                                                                                                                                                                                                                  Если вы знаете все это, значит вы уже понимаете программирование на базовом уровне.

                                                                                                                                                                                                                                                                  И если вы будете все время практиковаться, пытаться реализовывать все новые фичи, вы точно придете к успеху. Читать книги, сайты, смотреть видюшки вам ничего не даст если вы не будете каждый день кодить. Проверено очень горьким опытом.
                                                                                                                                                                                                                                                                  –2
                                                                                                                                                                                                                                                                  Я преподаю информатику в физ-мат лицее. И вот на первом уроке по программированию я всегда говорю, что программирование — это в первую очередь математика. Если в голове нет математики, то никакого программирования не получится. Соответственно, если дитятко решило пойти в вуз по направлению программирования (а это я узнаю, потому что нужно сдавать ЕГЭ по информатике), но не сильно дружит с математикой, то я его сколько не отговариваю, сколько стараюсь убедить не делать этого, не гробить свои ближайшие несколько лет векторами, матрицами и прочими тройными интегралами вперемешку с диффурами, ведь всё равно мозгов на матанализ не хватит и всё равно отчислят. За всё время ЕГЭ по информатике у меня не было ни одного ученика, набравшего 80 и более балов, если по математике было меньше 4
                                                                                                                                                                                                                                                                    +1
                                                                                                                                                                                                                                                                    И вот на первом уроке по программированию я всегда говорю, что программирование — это в первую очередь математика. Если в голове нет математики, то никакого программирования не получится. Соответственно, если дитятко решило пойти в вуз по направлению программирования (а это я узнаю, потому что нужно сдавать ЕГЭ по информатике)
                                                                                                                                                                                                                                                                    Я правильно понял, что в качестве разработчика вы не работаете, и при этом судите о программировании основываясь на задачах из егэ?

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

                                                                                                                                                                                                                                                                    ближайшие несколько лет векторами, матрицами и прочими тройными интегралами вперемешку с диффурами, ведь всё равно мозгов на матанализ
                                                                                                                                                                                                                                                                    Не стоит путать полезную в программировании линейную алгебру, с довольно бесполезным матанализом.
                                                                                                                                                                                                                                                                      +1
                                                                                                                                                                                                                                                                      Я на уроках не к ЕГЭ готовлю, а в первую очередь даю алгоритмы и то, как с этими алгоритмами работать и откуда они берутся. Для этих целей и нужно математический склад мышления.
                                                                                                                                                                                                                                                                      Что касается матанализа, то да, согласен, эта штука нужна не каждый день, но чтобы получит диплом о высшем техническом образовании, с ним разминуться не получится.
                                                                                                                                                                                                                                                                      Кстати, задача из текущего поста — задача, решенная через матан
                                                                                                                                                                                                                                                                        +1
                                                                                                                                                                                                                                                                        Я правильно понял, что в качестве разработчика вы не работаете, и при этом судите о программировании основываясь на задачах из егэ?

                                                                                                                                                                                                                                                                        он говорит, что ученики, выбравшие информатику на ЕГЭ без достаточного знания математики, ошибаются.


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

                                                                                                                                                                                                                                                                        –1
                                                                                                                                                                                                                                                                        Вот откуда берётся подобный максимализм? У меня в голове нет математики, я с ней не то, что не дружу — враждую, но в самых разнообразных прикладных задачах это не мешало и не мешает, вполне немало лет. И подобных историй вокруг навалом. Областей, где можно быть успешным программистом, не имея даже минимальных математических талантов, огромное количество, работы хватит на много жизней.
                                                                                                                                                                                                                                                                          0

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

                                                                                                                                                                                                                                                                            0
                                                                                                                                                                                                                                                                            Возможно, потому что уроки я прогуливал, школу не закончил и в институте не бывал? Ну да, дело безусловно в окружении, лихие 90-е, бедность, неполная семья и алкоголизм в ней и во всём окружении очень помогли с генетикой и развитием.

                                                                                                                                                                                                                                                                            Пока по статье мы видим, что проблема возникла у индивидуума, считающего, что математика нужна. Ещё мы видим ряд комплексов ему сочувствующих. Например, один считает, что его частный взгляд на вопрос даёт ему право влиять на чужие судьбы, указывая, каким путём им НЕ следует идти (я бы постеснялся вот этого); другой стесняется возможности озвучивать свои взгляды и ждёт того же от окружающих.
                                                                                                                                                                                                                                                                              +1

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

                                                                                                                                                                                                                                                                                +1
                                                                                                                                                                                                                                                                                Думаю, ваше видение моего посыла отличается от того, что я в него вкладываю. Посыл очень прост: я хочу, чтобы люди не спотыкались о собственные и чужие предубеждения, чтобы это не мешало им двигаться к своей цели. Оратор выше, которого вы поддерживаете, по сути говорит людям — с математикой у тебя плохо, значит программирование не для тебя, не занимайся этим, не стоит и пробовать. Причём ситуация усугубляется его положением преподавателя. Я же говорю: это не настолько важно, есть примеры, когда люди достигали успеха и без считающихся кем-то важными талантов. Про полную ненужность математики или неэффективность формального подхода к обучению я не говорю, я говорю, что есть больше, чем один возможный путь.

                                                                                                                                                                                                                                                                                Касательно вашей проекции негативных коннотаций. Я не считаю, что я как-то по особенному что-то превозмогал или был в особенных (на тот момент) обстоятельствах. Я просто шёл своим путём, и так как другого у меня не было, не могу сказать, что он лучше или хуже. Но я определённо могу сказать окружающим, что пройти им возможно, и думаю, что эта позиция в целом более конструктивна и позитивна, и уж точно нет причин стесняться её.
                                                                                                                                                                                                                                                                                +1
                                                                                                                                                                                                                                                                                Если человек серьезно хочет чем-то заниматься, то ему как-то без разницы мнение какого-то полу-анонима из интернета. А вот Ваша позиция о ненужности математики может сильно повредить неокрепшим умам школьников, которых и тут хватает.
                                                                                                                                                                                                                                                                                  +3
                                                                                                                                                                                                                                                                                  Фиг с ними со школьниками! Может повлиять на умы РОДИТЕЛЕЙ! Которые могут возмущаться, что их деток «ненужной» математике обучают!
                                                                                                                                                                                                                                                                                  Помню телепередачу в 90-е годы, где родители возмущались тем, что обучают математике… финансистов! Можете представить себе финансиста, который не знает сколько будет 2+2?
                                                                                                                                                                                                                                                                                    +1
                                                                                                                                                                                                                                                                                    Кстати, с удивлением узнал, что у экономистов из МГУ матан более злой, чем на мехмате.
                                                                                                                                                                                                                                                                                    0
                                                                                                                                                                                                                                                                                    Обращу внимание на то, что оратор выше — преподаватель в лицее, а я — как раз вполне обычный полу-аноним из интернета. Но при этом вы почему-то считаете, что моё слово имеет большую силу.
                                                                                                                                                                                                                                                                                      0
                                                                                                                                                                                                                                                                                      Вы программист. И вессьма крутой в своей области. А он преподаватель. Конфликт интересов. Дети скорее прислушаются к Вашему мнению, чем к мнению преподавателя. А автор статьи человек взрослый. И ему все это программирование не очень интересно. Ему нужны деньги и только. Я его не осуждаю, просто если тебе чего-то не нравится, то зачем себя мучить.
                                                                                                                                                                                                                                                                                        0
                                                                                                                                                                                                                                                                                        А автор статьи человек взрослый. И ему все это программирование не очень интересно. Ему нужны деньги и только.

                                                                                                                                                                                                                                                                                        Приветствую. Мне интересно узнать как Вы пришли к такому умозаключению. Если бы программирование было не интересно я бы наверное даже не пытался выучить программирование. Разве не так?
                                                                                                                                                                                                                                                                                        Деньги имеют весомый аргумент в жизни каждого конечно. Но по моим личным убеждениям, финансы — это не сама цель, к которой нужно стремиться, а результат определенной деятельности человека.
                                                                                                                                                                                                                                                                                        Стремление «свалить» на запад, если Вы это имеете ввиду, связано с финансами отчасти, и меньшей части. Очень много других факторов и преимуществ. Но, думаю, Вы и так прекрасно об этом знаете…
                                                                                                                                                                                                                                                                                          0
                                                                                                                                                                                                                                                                                          Если интересно, то выучите обязательно. Берите любой язык. Программистом может стать любой, но нужно упереться и приложить энергию. Если бы Вам было интересно, то Вы не стали бы задавать таких вопросов.
                                                                                                                                                                                                                                                                                          По поводу обучения. Если Вам всё-таки это нужно, а самостоятельно не получается, возьмите репетитора или учителя. Порог вхождения — это максимум месяц, потом сможете самостоятельно.
                                                                                                                                                                                                                                                                                          Когда я уезжал, в 91, программирование было совсем не в тренде, за него платили копейки. У уехал я из-за антисемитизма, а не за колбасой. Это потом ближе к 2000 внезапно стали платить.не могу сказать, что я сильно сопротивлялся
                                                                                                                                                                                                                                                                                          И да по фигу какой язык. Потом у программиста занимает неделю, чтобы начать писать на новом для него языке.
                                                                                                                                                                                                                                                                                          Ну а потом можно потратить время на детали, стиль и тд.
                                                                                                                                                                                                                                                                                          Хоть всю жизнь на совершенствование.
                                                                                                                                                                                                                                                                                            +1
                                                                                                                                                                                                                                                                                            И ещё. В программировании есть два похода к решению задач. Сверху от задачи вниз к деталям. Или снизу от имеющихся инструментов (кубиков) вверх к задаче. Оба метода правильные и иногда комбинируются. Изучение программирования — это тоже задача. Я это к тому, что некоторым легче начинать снизу, с электроники, ассемблера и потом языки высокого уровня, а некоторые наоборот сначала легче понимают абстракции языков высокого уровня. Я Вас сильно запутал? Возьмите учителя.ему будет виднее как вас правильно учить
                                                                                                                                                                                                                                                                                +1
                                                                                                                                                                                                                                                                                В школе не любил и с трудом понимал математику. В университете невзлюбил ее еще больше, а понимал еще меньше. При том что и там и там преподаватели были весьма неплохие.
                                                                                                                                                                                                                                                                                В то же время любил физику, увлекался электроникой (паял-собирал), изучать программирование и писать первые программы начал лет в 13, уже 10+ лет профессионально работаю разработчиком ПО (телеком, встраиваемые системы, веб), до сих пор ловлю кайф от этого занятия, имею опыт техлидства, сейчас на синьорской позиции в международной команде, от заказчиков и коллег отзывы только хорошие. А тройные интегралы вперемешку с дифурами ни разу и не пригодились. Что я делаю не так?
                                                                                                                                                                                                                                                                                  +2

                                                                                                                                                                                                                                                                                  Ну а я преподаю в университете. И сделал вывод, что познания в математике вообще никак не коррелируют со способностями писать код. Да, есть корреляция между математическими способностями и способностями придумывать и реализовывать алгоритмы. Но и без математики вполне себе можно быть высокооплачиваемым формошлёпом.

                                                                                                                                                                                                                                                                                    +1
                                                                                                                                                                                                                                                                                    В какой-то мере согласен в том, что можно быть формошлёпом и даже высокооплачиваемым. Это можно сравнить с тем, что можно на поток ваять горшки и неплохо на этом зарабатывать. При этом есть некоторая каста людей, которые обладают тайными знаниями и которые умеют это делать как настоящее произведение искусства, что челюсть отваливается.
                                                                                                                                                                                                                                                                                    Особенность таких людей, что их больше уважают и ценят и при прочих равных условиях им зачем-то дают лишние преференции
                                                                                                                                                                                                                                                                                      +1
                                                                                                                                                                                                                                                                                      Но и без математики вполне себе можно быть высокооплачиваемым формошлёпом.

                                                                                                                                                                                                                                                                                      и не обязательно формошлепом

                                                                                                                                                                                                                                                                                      Математика хороша тем что там очень нужно сильноразвитое абстрактное мышления и логика и в программировании нужно тоже самое
                                                                                                                                                                                                                                                                                      Тоесть если ты тянешь математику — в программировании будет легко, НО эти вещи не взаимосвязаны.
                                                                                                                                                                                                                                                                                      Тоесть если взять хорошего программиста — то из него можно сделать хорошего математика (если он в процессе со скуки не помрет)
                                                                                                                                                                                                                                                                                        +1

                                                                                                                                                                                                                                                                                        Интересы решают. Если человек умеет и в математику, и в программирование, то он в итоге сваливается в то, чем ему нравится заниматься больше: становится либо крутым математиком, либо крутым программистом.

                                                                                                                                                                                                                                                                                          0
                                                                                                                                                                                                                                                                                          imho из математика можно сделать программиста, из программиста математика очень сложно. Например я хотел-бы заняться ИИ, но мое знание математики не позволяет. При этом я сам занимаюсь учетными системами, а это БД+формошлепство и перекладывание данных из одного места в другое через web-сервисы, плюс бухучет, управленческий учет, складской учет, логистика и прочие смежные области. Математики тут крайне мало, а изучать все нужные математические дициплины — это как еще одна полноценная вышка и потом конкурировать со вчерашними студентами?
                                                                                                                                                                                                                                                                                      0
                                                                                                                                                                                                                                                                                      nsnurlan — это пример того, как любое, даже самое хорошее начинание, можно довести до безумия.
                                                                                                                                                                                                                                                                                      А может быть, это просто такая скрытая форма увиливания от конечной цели? И вы не хотите перезжать / выходить из зоны комфорта? Увиливаете с помощью синдрома отвлечённого внимания + прокрастинации.
                                                                                                                                                                                                                                                                                        0
                                                                                                                                                                                                                                                                                        … я как «хомяк в колесе», вроде как бы и бегу (учусь), а по факту стою на месте.
                                                                                                                                                                                                                                                                                        К сожалению столкнулся с точно такой-же ситуацией=( Было интересно изучить Kotlin не имея за спиной ничего связанного с dev. Но все свелось к тому, что помимо изучения синтаксиса, в котелке должен быть определенный бэкгрануд, на изучение которого уйдет ещё больше времени, чем на изучение конкретного языка.

                                                                                                                                                                                                                                                                                        Уважаемый автор, я жду от Вас вторую статью, в которой (я надеюсь), Вы всё-таки найдете ответ на вопросы:
                                                                                                                                                                                                                                                                                        Или все-таки это не моё? И профессия «разработчик» — это для элиты, «касты особенных людей»?
                                                                                                                                                                                                                                                                                          +2

                                                                                                                                                                                                                                                                                          Автор себя загрузил чисто психологически. Постараюсь подсказать решение. Учился в школе 8 классов, потом в училище 3 года. Но потом решил поступить в политех и так как надо было сдавать вступительные экзамены — то выяснилось, что у меня немаленький такой провал в знаниях за последние 5 лет учебы. С осени родители заплатили за заочные подготовительные курсы, там мне дали материалы и задачи, которые я должен освоить и научиться решать, чтобы успешно сдать экзамены. Но до нового года я еще ходил на учебу в училище, после была практика. Так как работать по профессии я не хотел(передумал), то решил приложить все усилия, чтобы поступить в политех. Для этого решил прогулять двухмесячную практику(но без последствий) и вместо неё каждый день самостоятельно по 5-6 часов учился. Учился следующим методом — взял толковые учебники и вначале полностью прочитывал одну тему по которой были задачи из подготовительных курсов, потом решал эти задачи, а формулы и основные понятия и способы решения записывал на отдельных листочках А4. Таким способом за 2 месяца я освоил материал за последние 5 обучения, успешно здал экзамены — более 80 баллов(82 и 84) из 100 и успешно поступил в политех на бесплатное обучение да ещё и со стипендией. Так что тут есть два урока: 1 в общеобразовательных заведениях все обучение очень разтянуто во времени и освоить эту информацию можно за короткое время; 2 — если не отчаиваться, то при определенном усердии можно освоить даже очень большой объем информации за разумное время.
                                                                                                                                                                                                                                                                                          Но для начала такого обучения я бы посоветовал прочитать книгу "Думай как математик" Барабары Оакли, там есть все необходимые психологические моменты и подходы для успешного даже очень сложных наук и решения задач любого уровня сложности и глубины. Ну чтобы было интересно при обучении, то придумайте и создайте небольшое приложение или сайт в той области где хотели бы работать, первый блин может получится комом, но заметите что чем дальше — тем все лучше и быстрее у вас будет получаться. Это я к тому, что обучение без практического применения — это как научиться водить без машины. И тут на хабре есть много толковых планов по обучению например. Так что все в ваших руках!
                                                                                                                                                                                                                                                                                          P.S. и было хорошо после того как вам тут дадут много советов в комментариях, узнать ваши выводы в конце статьи. Успехов!

                                                                                                                                                                                                                                                                                            0
                                                                                                                                                                                                                                                                                            Рандомный курс/репетитор создаст минимум знаний, а также упорядочит восприятие материала для изучения программирования. В первую очередь от автора нужно реальное желание изучить программирование, чтобы не бросить все на полпути. Автору удачи в изучении. Для начала попробуйте по простейшим книгам из серии «для чайников» ознакомиться с языком программирования C. Совершенно не обязательно начинать с более сложных книг. Попробуйте попрограммировать и добиться базовых результатов, сделайте простенькие программы, порешайте задачи. Например, для изучения условных операторов обычно задают сделать простую игру «быки и коровы». Ни в коем случае не зацикливайтесь на чтении книг, обязательно закрепляйте все практикой, иногда понимание появляется именно после практической реализации. После изучения языка C будет легче понять язык java. Тогда же можно и понять основы ООП. Математику следует изучать по необходимости. Удачи!
                                                                                                                                                                                                                                                                                              –1
                                                                                                                                                                                                                                                                                              Таки перво-наперво для коллег: 'I disapprove of what you say, but I will defend to the death your right to say it'(с) Не бомбите, пжл, just wanna помочь парню абстракцией, которая в своё время выручила меня в подобной ситуации, спасибо.

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

                                                                                                                                                                                                                                                                                              И задача программиста: перевести озвученные потребности бизнеса заказчика — на язык понятный машине. Из вышесказанного следующие выводы:
                                                                                                                                                                                                                                                                                              0. Дался английский — дастся и программирование (по-сути псевдо-английский);

                                                                                                                                                                                                                                                                                              1. Учить тот язык, который соответствует задачам, что планируется/хочется решать. Не нужно учить 'латынь и древнегреческий' (фортраны-паскали и прочее) если планируется 'говорить' с IOSом;

                                                                                                                                                                                                                                                                                              2. Не нужно учить математику сверх уже имеющихся школьных знаний==базовой теории, достаточных для того, чтобы понять разницу в Big O Complexity. Т.е. не нужна ученая степень, но нужно понимать такие вещи, как логика, проценты, матрицы и геометрия. И до тех пор пока не появится задача, требующая этого навыка (возможно она не появится вовсе; возможно выбрать сферу, в которой она не понадобится, раз с ней такие 'сложности'), математика — это факультатив. Просто, когда-нибудь позже (и, довольно-таки, скоро), с профессиональным ростом, само появится желание с ней познакомиться — и это будет в удовольствие, а не в напряг, но на данном этапе — это как утверждать, что у тебя не получится говорить на иностранном — если ты не знаешь как сказать о цифрах/числах (думаю тут уже и становится понятно, насколько 'классно' без цифр/чисел можно говорить на любом языке). Пока же от 'К.О.Д.' Петцольда пользы больше будет;

                                                                                                                                                                                                                                                                                              3. Нужно осознать, что придётся 'перевести-на-компьютерный' понятия из человеческого мира (они же существительные: экран, кнопка, кошелёк, сумма, платёж), и действия над ними (они же глаголы), сходи туда-то, возьми то-то, сделай с этим что-то, и отдай это. По-сути сводится к 'бутылочному горлышку' в виде CRUD + UIные пляски а-ля анимируй вот это (если фронтенд). Ничего сложного, главное осознать сам факт/парадигму — ты просто объясняешь, с чем и что ты хочешь сделать. И в итоге по-любишь компьютеры больше людей — они однозначно трактуют и точно делают, для аутичного мизантропа меня — просто рай, кстати;

                                                                                                                                                                                                                                                                                              4. Прямая дорога на Udemy (например) -> покупается курс часов на 10-20(для начала), по интересующей технологии -> в один монитор учебное видео + во второй IDE -> ручками делаешь всё от и до -> PROFIT. Цена вопроса в дни скидок, что раз в месяц стабильно, ~ 800 руб. Очень не рекомендую (внимание: крайне субъективное мнение!) русскоязычные курсы на русских платформах, ибо дорого+устаревше+в-отрыве-от-реальных-задач == лютый треш. Лучше добивать английский, раз уже есть база и в планах релокация.

                                                                                                                                                                                                                                                                                              5. Параллельно (в целях экономии времени и вообще) изучать любую доступную информацию в любом виде (короткими кусками, статьями и 15-45минутными видео, не книгами по 2 тыс стр) о best practice в проектировании и архитектуре ПО — очень недооценнёное, редкоупоминаемое (до позиции senior) для новичка знание, которому нужно просвещаться факультативно, после основных задача, но вот прям сразу начинать, да. Нужно учится мыслить проектно/архитектурно — всё остальное пыль, прах и тлен, если этому не начать учиться уже с позиции нуба. Проясняющая аналогия: ты знаешь кучу иностранных слова и не можешь связать их в осмысленный текст, или же ты знаешь как строится речь, и если что в гугл-переводчике слово подглядишь. (Так делают все);

                                                                                                                                                                                                                                                                                              6. Программирование — это кайф, в нём нет никаких напрягов — в нём есть удовольствие(даже когда сложно). Компьютер — твой верный партнёр, а не 'непонятный враг', он надёжен, исполнителен, быстр, не устаёт. Не нужно его бояться, или пытаться 'по-бороть', прост, нужно заговорить с ним — на его языке, всио. (Сложнее заказчика понять).
                                                                                                                                                                                                                                                                                                +1
                                                                                                                                                                                                                                                                                                Собственно, для автора поста: Программист — не технарь, программист — гуманитарий, т.к. по сути он — переводчик

                                                                                                                                                                                                                                                                                                Архитектор домов — тоже гуманитарий, переводящий с языка заказчиков на язык прораба и строителей? :)
                                                                                                                                                                                                                                                                                                  0

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

                                                                                                                                                                                                                                                                                                    0
                                                                                                                                                                                                                                                                                                    — Бывает гусеница, а зайка? Червячок, а верблюд?
                                                                                                                                                                                                                                                                                                    — Юра, ну что ты какие спрашиваешь глупости!
                                                                                                                                                                                                                                                                                                    Сейчас же — «глупости». И сейчас же предположение, что ребёнок болтает зря, только чтобы болтать. Юра краснеет.
                                                                                                                                                                                                                                                                                                    — А как же бывает жук-олень, жук-носорог?(с)

                                                                                                                                                                                                                                                                                                    Речь велась об абстракции в программировании. Водолазы конюхи архитекторы тут ни при чем, нет смысла их обсуждать в контексте поста. Дело в абстракциях и умении их готовить — crucial навык для ITшника. Т.е. это наименее обидный наиболее содержательный ответ на ваш вопрос, от ч-ка, пришедшего в IT из строительного бизнеса.
                                                                                                                                                                                                                                                                                                  0
                                                                                                                                                                                                                                                                                                  Вы такой точно не один. 6 лет назад решил заняться разработкой игр.

                                                                                                                                                                                                                                                                                                  А получилось все приблизительно так же (на данный момент никуда не сдвинулся).
                                                                                                                                                                                                                                                                                                  — выбирал игровой движок исходя из размера комьюинити и роялитил на будущее.
                                                                                                                                                                                                                                                                                                  — под движо выбрал язык программирования, мне нужны были хотя бы азы чтобы понимать ролики на ютубе, выбор был C#
                                                                                                                                                                                                                                                                                                  — в итоге оплатил курсы на itvdn и прошел все что было по C#, через несколько месяцев получил C#full stack сертификат (2015 год), хотя по сути ни строчки кодга я не написал для себя.
                                                                                                                                                                                                                                                                                                  — так же осонзнал две вещи, на русском очень мало материала и так же что я забыл (или не знал) алгебру. На тот момент подумал что хорошо бы знать все о векторах и кватернионах.
                                                                                                                                                                                                                                                                                                  — пошел учить английский и читать математику начиная с 5 класса.
                                                                                                                                                                                                                                                                                                  — пошли книги по управлению проектами вроде «Мифического человека месяца» и саморазвитию.

                                                                                                                                                                                                                                                                                                  — много всякого другого интересного от

                                                                                                                                                                                                                                                                                                  — сейчас вот купил и развернул дома на виртуалках confluence+jira+bitbucket и пытаюсь сдружить авторизацию через nginx. По отдельности на субдоменах работают, а вот подружить — уже надо покапатсья в nginx поглубже и понять.

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

                                                                                                                                                                                                                                                                                                  Пытаться узнать «что там под капотом» и уметь в это… это такая же болезнь как и «Синдром самозванца». Вы правда думаете, что большинство изучает все настолько? Вспомните школьников и чуть старше, они просто используют язык как конструктор. Остальное если понадобиться, то уже позже, на этапе оптимизации если до нее дойдет.

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

                                                                                                                                                                                                                                                                                                    0
                                                                                                                                                                                                                                                                                                    Спасибо за откровенную статью. Читал и смеялся, так как видел себя. Разрешите поделиться своим мнением по этому поводу. Я буду описывать себя, возможно вы найдете что-то схожее. Если сразу по сути, то вся проблема в мышлении. Максимализм. Один человек при виде какой-то задачи или сущности сразу скажет что ему все понятно и он готов приступать к делу. Я, пока мне не будет понятен каждый атом, буду считать что я в задаче не разобрался и поэтому не буду начинать ее делать. В точности как вы описывали: «Таааак, я вот этого не знаю. Значит нужно занырнуть в эту область. Нырнул, а там… Елки-палки, я еще не знаю этого, этого и этого!» И понеслась! Бесконечная древовидная карта поглощения информации. И ты понимаешь что тебе вечности не хватит. И задаешь себе вопрос: «А как же остальные все это знают? Неужели я такой ограниченный?» Это печаль. Я уже 5 лет занимаюсь таким дайвингом.
                                                                                                                                                                                                                                                                                                    А ведь чем дольше ты к этому идешь, тем сложнее продолжать и не сдаваться. Только сейчас, пощупав всего понемногу, мой пазл начинает защелкиваться и все те разрозненные куски информации накапливающиеся все то время, складываются в общую картину.
                                                                                                                                                                                                                                                                                                    Думаю для людей с таким мышлением два, или три пути. Первый — самостоятельный, долгий и мучительный. Второй — год-два с ментором (но где ж его взять когда тебе 35 — 40 лет, кому ты нужен?), третий — тебе повезло и тебя взяли в компанию по знакомству и там ты всему научился (я лично знаю такого человека). Но везет не всем)))
                                                                                                                                                                                                                                                                                                    Из практических советов, которые мне помогли, могу порекомендовать следующее:
                                                                                                                                                                                                                                                                                                    1. Если что-то не понятно сейчас, все равно делай! Смотри курсы и повторяй (пиши код) за ведущим. Если это книга, повторяй за автором. Просто смотреть или читать, пользы мало. Даже если не до конца понимаешь почему оно работает, ты получаешь долю удовлетворения от самого факта, что у тебя что-то получилось. Это дает тебе энергию двигаться дальше.
                                                                                                                                                                                                                                                                                                    2. Пробуй какие-то библиотеки еще ДО того как ты пришел к выводу что ты гуру в этом языке программирования. Например если ты изучаешь JS, сразу тыкай Jquery. Если CSS, сразу юзай Bootstrap. Моей ошибкой было то, что мне казалось что подобные вещи мне не освоить так как я еще не на достаточном уровне владею языком. А все как раз наоборот, эти библиотеки как раз и созданы для того чтобы облегчить решение задач.
                                                                                                                                                                                                                                                                                                    3. ООП — его я по настоящему понял когда прочувствовал как работает MVC. Так сложилось что я после попыток с JS и PHP взялся за Ruby on rails. Вообще с фреймворками для начинающих беда — куча каких-то файлов разложенных по такой же куче папок. Повторял, повторял за туториалами, и бах — картина мира сложилась. И все стало ясно как день. А как только что-то защелкнулось, ВСЁ!!!, меня уже не остановить! На этот стержень начинают прилипать те обрывки которые я все эти годы копил.
                                                                                                                                                                                                                                                                                                    И самый главное — не бросай!
                                                                                                                                                                                                                                                                                                      0
                                                                                                                                                                                                                                                                                                      Не могу себя пока назвать программистом, но уже примерно год я здесь работаю. Как обычно бывает на начальном уровне — меня везде по чуть-чуть, как бы — фулстек. Спустя время уже более погрузился в бекенд. Да это ПХП, может в него порог входа легче, но…
                                                                                                                                                                                                                                                                                                      Как мне кажется все, что нужно это знать что тебе нужно.
                                                                                                                                                                                                                                                                                                      Хорошо когда есть ментор и скажет что учить, у меня такого не было и много времени пошло на то что бы учить кучу мусора который уже и забыл.
                                                                                                                                                                                                                                                                                                      Начал я по нимногу входить в ИТ. совмещая с основной роботой в торговли. за года 2 я гдето был на половине пути. И только потом поднажав за пол года выучил все что надо. Реально если заменить 8 часов работы на обучение то за пол года это под силу. Скажу так — Математика если тут нужна, то не сразу… мне пока не нужна ваще. А к тому времени когда тебе придется решать такие вопросы то понимание того как сделать придет само. И второе — наверное, не надо так сильно лезть под капот, зачем для джависта знать С, я понимаю что JVM на нем и т.д. но 90% людей это уже разбирают будучи Синьорами. так что напишу еще раз «нужно знать что тебе нужно» и ничего больше. Когда столкнешься с задачей где нужна математика, ты ее сделаешь без особого труда, ведь если ты выучил и поместил в голове столько информации для освоения языка. то это всего лишь очередная фича в твоем задании.
                                                                                                                                                                                                                                                                                                        +1
                                                                                                                                                                                                                                                                                                        Один в один как у меня было, тоже за бугор хотел свалить, только в Германию, тоже хотел мобильные приложения разрабатывать только под IOS. И абсолютно так же изучил кучу литературы и материала которая нихрена не помогла мне освоить программирование. Единственное что удалось хоть как то понять и закрепить это JS, CSS и HTML, но это было не бесцельное брожение по интернету в поисках информации, а прилетел конкретный заказ мол надо сделать сайт такой то и что бы там было и работало то то… На тот момент я уже давно интересовался созданием сайтов но так как не знал с чего начать вё превращалось в ничего, что то читал что то делал, какие то примеры выполнял и всё 0 на входе 0 на выходе… Но тут меня осенило, вот она реальная цель с ТЗ… В итоге я сказал что могу и сделаю… 2 месяца изучения всех вышеописанных языков уже целенаправленно для конкретной цели и еще месяц на разработку сайта (хотя разработка проходила скорее параллельно по принципу цель + изучил + выполнил + закрыл задачу). Вот таким не хитрым методом в голове что то осталось и помогло в дальнейшем стать тестировщиком, как оказалось эти навыки и знание этих языков пригодились на 100%. Мой тебе совет, бири конкретный проект и делай его, что не понятно гугли делай так как написано, и постепенно шаг за шагом у тебя сложится полная картина а не рваные куски каких то непонятных знаний, которые ты в жизни никогда не склеишь в одно единое целое…
                                                                                                                                                                                                                                                                                                          +1

                                                                                                                                                                                                                                                                                                          Мне кажется, что все это — наоборот, хороший знак. То, что вы решили докопаться до основ, а не фигачить формочки в продакшон, как некоторые любят. Да, это не простой путь, да, он займет больше времени, но, мне кажется, вы осилите. Главное — найти мотивацию, т.е. не просто молотить книги, но и закреплять практическими задачами. Мне кажется, я знаю алгебру 10-11 класса только потому, что она помогала мне тогда постигать программирование, а не наоборот.

                                                                                                                                                                                                                                                                                                            +1
                                                                                                                                                                                                                                                                                                            Основная проблема, с которой столкнулся автор: неудачные материалы для обучения, и как следствие «кто в лес, кто по дрова».
                                                                                                                                                                                                                                                                                                            Прям как на этой гифке
                                                                                                                                                                                                                                                                                                            image

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

                                                                                                                                                                                                                                                                                                            1. Начать с алгоритмов на базовом уровне, как последовательность инструкций кому-то («зайди в магазин», «возьми с полки пачку конфет», «оплати на кассе»), заодно освоив такие вещи, как ветвления («если закончилась еда, то сходи в магазин») и циклы («отожмись от пола 10 раз», «занимайся каждый день, пока не сдашь экзамен» и так далее).
                                                                                                                                                                                                                                                                                                            2. Взять простейший язык программирования, как уже советовали ранее. Пускай даже BASIC или Паскаль. И начать формулировать на нем простейшие алгоритмы. Например: «1) считать число с клавиатуры; 2) если это число меньше 18, то написать на экране «Несовершеннолетний», иначе написать «Совершеннолетний»». И так далее. Постепенно усложняя алгоритмы, добавляя больше ветвлений и циклов.
                                                                                                                                                                                                                                                                                                            3. Прийти к пониманию необходимости вынесения повторяющихся действий в отдельные места в коде (процедуры / функции). В примере выше «сходи в магазин» может быть отдельной процедурой.
                                                                                                                                                                                                                                                                                                              Если закончилась еда, то <сходить в магазин>.

                                                                                                                                                                                                                                                                                                              Процедура <сходить в магазин>:
                                                                                                                                                                                                                                                                                                              Дойти до магазина.
                                                                                                                                                                                                                                                                                                              Купить нужные продукты.
                                                                                                                                                                                                                                                                                                              Вернуться домой.

                                                                                                                                                                                                                                                                                                              Попутно поняв, что эти процедуры можно сделать гибкими за счет параметров. Например процедуру «сходить в магазин» можно снабдить параметрами, говорящими, что именно надо купить в магазине. Сама процедура по сути остается та же, но она каждый раз позволит покупать разные продукты. А в качестве практики, реализовывать подобные на языке программирования, где в качестве инструкций уже будут инструкции именно для компьютера: прочитать ввод пользователя, проанализировать его, прочитать или записать что-то в/из файла, и так далее.
                                                                                                                                                                                                                                                                                                            4. Ознакомиться с простейшими типами данных и понять разницу между ними: числа, строки, boolean (да/нет) и так далее. Ознакомиться с составными типами данных, например массивы: массив чисел, массив строк, и так далее. Например, может быть массив чисел, содержащий все оценки ребенка по математике за последний месяц: [5,4,4,5,3,5,5,5,4]. И в качестве практики, можно попробовать высчитать при помощи ЯП средний балл за этот месяц.
                                                                                                                                                                                                                                                                                                            5. Постепенно можно прийти к понимаю ООП. Например, есть общий тип данных (класс) «Школьник», и есть конкретные «воплощения» этого класса (объекты): «Вася», «Петя», «Вова». Класс «Школьник» может содержать метод (процедуру) «Нарисовать рисунок», но каждый конкретный школьник может его реализовывать по-своему. Условно, учитель дает всем «Школьникам» задание «Нарисовать рисунок», вызвав соответствующий метод у каждого конкретного ученика («Вася.Нарисовать_рисунок», «Петя.Нарисовать_рисунок» и так далее), но каждый ученик сделает рисунок по-своему. Учитель взаимодействует с учениками, как со «Школьниками» (объектами класса «Школьник») не зная об их специфических особенностях. Соотв-но, все эти действия можно перевести и в компьютерную плоскость.
                                                                                                                                                                                                                                                                                                            6. Ну и практика, практика, практика. Постоянно усложняя себе задачи, а также пробуя себя в различных «средах» (графика/игры, веб, десктопные или мобильные приложения, и так далее) и постепенно их осваивая, изучая имеющиеся в современном мире инструментарии для реализации тех или иных задач, и «набивая шишки».


                                                                                                                                                                                                                                                                                                            Важно также понимать, что конкретный ЯП не важен. Важно понять суть происходящего, а конкретный ЯП уже будет просто синтаксисом, позволяющим сформулировать те или иные вещи компьютеру.
                                                                                                                                                                                                                                                                                                              0
                                                                                                                                                                                                                                                                                                              Вот в случае автора вообще не уверен что ему нужно с высокоуровневых языков начинать. Я бы посоветовал прочесть «К.О.Д.» Петцольда, а дальше можно любой язык который хочется автору по книгам для начинающих изучать на практических задачах (любых).
                                                                                                                                                                                                                                                                                                              +1
                                                                                                                                                                                                                                                                                                              задача на мотки проволоки не имеет никакого отношения к обучению программированию.
                                                                                                                                                                                                                                                                                                              Вероятно авторы прелагают решить её массированным подбором.
                                                                                                                                                                                                                                                                                                              А вообще лучше пытаться опердени какие-то программировать.
                                                                                                                                                                                                                                                                                                                0
                                                                                                                                                                                                                                                                                                                лайфхак — читай по одной теме несколько книжек, то что в одной фигово дается, в другой может быть разжевано лучше и вице верса, пытаться учить технологию только по одному руководству — путь безумия и боли

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

                                                                                                                                                                                                                                                                                                                Самое читаемое