Python_newbie13Проблема начала обучения программированию вообще, используя для этого инструмент Java, заключается в том, что с Java ты не будешь знать половины вещей, которые нужно знать программисту, так как в Java они скрыты для удобства профессиональных разработчиков. Избыточность кода на Java при записи простых программ можно преодолеть, составив один раз шаблон проекта и каждый раз его использовав по новой, просто копируя код. Проблема, как видишь, не в этом. Проблема в том, что ты ничего не будешь узнавать о работе на низком уровне. Это примерно как блондинка ездит на мерседесе очень долго и успешно, из-за этого ошибочно считает себя хорошим водителем и автолюбителем, а потом у неё выходит из строя свеча под капотом. Вместо того чтобы заменить свечу самостоятельно (будь она настоящим автолюбителем), она едет в автосервис, где ей втюхивают перебор всего двигателя за крупную сумму. Она думает, что очень развитая, но на деле даже с мелочью справиться не может.
Вот есть Java. Учиться с 0 на ней - это ад. Тебя в начале учат, что такое класс, метод, конструктор, модификаторы доступа. Затем наследование, абстрактные классы и интерфейсы ну а потом уже алгоритмизации как таковой. Так вот понять новичку всю эту карусель невозможно(Может я тупой). Но из-за этого писать говнокод на Java сложнее.
Начиная учёбу по всему программированию, используя как инструмент для этого язык Java, ты в конечном итоге потратишь время и не будешь знать ни программирование, ни Java. Ты будешь знать только, что ты начал как-то неправильно. Время прошло, а ни одной программы ты не можешь написать.
Python_newbie13Вузы заменяют Pascal на Python. Просто на Паскале уже нельзя ничего написать современное, поэтому учащиеся просто теряют интерес к обучению. В то же время Питон хорошо вставляется на многие устройства и учащийся на питоне может запрограммировать себе бота для игры, в которую он там играет с фанатизмом, или запрограммировать игрушку на ардуино. То есть он может полученные навыки закреплять с интересом для себя и получать дополнительную мотивацию для дальнейшего становления программистом. Раньше можно было на Паскале это делать, так как тогда была DOS, для которой можно было что-то написать - повторить какую-то игру, вывести какую-то графику, произвести на кого-то впечатление. Тогда было очень много программ от студентов. Они с любовью писали эту всю графику по точкам, где тебя программа с красивыми картинками в консоли учила набирать текст на клавиатуре. Это важный аспект обучения. Очень сложно изучать то, что неинтересно и неприменимо. Поэтому студенты с удовольствием и изучали Паскаль, и писали на Паскале, а потом и работать шли тоже на Паскале. Питон выглядит как игрушка, но в то же время это не игрушка, а профессиональный инструмент, который даёт возможность и учиться на нём, и работать на нём в плане реализации карьеры в жизни. Поэтому он хорошо подходит для обучения и как инструмент, и как мотиватор. И даже то, что в Питоне не задаются типы переменных явным образом (а про это нужно знать как про явление), роли не играет, потому что преподать типы переменных с помощью Питона можно.
Просто очень многие вузы, как наши так и зарубежные ставят Питон во главе языков с которых проще начать программировать.
Python_newbie13Думаю, ты слишком сложную задачу взял. Ты её не потянешь просто, так как для этого нужно знать первое, второе, пятое и десятое. А ты не знаешь ни одного из этих необходимых и тебе ещё наивно кажется, что это простенькая задачка.
Моя цель минимум - это просто научиться писать сложные алгоритмы. Как пример я сейчас пытаюсь осилить алгоритм который сокращает выражение с переменными т.е пользователь вводит (x+5)*(x-y) и получает
x^2 +5x -x*y - 10.
Python_newbie13Думаю, ты ошибочно полагаешь, что у тебя получается.
Получается так себе(уже неделю страдаю, но реализовано только умножение и сложение и частично степени,если они целочисленные)
Неделю ты потратил уже. Результат нулевой. Единственный плюс - ты перешёл с этапа неосознанной некомпетентности на этап осознанной некомпетентности.
Обучение идёт такими циклами по четыре шага:
1. Неосознанная некомпетентность.
2. Осознанная некомпетентность.
3. Осознанная компетентность.
4. Неосознанная компетентность.
То есть ты думал, что решишь эту задачу, а теперь понимаешь постепенно, что ты не можешь её решить. Теперь, на втором этапе, тебе предстоит собрать информацию о том, как решить эту задачу. Потом ты будешь её решать с помощью собранной информации и решишь её в итоге еле-еле. Так ты перейдёшь на третий этап и будешь уже там тренироваться решать такие задачи, но уже они будут решаться в итоге все. И потом тебе постепенно начнёт казаться, что ничего сложного в них не было изначально и ты просто от природы умеешь их решать. Это четвёртый этап. На четвёртом этапе ты будешь просто видеть при поступлении новой задачи всё её решение от начала до конца. А когда ты будешь это всё делать руками, оно просто сразу будет получаться идеально и всё будет работать. Результат прохождения четвёртого этапа будет выглядеть так: поступила задача; ты, не думая особо ни о чём, начинаешь её реализовывать как набросок; в результате она полностью написана и работает идеально. При вопросе “а как я это сделал?” ты будешь получать ответ “да само собой как-то получилось”. Это как знаешь “почему у тебя получается читать текст на экране?”, ты подумаешь и скажешь “да он как-то сам читается, я не знаю, как я это делаю, я не задумываюсь даже об этом”. Вот это называется неосознанная компетентность. И получена она когда-то давно в школе точно так же через все эти четыре этапа.
И так предстоит пройти по каждой теме во всём программировании. Поэтому учатся этому - программированию и всему, что с ним связано, - много лет, потому что там и тем дофига, и проходить их очень долго нужно; и очень часто это ещё и сложно, и ещё бывает, что информации не хватает (то есть ты не можешь перейти со второго уровня на третий).
tags: learning general