Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Save anonymous/3764eaac0e33b5f4a700e62982e43ae3 to your computer and use it in GitHub Desktop.
Save anonymous/3764eaac0e33b5f4a700e62982e43ae3 to your computer and use it in GitHub Desktop.
Навыкам и способам мышления

Навыкам и способам мышления - Навык мышления, которому вас никто никогда не учил


Навыкам и способам мышления



Логическое мышление - развитие логики
6 способов улучшения мышления
Что такое аналитическое мышление и как его развивать
6 способов улучшения мышления
6 способов улучшения мышления
6 способов улучшения мышления













Только полноправные пользователи могут оставлять комментарии. TM Feed Хабрахабр Geektimes Тостер Мой круг Фрилансим. Хабрахабр Публикации Пользователи Хабы Компании Песочница. Выучить новый язык программирования Изучение нового языка программирования разовьет новые способы мышления, особенно если новый язык программирования использует парадигмы, с которыми Вы еще не знакомы. Многие из приобретенных способов мышления могут быть применены к языкам, которые уже знаете. Возможно, вы даже полюбите новый для Вас язык программирования настолько, что начнёте использовать его для серьёзных проектов. Среди языков программирования отличный познавательный эффект и наверстывание опыта дают: Lisp или Scheme , Форт , PostScript или Factor стековые языки программирования , Haskell строго типизированный , чистый функциональный язык либо OCaml объектно-ориентированный язык функционального программирования , Пролог логическое программирование , Erlang отличные паралельные вычисления. Прочесть хорошую, сложную книгу по программированию Много знаний можно почерпнуть из книг. Несомненно, практика имеет очень важное значение, но прочитав хотя бы одну хорошую, сложную книгу по программированию, Вы не только проверите своё мышление, но и, вероятнее всего, прокачаете свой скилл в этом вопросе. Вот пример такой литературы: The Art of Computer Programming если хотите вскипятить мозг , Structure and Interpretation of Computer Programs , A Discipline of Programming или знаменитую dragon book. Concepts, Techniques, and Models of Computer Programming. Такие книги не дадут вам весомой пользы, с точки зрения улучшения навыков программирования. Присоединитесь к open source проекту Какие преимущества участия в open source проекте? Командная работа прекрасная вещь, особенно, если раньше работали только самостоятельно , возможность научится копаться в чужом коде, понимая его достаточно сложная задача. Известные и не очень сообщества разработчиков открытого программного кода: GitHub , Sourceforge , gitorious , BitBucket , Ohloh. Решать программистские головоломки Это тоже отличный метод улучшения навыков программирования, тем более, что найти задачку на вечер сейчас не проблема. К примеру, математически-ориентированные задачи можно найти на Project Euler , который является одним из самых популярных сайтов с головоломками по программированию. От себя могу посоветовать The Python Challenge. Также предлагаю Вам попробовать программистский гольф, где программисты пытаются решить задачку, сделав как можно меньше нажатий клавиш. Это может научить Вас многим изотерическим и специальным особенностям языка программирования, сделав работу более творческой и веселой. Попробовать себя в этом специфическом гольфе можно тут. Timus Online Judge Ссылки от winger: Разрабатывайте самостоятельно всю архитектуру и реализуйте ее. Программирование — лучший способ научится программированию. Вы будете учится на своих ошибках, и под конец проекта получите гораздо больше удовольствия, чем от прочтения книги. Читайте и изучайте код Исследуйте интересные коды, например ядро Linux имейте в виду, это очень большой код. Хорошей операционной системой для учебных целей является MINIX3. Вы сможете познать много новых идиом языка, а еще кое-что о архитектуре ПО. Чтение незнакомого исходного кода — это сложная, но очень полезная работа. Зависайте на сайтах и форумах по программированию, читайте блоги Зависая на сайтах и форумах по программированию, вы покажете себя и поучитесь у других. Также читайте блоги, желательно почаще. Посоветовать могу Joel on Software больше не публикует записи, но есть архив, в котором можно найти много интересного , Coding Horror и Lambda the Ultimate. Пишите о программировании Заведите свой блог о программировании, и пишите в него, пускай даже для себя. Так вы можете получить знания в вопросе, с которым самостоятельно, возможно, никогда и не столкнулись бы. Если чувствуете себя уверенно — пишите туториалы. Если пишите о программировании — должны быть в курсе освещаемого вопроса по максимуму, использовать соответствующую терминологию, иметь возможность грамотно ответить на поставленный по теме вопрос. Если пишите на англоязычных сайтах — это еще и отличная возможность прокачать свои знания английского. Изучите низкоуровневое программирование Изучение низкоуровневого программирования полезно для лучшего понимания работы машины. Почитайте о C , возможно освойте ассемблер. Узнайте, как компьютер выполняет программу, и как работает операционная система на высоком уровне, по крайней мере. Если вы хотите познать серьёзное в низкоуровневом программировании, то почитайте книги по компьютерной организации, операционным системам, встраиваемым системам, по разработке драйверов и. Если Вы хотите подучить ассемблер и узнать о построении операционных систем — рассмотрите исходный код VictoriaOS , попробуйте написать для неё несколько простейших программ типа echo. SaveTheRbtz поделился интересной ссылочкой: Не гонитесь сразу за помощью! Итак, у Вас появилась проблема в коде: Вы хотите ее решить как можно быстрее. Пишите сразу на форум, в QA, или просто другу. Так вот, никогда так не делайте. Лучше самому потратить время, пытаясь исправить ошибку самостоятельно. Возьмите бумагу, карандаш и распишите схему работы алгоритма, сверьте с кодом. Отдохните, сходите на прогулку, освежите мозг, попробуйте разобраться снова. Вы уже часик-второй время зависит от размера проблемы мучаетесь с этим куском кода? Избили Google в поисках решения? Так и быть, обратитесь за помощью. Во всяком случае пытайтесь решить проблему своими мозгами. Вы потратите время, но прибавите навыков. В некоторых пунктах есть ссылки на хорошие книги, блоги, сайты. Если у вас есть чем дополнить линк-лист желательно русские ресурсы, книги — пишите в ЛС, обязательно добавлю. Программирование 2,9k авторов , 6,5k публикаций. Анализ и проектирование систем авторов , публикация. Java 1,1k авторов , 2,2k публикаций. Разработка игр 1,2k авторов , 2,9k публикаций. Алгоритмы 1,3k авторов , 2,3k публикаций. Разработка под Android 1k авторов , 2,2k публикаций. Разработка мобильных приложений 1k авторов , 2,8k публикаций. Информационная безопасность 2,4k авторов , 6,4k публикаций. JavaScript 1,9k авторов , 4k публикаций. Ненормальное программирование авторов , публикации. Добавить в закладки Дмитрий Науменко SilverFire карма. Зависайте на сайтах и форумах по программированию, читайте блоги Вместо этого должно быть: Подпишитесь на англоязычные списки рассылки, организованные разработчиками ваших компиляторов, языков, библиотек, фреймворков, whatever else. А на форумы и блоги попадают лишь слабые отголоски дальних гонгов. Кстати не подскажете англоязычный портал на подобие хабра? Что-то вам не то советуют. А подскажите какие нибудь сайты раз тут там много опытных людей где обсуждаются роботы. От простых, где лампочки моргают до бегающих роботов, играющих в футбол: Очень интересуюсь этой темой, но именно с точки зрения интузиастов-самоделкиных. Чем больше практики, тем больше навыков. Сколько бы не говорили, что это потеря времени, оно все равно остается самым лучшим способом обучения. Вроде, хотите узнать как работают cms — напишите свою. Это же относится к 3d технологиям, игровым движкам и т. Почему все так против велосипедостроения? Вообще, я за создание собственных велосипедов с целью образования, и, если они удачны, последующее их использование в своих проектах. Ну, а если не удачны, то хотя бы знания получили. Тут вопрос скорее в другом — насколько разумно писать велосипед в данном, конкретно взятом случае. По своему опыту могу сказать, что все велосипеды в моих проектах по качеству были хуже уже написанных. Просто очень часто многие программисты думают, что они могут написать лучше и быстрее, однако, как это часто бывает, они ошибаются. Только в редких случаях имеет смысл писать что-то свое. В любом случае это зависит от ситуации и решаемых задач. Но согласен, принимать решение нужно по обстоятельствам, учитывая сильные и слабые стороны двух подходов. Тут всё просто объясняется — проектирование Но вот оставшиеся А энтузиазм-то уже кончился ;- И не только у разработчика, ещё и у того кто распоряжается ресурсами. Сроки начали поджимать, то что казалось интересным и простым — оказывается, зачастую, нудным и громоздким… Вот и сдаётся чуть более чем наполовину закончиный движок. Чуть более чем наполовину выполняющий задачи модуль. Чуть более чем наполовину сильнее задуманного тормозящий сервер. И на всём этом всё равно надо ехать. И некоторые даже доезжают до промежуточных чекпойнтов. Но тем кто пару лет участвовал в проектах где за фундамент взят недостроенный велосипед, а ещё лучше — оплачивал разработку ТАКОГО — становится понятно — что строить велосипеды в рабочее время — это саботаж. И даже большинство разработчиков в итоге понимают — что тот период триумфа от стройной архитектуры в мозгах, проходит за месяца, а работа ведь только начата. А признать свою ошибку и вернуться на развилку — не всем позволяет гордость и смелость. Поверьте — велосипеды это не выбор смелых и решительных. Ну или для новичков. Потому что навыки выбора и освоения чужого не появляются. Ремесленник, делающий все с нуля, не станет инженером, работающим с полуфабрикатами. Как обучение это хорошо, но многие предпочитают учиться всю жизнь на деньги заказчика. Помогайте другим решать проблемы. Stackoverflow — отличный ресурс, где можно помочь другим. Каждый полезный ответ улучшает рейтинг, кстати. Не только помочь другим, но и самому спросить совета в трудной ситуации. Хорошие вопросы там тоже ценятся. Но все-таки навыки улучшаются от попытки решить проблему, с которой столкнулись другие. Кстати, там же можно потренироваться на написание кода на скорость — дело в том, что ответы на новые вопросы появляются очень быстро, иногда буквально за минуты. Бывает, что вы пытаетесь ответить на чей-то вопрос, кодите примерчик неторопливо, а когда решение найдено и вы хотите его опубликовать — бум! Из русскоязычных ресурсов — хорош rsdn. Да-да, на предмет таких случаев там даже аяксовый авто-апдейт прикручен, чтобы уведомить о появлении новых ответов. Насчет ресурсов — лично я как-то пользовался forum. Впрочем, не подумайте чего — с остальными пунктами я тоже более чем согласен. Ведь невозможно знать всё на свете — всегда есть что-то, что ты упустил, не заметил или даже не предполагал…. NET тоже должен быть силен. А я соглашусь насчет 9-го пункта. Помню как еще в школе изучил ассемблер, и далее в институте на схемотехнику учил. После этого изучить новый язык не проблема. И хорошо понимаешь где в программе узкие места по производительности, памяти и т. И как вообще все работает на низком уровне. По-моему личному субъективному мнению, 6-й пункт наиболее важен. Порекомендуйте, где можно почитать чужой perl-код. НЛО прилетело и опубликовало эту надпись здесь. Доскональна изучите тот язык на котором вы программируете сейчас, уберите все пробелы в понимании, разберитесь как работает каждый оператор даже если он интуитивно понятен привет instanceof из JavaScript. Это будет на много полезнее чем пункт 1. Нужен хотя бы один язык основанный на прототипном наследовании, из актуальных: ECMAScript JavaScript ECMAScript взрывает мозг, тем кто не знаком с прототипным делегирующим наследованием. Не поленитесь почитать как все устроено, уверяю, вас ждёт много открытий. Само собой, в языке, который непосредственно используется в разработке прямо сейчас, нужно разбираться досконально, но если вы хорошо знаете один и только один язык, то всю жизнь будете забивать гвозди микроскопом. Ну либо с помощью молотка изучать строение молекул. Соглашусь, что молотком сложно изучать строение молекул. Но уж лучше знать 1 язык доскональна — с глубоким знанием поймешь подойдет он для конкретной задачи или нет, чем N языков поверхностно — да будешь знать принципы, заложенные в языки, но напишешь ли хорошую программу в стиле данного языка?! Понятно, что базовые понятия ты будешь знать и реализуешь так или иначе говнокод алгоритм. Я уверен, что при поверхностном изучении каждый будет писать на одном языке в стиле другого — это как пересесть левого руля на правый или с мотоцикла на авто и водить с крыши. Вот примеры смешения стиля: Знаешь свой язык на высоком уровне — изучи другой, возможно он больше понравится. Конечно, в случае поиска языка после ВУЗа часто ищут на чем бы писать мой совет, безусловно, не подходит. Мне прототипное наследование мозг не взорвало. Может, Вы расскажете, чем оно принципиально отличается от наследования в языках с классами? Внезапно вспомнилось ещё насчёт наследования и взрыва мозга. Посмотрите на язык io, в котором тоже нет классов, но вместо наследования используется клонирование. Вот тут уже есть принципиальное отличие как от языков с классами, так и от EcmaScript: Ого, моя VictoriaOS ещё кому-то интересна, здорово! Если у кого-то будут вопросы касательно её устройства, обращайтесь. Хотелось бы найти побольше сайтов с программистскими головоломками, чтобы было из чего выбирать. И от нашего университета: И ещё один http: Может показаться странным, но разбор кода с govnokod. На что у меня ушли месяцы и годы ему объясняется за минуты. Подход может и не системный, но в совокупности с другими пунктами дает хороший эффект. Здорово, когда есть гуру! Главное больше примеров из жизни, чтобы лучше запомнилось и усвоилось. Нашёл весьма интересным и познавательным для себя писать программы одновременно на C и на Lua. Лучше понимаешь как language bridges устроены в том числе и для других языков. Причем к проекту с технологией которая вам нравится. Изучайте — знания вам всегда пригодятся! Для себя открыл пару интересных проектов на github которые я активно изучаю и даже пытаюсь хакать: А вместе с ней структуру драйверов и vfs api BSD. На Facebook и Yandex есть интересные задачки, но требуют регистрации www. Как говорил мой научный руководитель: Сам теперь преподаю — способ подтверждаю. Изучите ассемблер, чтобы понять, как работают алгоритмы и даже базовые конструкции высокоуровневых языков — это очень поможет в оптимизации ваших программ. Чтобы понять, как работают алгоритмы — надо, как это ни банально звучит, изучать алгоритмы и структуры данных. Изучение ассемблера тут не поможет никак — возможно, даже и навредит, потому что всё понимание, собственно, алгоритмов окажется погребено под нагромождением заталкиваний значений ячеек памяти в стэк и опросом регистров, а всё понимание структур данных — соответственно, под нагромождением байтов и DWORD-ов. Чтобы понять, как работают базовые конструкции высокоуровневых языков — надо, как это ни банально звучит, изучать базовые конструкции высокоуровневых языков. Чем тут, опять-таки, может помочь изучение ассемблера с его, по-сути, единственной языковой конструкцией — условным переходом по адресу? Научит применять goto в высокоуровневых языках? Единственный рациональный аргумент проповедников ассемблера, который мне удалось уловить я, кстати, не уверен, что все они его сами осознают — полезно видеть детали реализации программы на уровень ниже глубже того, на котором, собственно, реализуешь. Ну, чтобы не удивляться потом, что у тебя функция strlen имеет сложность O n , или при сложении двух больших положительных X и Y вдруг получается отрицательный Z. Но при чём же тут, пардон, ассемблер? Как знание MOV AEX, EAX поможет оптимизировать код на, допустим, Джаваскрипте или Питоне… да хрен с ними — даже на C? По сути, изучение ассемблера подразумевает помимо знания опкодов и постановки низкоуровневого мышления изучения среды, в которой будет исполняться код. Простор для оптимизации заключается не в том, чтобы просто взять и переписать функцию на ассемблере. Например, использовать те или иные расширения SSE различных версий, MMX, 3DNow и т. Алгоритмы работы планировщика, переключающего между задачами, алгоритмы работы со страницами памяти и т. В конце-концов изучение ассемблера открывает ранее недоступные области: Программирование — оно такое, оно не заканчивается на прикладном ПО и числодробилках. Если программисту надо, реально надо оптимизировать свои программы на столь низком уровне — ассемблер, вероятно, уже является его основным рабочим инструментом. При этом как один из языков для изучения в п. Кажется, уже не раз говорили о том, что компиляторы оптимизируют код куда лучше людей. Дело не только в оптимизации. Ревёрсинг и низкоуровневая разработка — Asm тут нужно знать. Это уже специализированные направления, я отвечал на комментарий выше, который был об оптимизации. На выбор алгоритма компилятор повлиять не может. Ну, разве что совсем чуть-чуть. А я этого и не утверждал, вам померещилось. Я лишь заметил, что знание ассемблера помогает оценить их сложность, и не столько алгоритмов, сколько их реализаций. Например, что быстрее — рекурсия или хранение промежуточных результатов в стэке? Исключения или возврат кода ошибки? А при рекурсии где промежуточные результаты хранятся — не в стэке? Но человек, знающий, в какие процессорные инструкции компилируется такая банальщина, как вызов функции, вспомнил бы, что в этот же стэк складывается некоторое количество служебных данных. Не самый удачный пример, потому что эту проблему частично решает оптимизация хвостовой рекурсии , но она есть не во всех языках, и под неё, как правило, надо специально подгонять свою функцию, и это не всегда удаётся сделать. Знать, что такое стэк фрейм, можно и без знания ассемблера. Хорошее объяснение мне попадалось в курсе SICP, который вообще на Scheme. И, кстати, знание того, в какие процессорные инструкции что компилируется — это знание деталей реализации компилятора, а ни разу не ассемблера. Как по мне, изучение изучение ассемблера даёт то же, что и изучение любого другого языка программирования см. Да, парадигма вроде бы та же императивная, но после изучения появляется возможность взглянуть на некоторые вещи совершенно по-другому. Не охота — не изучайте, делов-то. И специальная прога, которая будет бить по рукам за отключение предыдущей проги. По пункту 7 крупные форумы для программистов рекомендую rsdn. Я бы добавил ещё Smalltalk, как хороший пример полностью объектного языка. Ну и из уважения к роли, которую он сыграл в истории программирования ;-. Метки лучше разделять запятой. Снимаем и вносим наличные в банкомате с помощью смартфона. Впервые в мире 10,9k Три дня как все кассы в стране должны стать онлайн на самом деле нет 40,4k Интересные публикации Хабрахабр Geektimes. Астробиологи из Эдинбургского университета считают, что жизни на Марсе нет из-за токсичных химических соединений GT. Нейросети диагностируют проблемы с сердцем более точно, чем врачи GT. За какие заслуги Kingston любят центры обработки данных? Вещи, которые мне надо было знать прежде, чем создавать систему с очередью. Обработка многократно возникающих SIGSEGV-подобных ошибок. Выбор алгоритма вычисления квантилей для распределённой системы. Как у Словакии украли национальный домен верхнего уровня. Разделы Публикации Хабы Компании Пользователи Песочница. Информация О сайте Правила Помощь Соглашение Конфиденциальность. Услуги Реклама Тарифы Контент Семинары.


Новинки фильмов основаны на реальных событиях 2016
Состав карбонатных пород
Правила воздушной перевозки опасных грузов
План проведения новогодних каникул в детском саду
Сонник поднять мужчину
Кбк минимального налога
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment