Как научиться придумывать более простые алгоритмы, для решения любой задачи?
Т.к. я буду поступать в вуз на программирование, то решила уже сейчас, находясь в 10 классе, начать учиться этому. Я уже освоила основы Python 3, C++, а также сейчас осваиваю HTML, CSS и JS. Но я столкнулась с такой проблемой, что не могу придумать более простой алгоритм.
Это особенно видно на простых задачах, где многие другие люди пишут крайне простой, но рабочий алгоритм, занимающий всего пару срок, пока у меня этих строк все больше и больше... Причем, перенести алгоритм на ЯП мне труда не составляет, но эта разница в простоте самого алгоритма, меня расстраивает. Я понимаю, что это скорее всего, из-за недостатка опыта (всего 4 месяц учусь этому, до этого опыт кодить был только на паскале), но хотелось бы быстрее научиться придумывать более простые алгоритмы. Что можно сделать в такой ситуации?
Вы понимаете, что обрекаете себя на заведомое отставание от тех, кто придет в институт уже с четырьмя годами опыта самостоятельного программирования? Не наезда ради это говорю - просто это область знаний, которую немалое число людей выбирает и начинает изучать очень рано - лет в 12-13. В других областях, где самостоятельно практиковаться сложнее, такого перекоса нет.
Moskus,
Вы понимаете, что я даже понять не могу, что именно вы пытаетесь мне сказать?
Если вы пытаетесь... "уберечь" меня от программирования, то поверьте, у вас ничего не выйдет. Ещё никому не удавалось отбить у меня желание заниматься тем, что мне нравится.
Katawara,
Ну если вы настолько настойчивы, то почитайте про декомпозицию
Также вместо осваивания верстки - сосредоточтесь на одном ЯП и доведите владение им до вменяемого состояния
Moskus, а мы точно говорим об одних и тех же вещах? Лично я не вижу никакой связи с моим вопросом, и вашими ответами. Вообще никакой. Ибо я спрашивала про алгоритмы, а вы мне про детей, который кодить рано начинают, а теперь ещё и про возможности. Поверьте, если сосчитать то кол-во дел, которыми я занимаюсь помимо коддинга, да ещё и имею успех в них, то многие просто не поверят в это, ибо не могут сами совмещать много всего за раз. А я могу, и успешно пользуюсь этим.
Moskus, я свои 5 копеек вставлю, так что теперь оставить все дела только гениям? Если ты на 5% хуже думаешь , работать дворником?
А у меня вот другая статистика есть, много гениев , от того что им все легко дается , рано или позно спиваются или начинают быть наркоманами к примеру.
Был реальный случай когда человек употреблял алкоголь каждый день , потому что не мог терпеть всю убогость простых людей которые его окружают , а сам был реально вундеркиндом , с завязанными глазами в уме решал любые задачи
это забавно, потому что для того, чтобы стать хорошим программистом, нужно еще научиться очень трезво оценивать свои возможности
Откуда вы знаете? Как вы можете быть уверены про себя, что вы хороший программист? Может вы просто нетрезво оцениваете свои возможности? Если вам сказал об этом ваш работодатель, так возможно это просто для того, чтобы удержать посредственного специалиста на it-безрыбье.
mrusklon, у меня такой знакомый был, пил, нюхал кокс, закончил вуз с золотой медалью, знал 12 языков из них 4 на уровне военного переводчика, его постоянно таскали в дальние походы с визитами и переводчиком с делегациями. Погиб в 27 по причине вождения а/т в состоянии наркотического опьянения.
На вопрос "зачем ты употребляешь всю эту гадость?" отвечал "Мир настолько убог, что я завидую тем кто неспособен это увидеть"
Дмитрий, я даже не буду у вас интересоваться, откуда вы вообще взяли, что я - программист. А, тем более, что я говорю о себе, как о положительном примере. Это какая-то свирепая фантазия.
Moskus, Я просто подумал, что для уверенного заявления об условиях, необходимых для того, чтобы стать хорошим программистом, необходим соответствующий личный опыт, отсюда и моя свирепая фантазия.
Дмитрий, для того, чтобы констатировать какие-то факты, опыт, тем более - личный, нужен крайне редко. Зато вот апелляция к опыту - очень распространенный ложный логический аргумент. Так что побольше логики, поменьше фантазий.
Katawara, не слушайте его. Из моих однокурсников почти никто серьезно до универа не изучал программирование, тем не менее все стали успешными программистами. Самое главное - это желание этим заниматься. Ну и я бы сказал, что склонность к техническим наукам будет плюсом. То есть проще это дастся в жизни.
Дмитрий, я и не буду слушать его, т.к уже давно научилась отсеивать полезное, от хлама. А вот про желание вы прям в точку попали. Моя учительница по математике всегда говорит, что желание - это сотни возможностей.)
Классический подход выглядит так: смотрим на задачу и пытаемся понять как мы будем её решать руками, рассматриваем разные варианты задачи, ошибаемся, пробуем ещё раз, знакомимся с ней одним словом. Потом полученное решение пытаемся формализовать и описать с помощью языка программирования.
А ещё может быть дело в незнании возможностей языка и стандартной билиотеки. К примеру, если не знать, что так можно, то вместо r = [a.foo() for a in b if a is not null] придётся написать много кода.
Но я Си учил не по учебникам, просто я работаю волшебником...
ЗЫ Это внутреннее ощущение, оно появляется действительно с опытом, может пройти год или два коммерческой разработки. Ты вдруг смотришь на свой старый код и ясно понимаешь как его оптимизировать. Это магия, этому нельзя научиться.
Другое дело вы уверены, что хотите провести жизнь перед компьютером, копаясь в коде? Деньги будут, но настоящее удовлетворение и счастье вряд ли.
Moskus, предположим, вы любите читать. Вы перечитали уже все книги, что были у вас дома, и все ещё глотаете их одну за другой. И тут вы поняли, что хотите связать с этим жизнь. А теперь скажите, должны ли вы хоть кому-то объяснять, а то и вовсе доказывать, почему вы хотите и собираетесь связать жизнь именно с литературой? Вот именно, нет.
Katawara, фокус тут в том, что это ваша жизнь и ваше время, потому, прежде всего, вам стоит объяснять и доказывать целесообразность той или иной затеи себе. Если вы это считаете ненужным - чудесно, эффект от этого почувствуете, в первую очередь, вы. А я - нет. И мне вы ничего не должны, конечно - я ещё не сошел с ума, чтобы считать обратное.
Moskus, а вы думаете, что я решила стать программистом за одну ночь? Я несколько месяцев выбирала, между генетикой, биохимией, астрономией, гидрометеорологией, и, наконец, программированием. И вот, буквально несколько дней назад, я, после долгого анализа каждой из этих специальностей, пришла к выводу, что именно от последнего, мне будет больше всего пользы.
И да, вам стоит усвоить один урок. Если вы не знаете человека, вы не в праве говорить, что ему надо делать, с его же жизнью.
Katawara, нет, урок стоит усвоить вам, что не стоит приписывать людям мотивы, о которых вы ничего не знаете. Тем более - ещё только учась в десятом классе.
Moskus, мотивы..? Ах, я приписываю вам мотивы? Это какие, позвольте спросить?
Знаете, во всех ваших комментариях, я заметила лишь одно: манипуляцию. Я понимаю, что вы пытаетесь убедить собеседника (в данном случае меня), отговорить от изучения программирования, но я повторю ещё раз, у вас это не получиться. Но я не могу понять, зачем вам это. Могу понять только то, что вы явно не далекого ума человек, раз до сих пор пытаетесь этим заниматься.
Вы наверное сейчас начнете открещиваться от своих манипуляций, но давайте я покажу их более наглядно:
Откуда вы это знаете, если занимаетесь этим несколько месяцев в учебных условиях?"
Не совсем понимаю, к чему это адресовано: к моему ответу "да" к словам Дмитрия "хотите провести жизнь перед компьютером" или к ответу "Мне это нравится,"? /*возможно вы сейчас подумаете, что я дура, и конечно же вы говорили про "да", но я всего лишь делаю то же, что и вы: задаю очень тупой вопрос*/. Это не пример манипуляции, это пример тупости. Но вот то, что будет дальше...
1) Вы понимаете, что обрекаете себя на заведомое отставание от тех, кто придет в институт уже с четырьмя годами опыта самостоятельного программирования?
2) Это забавно, потому что для того, чтобы стать хорошим программистом, нужно еще научиться очень трезво оценивать свои возможности.
3) Тем более - ещё только учась в десятом классе.
Итак, по порядку: 1 - попытка подавить мое желание изучать кодддинг, используя сравнение меня, с этим "большим" кол-вом 12-13-леток, о котором вы упомянули дальше, чтобы я начала сомневаться в своих силах и способностях.
2 - как я думаю многие знают, подростки, коим я и являюсь на данный момент, бывают слишком импульсивны, да ещё и максимализм пристает... в общем, вы понимаете, о чем я.
Во втором предложении вы ставите акцент на трезвой оценки возможностей. Суть проста: жертве напоминают, что она могла взять груз сверх своих сил, а значит, легко может серьёзно оступиться на пути к своей цели, и прекратить свой к ней.
3 - напоминание о статусе, а также возрасте. Для усиления прошлой манипуляции.
По идее, жертва, после всех шагов, должна вновь обдумать свое решение, но уже с более негативным окрасом, из-за которого она, скорее всего, откажется от этой идеи.
Меня уже пытались этим взять, и не раз. Так что на меня подобное, уже очень давно не действует.
Wentixon, мир. Передо мной открыт целый мир, для которого я бог. А быть богом, даже в виртуальности, это очень интересно. Ведь, можно создать все, чего захочется. Можно воплотить в жизнь все невероятные и нереальные фантазии, начиная от желания стать каким-нибуть чародеем средневековья, заканчивая созданием своего личного варианта развития истории.
Меня это очень привлекает, ибо хочется создавать все это. Но я хочу делать не дизайн или пространство, а хочу писать те законы, по которому этот мир работает. В будущем планирую устроиться в какую-нибудь компанию по созданию комп игр(желательно рпг), и писать эти самые законы.)
Katawara, у тебя просто ложные представления как о себе, так и об отрасли, тебе говорят это несколько человек, но ты не хочешь слушать. Ты хочешь быть чародеем средневековья? Ну так тебе в театр может? При чем черт побери здесь программирование. Программисты код пишут, а не придумывают идеи или истории развивают. Напиши лучше книгу, если фантазию некуда девать. Кстати твои фантазии не очень то нереальные так то..
мир. Передо мной открыт целый мир, для которого я бог. А быть богом, даже в виртуальности, это очень интересно.
Я так же ощущал это в 12 лет. Когда я садился за компьютер и на нем в досе загружался бейсик и я ощущал что сейчас могу творить, у меня по спине совершенно натурально бежали мурашки.
К сожалению в профессиональном программировании Бог не настолько свободен в своем творчестве, иногда заказчику хочется, чтобы мир был сотворен еще на прошлой неделе, и тебе иногда приходится идти на встречу и божественность творения постепенно сходит на нет, а остается моральная усталость и зависимость от высоких зарплат.
Так что пока в кайф это прекрасно, но главное вовремя бросить, когда перестанет доставлять удовольствие.
Wentixon, я это привела лишь как пример того, что можно сделать с помощью программирования, неужели не очевидно?
Одна из моих фантазий, разбомбить планету ядерным орудием. Это можно воплотить в реальность, но лишь раз, да и зачем, когда можно создать такое в виртуальом мире, и наслаждаться этим множество раз. Дмитрий,
Это я понимаю. Я под влиянием аниме, которое когда-то часто смотрела, захотела выучить японский. С того момента прошел год, а мой уровень японского между N4 и N3, и сейчас мой мотиватор учить японский, уже давно не аниме, а желание жить и работать в Японии. Нужно лишь время, и тогда мотиватор на коддинг тоже сможет поменяться.
Katawara, тебе кажется имя что ты слишком гениальна? Если ты не в курсе, планету побомбить можно в Фотошопе или сделать видос. Или просто посмотреть 100500 видосов на Ютубе или фильмов, которых ещё больше. Или скачать игру "Бомбила" и там побомбить. Или нанять прогрогера, который сделает твою Бомбила, а ты потом будешь бомбить ;))) Это, конечно, хорошо, что у тебя столько амбиций, но лучше руководствоваться опытом других людей, а не поддаваться эмоциям и идти не туда куда хочешь. Все хотели как и ты творить.. Но творить тебе никто не даст и это выходит за рамки программирования. Хочешь сотворить - установи юнити и рисуй все что захочешь. Думаю даже программировать не захочешь
Wentixon, Наконец-то могу ответить.
Скажите, сударь, вы кого пытаетесь показать дебилом, меня или себя? Я вам сразу написала, что мне нравиться не рисовать или создавать 3D-модели. а кодить. Кодить то, благодаря чему эта самая модель сможет правильно падать, например. Вы либо слепой невнимательный, либо видите в моих ответах то, чего в них нет.
Но творить тебе никто не даст и это выходит за рамки программирования.
То есть получается, что я должна у кого-то спрашивать, куда и на что мне тратить свои знания? С чего бы-то? Свои мозги я могу потратить куда угодно и никто не вправе решать это за меня. Работа - работой, но остальное время за мной.
#Кстати, а юнити, который вы уже приводили выше, разве не программистами написан? А, поняла, это же подарок небес, а то и вовсе богов... Вопрос снят.
Короче. Сначала я сралась с Moskus "ом, а теперь и с вами. Мне это уже надоело. Вот честно, если вы не умеете читать, то это не ко мне, это в начальную школу. Более никакого смысла сраться с вами нет, ибо кроме желчи, в данном случае, вы уже не дадите.
Katawara, Слушай, программирование это круто и интересно, но у тебя немного неправильное представление о задачах программиста. Когда же человек получает не то, что ожидает обычно это для него не очень приятно. Я желаю тебе удачи и успехов, надеюсь, что все у тебя получится). На твой вопрос кстати только что ответил в коменте - Как научиться придумывать более простые алгоритмы, для решения любой задачи?
Не слушайте никого. Если вам нравится, и нравится уже давно, то продолжайте, изучайте, копайтесь и углубляйтесь. Вдруг это ваше! Только я очень рекомендую не заниматься только программированием. Узнавайте как можно больше областей, ведь самое интересное происходит на стыках областей знаний.
А если будете чисто программистом, то будет, как написал Дмитрий: "К сожалению в профессиональном программировании Бог не настолько свободен в своем творчестве, иногда заказчику хочется, чтобы мир был сотворен еще на прошлой неделе, и тебе иногда приходится идти на встречу и божественность творения постепенно сходит на нет, а остается моральная усталость и зависимость от высоких зарплат."
При чём тут язык? Алгоритмы пишут обычно на псевдоязыке (что-то типа Паскаля или Питона).
Если вам интересен функциональный подход, почитайте Haskell или F#.
Вот действительно, при чем тут язык? В вопросе я лишь сказала, что могу написать свои алгоритмы на любом ЯП, который изучаю, но я спрашивала о том, как создавать более простой вариант алгоритма... Пожалуйста, я выше уже сралась с человеком лишь из-за того, что он немного невнимательно прочитал мои ответы, так что давайте не будем разводить что-то подобное (срачи) и здесь...
Katawara, раз вы не описываете чётко, какая область алгоритмов вас интересует, попробуйте шахматный вариант (разбор партий, поиск ошибок). Если вы нашли более удачный алгоритм, подумайте, какая структура не пришла вам в голову.
В программировании может нравиться сам код, сами языковые конструкции. Если это интересно, то все равно, какая прикладная область, хотя желательно, чтобы это была интересующая Вас сфера: моделирование физических процессов, гэймдев, энтерпрайз приложения.