Лучшая практика — Страница 3 из 3 — всё по этой теме для программистов


Оглавление (нажмите, чтобы открыть):

Ремесло программиста. Практика написания хорошего кода

Скачать книгу

О книге «Ремесло программиста. Практика написания хорошего кода»

Ничто не сравнится по ценности с советами настоящего программиста-профессионала. Книга Питера Гудлифа «Ремесло программиста» написана ясно, практично и занимательно. Она поможет вам перейти на более высокий уровень мастерства программирования и покажет, как писать код, который больше чем «просто работает». Да, вы умеете писать работающий код, но как написать понятный код? Как добиться его надежности и отсутствия ошибок? Смогут ли другие программисты выяснить логику и цель вашего кода? Выдающиеся программисты не просто обладают техническими знаниями – у них есть правильный подход и отношение к программированию. Перед вами руководство по выживанию в условиях промышленного производства ПО. Эта книга посвящена тому, чему вас никто не учил: как правильно программировать в реальной жизни. Здесь вы найдете не связанные с конкретными языками рекомендации, полезные всем разработчикам и касающиеся таких проблем, как стиль представления, выбор имен переменных, обработка ошибок, безопасность, эффективность групповой работы, технологии разработки и составление документации. Читатель должен обладать опытом программирования, ибо книга не учит программированию – она учит правильно программировать. Издание будет полезно и студентам старших курсов, знакомым с принципами программирования.

Произведение относится к жанру Компьютеры: прочее. Книга входит в серию «Профессионально (Символ)». На нашем сайте можно скачать книгу «Ремесло программиста. Практика написания хорошего кода» в формате fb2, rtf, epub, pdf, txt или читать онлайн. Здесь так же можно перед прочтением обратиться к отзывам читателей, уже знакомых с книгой, и узнать их мнение. В интернет-магазине нашего партнера вы можете купить и прочитать книгу в бумажном варианте.

Программирование. Лучшие практики Best Practices

перей Программирование Best Practices T >Unix философия

Фокус на структуры данных

Плохие программисты беспокоиться о коде. Хорошие программисты беспокоиться о структурах данных и их отношений

Никогда не строить большие Программы

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

— Джастин Мейер, автор JavaScript MVC

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

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

— Николас Zakas, автор «Высокоэффективные JavaScript веб-сайтов»

Следуйте принципам X

В 1984 году Боб Scheifler и Джим Геттис изложены ранние принципы X:

  • Не добавляйте новые функциональные возможности, если только реализатор не может завершить реальное применение без него.
  • Это так же важно, чтобы решить, что система не так, чтобы решить, что это такое. Не обслуживать все потребности в мире; скорее, сделать систему расширяемой так, что дополнительные потребности могут быть удовлетворены в вверх совместимым способом.
  • Единственное, что хуже, чем обобщающее из одного примера Обобщая без каких-либо примеров вообще.
  • Если проблема не полностью, то, вероятно, лучше не предоставлять никакого решения вообще.
  • Если вы можете получить 90 процентов от желаемого эффекта на 10 процентов работы, использовать более простое решение. (Смотрите также хуже, тем лучше.)
  • Изолировать сложности в максимально возможной степени.
  • Обеспечить механизм, а не политику. В частности, место политики пользовательского интерфейса в руках клиентов.

Первый принцип был изменен при проектировании X11 для: «Не добавлять новые функциональные возможности, если вы не знаете, какой-то реального приложения, которое потребует от него.»

Качество Вопросы

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

Не делайте жесткие вещи, делать простые вещи.

Не писать код

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

Уменьшение количества кода в вашем продукте должна быть цель.

«Я ненавижу код, и я хочу, как мало его, насколько это возможно в нашем продукте.» — Джек Дидерих

Keep Lean зависимостями

Старая пословица «не изобретать велосипед» не применяется, когда колесо поставляется прикрепленной к локомотивного двигателя.

Прекратите писать классы

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

Изобретать колесо

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

Рефакторинг> Переписывая

Общие Отговорки на программное обеспечение Rewrite

Почему перезапись (почти) не хорошая идея

  1. Это всегда занимает больше времени, чем вы ожидаете
  2. Рынки Изменение
  3. Существующие клиенты разочаровываются
  4. Рефакторинг Can Cleanup Кодекс
  5. Вы не контролируете Rewrite, она контролирует Вас

Переписывая> Заделка

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

Забудьте новые функции, Просто сделайте тот же самый материал лучше.

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

Писать тесты.

Каждый программист знает, что они должны писать тесты для своего кода. Мало сделать. Универсальный ответ на «Почему нет?» : «Я нахожусь в слишком большой спешке.» Это быстро становится порочным тем больше Цикл давление вы чувствуете, тем меньше тестов вы пишете. Чем меньше тестов вы пишете, тем менее продуктивным вы и менее стабильным ваш код становится. Менее продуктивным и точным вы, тем большее давление вы чувствуете. Программисты выгорают от всего таких циклов. Вырвавшись требует внешнего влияния. Мы нашли внешнее влияние, что нам необходимо в простой рамках тестирования, что позволяет нам сделать небольшое тестирование, что делает большую разницу.

[Без модульных тестов] Вы не рефакторинга, вы просто меняете дерьмо. — Гамлет Д’Арси

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

Дефект # 1: Конструктор делает реальную работу

Предупреждающие знаки

Дефект # 2: Порывшись в Коллабораторов

Предупреждающие знаки

Дефект № 3: Хрупкое Глобальное состояние и Singletons

Предупреждающие знаки

Дефект # 4: Класс ли слишком много

Предупреждающие знаки

Тест-Driven Development с Инверсия управления.

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

Избегайте смешивания создания объекта с логикой приложения

Избегайте кода Запахи

Избегайте создания технического долга.

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

Преждевременная оптимизация является корнем всех зол

«Программисты тратить огромное количество времени, думая о том, или беспокоиться о том, скорость некритических частей их программ, и эти попытки эффективности фактически оказывают сильное негативное влияние при отладке и технического обслуживания рассматриваются. Мы должны забыть о небольших эффективности, говорят о 97% времени: преждевременная оптимизация является корнем всех зол Однако мы не должны упустить наши возможности в этой критической 3% «..

План, план, план.

Это намного дешевле, чтобы сделать это правильно в первый раз, чем переделать его в дальнейшем. Чем скорее проблема определена и фиксирована, тем дешевле это сделать так.

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

«Планы бесполезны, планирование бесценно». — Сэр Уинстон Черчилль

Чтобы это работало, все участники должны слушать, каждый должен быть открытым, каждый должен быть отзывчивым. Или мы могли бы держать вращал прочь с облажался отношением, что «он должен быть таким образом», потому что священный план проекта говорит, что это именно так. Потому что на самом деле очень весело, не так ли?

Программирование также Преподавание вашей команды

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

«Самым важным элементом успешного развития программного обеспечения является обучение.»

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

«. Есть ложь, наглая ложь, и оценки разработки программного обеспечения.»

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

Никто не любит выглядеть глупо. Если вы профессионал, и кто-то ставит вас на месте, чтобы ответить «, сколько времени это займет?» Это только человек захочет дать ответ. Если вы называете это профессиональная гордость или эго, это мощный драйвер. Хорошие ИТ-специалисты очень не любят говорить «я не знаю.» Если они говорят, что они, вероятно, имели в виду это. Так перестать тужиться для окончательного ответа, когда не exist.It вполне разумно хотеть какой-то план фронт. Я на самом деле один из тех забавных типов, которые верят вверх планирование фронт является необходимостью. До тех пор пока все понимают оценку только что: оценка. Вы узнаете, как вы идете вперед и открыть более подробно. Таким образом, вы пересмотреть оценку соответствующим образом.

Ваша архитектура должна напоминать свой домен

Итак, что же архитектура вашего приложения кричать? Когда вы посмотрите на структуру каталогов верхнего уровня, а также исходные файлы в самом высоком уровне пакета; они кричат: системы здравоохранения или системы учета или системы управления запасами? Или же они кричат: рельсы, или весной / спящий режим, или жереха?

Архитектуры не должны быть поставлены рамками. Каркасы являются инструментами, которые будут использоваться, а не архитектуры быть подобными. Если ваша архитектура основана на рамки, то она не может быть основано на ваших вариантов использования.

— Дядя Боб Мартин, «Кричащие Архитектура»

Unix Философия

«Это Unix философия: писать программы, которые делают одну вещь и делать это хорошо писать программы работать вместе Написать программы для обработки текстовых потоков, потому что это универсальный интерфейс..» — Дуг Макилрой, цитируемый в четверть века Unix [ Салюс]. Addison-Wesley. 1994. ISBN 0-201-54777-5.

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

— Эрик С. Реймонд, «Искусство программирования Unix»

Практика для начинающих програмистов c#

backatom1

Доброго времени суток всем! Я начинающий програмист(самоучка), изучаю C#, и для закрепления материала, нужна практика. то есть какие нибудь задачки по C#. И вот исходя из этого я решил создать эту тему.

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

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

Думаю этот пост будет полезен многим

P. S. Просьба не называть меня плохими словами, я же новичек, и прошу от вас понимания и снисхождения.

Foxy2020

Доброго времени суток всем! Я начинающий програмист(самоучка), изучаю C#, и для закрепления материала, нужна практика. то есть какие нибудь задачки по C#. И вот исходя из этого я решил создать эту тему.

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

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

Думаю этот пост будет полезен многим

P. S. Просьба не называть меня плохими словами, я же новичек, и прошу от вас понимания и снисхождения.

Страсть к программированию. Глава 15. Практика, практика, практика

Это перевод 15 главы книги The Passionate Programmer: Creating a Remarkable Career in Software Development. Её автор — Chad Fowler — талантливый Ruby-разработчик, известный докладчик на конференциях, посвящённых Ruby и IT в целом. Бывший саксофонист, а сейчас — CTO 6Wunderkinder.

Краудсорсинговый перевод книги ведётся на github, присоединяйтесь.

Глава 15. Практика, практика, практика

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

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

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

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

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

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

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

Итак, откуда вам знать где практиковаться? Где ваши пределы возможностей? Что касается практики при разработке ПО, то это тема для отдельной книги. Для начала я бы снова позаимствовал свой опыт джазового музыканта. Я бы разбил практику на следующие категории (упрощенно для не-музыкантов среди нас):

— физика/координация
— чтение с листа
— импровизация

Это может служить каркасом для односторонней мысли о практике как о разработке программного обеспечения.

Музыканты должны практиковаться в технических аспектах своих музыкальных инструментов: извлечение звука, физическая координация (заставляя пальцы двигаться легко например), скорость и точность — все это важно при практике. Какой эквивалент есть у разработчиков программного обеспечения по сравнению этими основными положениями для музыки? Что есть такого в пыльных уголках вашего языка программирования, на что вы редко обращаете внимание? Например, поддерживает ли выбранный вами язык программирования регулярные выражения? Регулярные выражения это очень мощный и печально недостаточно используемый инструмент многих сред разработки. Очень часто разработчики не используют их, тогда когда есть такая возможность, из-за недостаточного уровня знаний для эффективного использования регулярных выражений. Как результат, создается множество ненужного кода по структурному анализу строк (needless string-parsing code), который в дальнейшем должен сопровождаться.

То же применимо к API вашего языка программирования или библиотекам функций. Если под вашими пальцами (как говорят музыканты) нет множества инструментов среды разработки, маловероятно, что вы начнете ими пользоваться, когда они действительно понадобятся. Попытайтесь понастоящему забуриться, например, в то как работает многопоточное программирование в выбранной вами среде разработки. Или как насчет поточных библиотек, сетевых программных APIs, или даже набора утилит доступных для работы со списками или коллекциями? Большинство современных языков программирования предлагают богатые и мощные библиотеки во всех этих областях, но разработчики ПО предпочитают изучать малую часть, с которой они могут менее эффективно писать тот же самый код, который могли бы писать, владея полным набором доступных им инструментов.

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

Мастер Йода рекомендует:  Создание landing page с помощью конструктора A5

Что касается разработчиков ПО, что может означать для них чтение с листа относительно кода? Или требований спецификации или дизайна? Замечательное место для поиска нового кода, с которым можно практиковаться, это сообщество открытого исходного кода. Есть у вас любимые примеры открытого программного обеспечения? Как насчет того, чтобы попробовать что-нибудь добавить? Идите посмотрите список дел (to-do list) для вашего открытого ПО и выделите себе ограниченное количество времени для добавления новых свойств (или как минимум определения того, что следует добавить).

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

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

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

Замечательный способ повысить навыки импровизации при написании кода это справляться с самостоятельно поставленными ограничениями. Выберите простую программу и попытайтесь написать ее с этими ограничениями. Мое любимое упражнение это писать программу, которая выводит текст старой песни «99 бутылок пива на стене» //Прим. перев.: cсылки на youtube — тут пива нет, а тут есть;). Как бы вы смогли написать эту программу без присваивания переменных? Или насколько маленькую программу вы можете написать, которая выводит правильный текст? Добавим ограничение — как быстро вы можете написать такую программу? Как насчет того, чтобы решать небольшие, сложные задачи с таймером?

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

20 самых рекомендуемых книг для программистов на русском языке

Авторы проекта Dev-Books проанализировали миллионы вопросов и ответов в крупнейшем сообществе программистов Stack Overflow. Всё для того, чтобы найти книги, на которые чаще всего ссылаются разработчики.

В общий список вошло 5 720 книг. Ниже вы найдёте 20 самых упоминаемых из них, которые когда-либо выходили на русском.

По просьбе Лайфхакера своими мнениями насчёт некоторых изданий поделились отечественные эксперты.

1. «Эффективная работа с унаследованным кодом», Майкл К. Физерс

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

2. «Приёмы объектно-ориентированного проектирования. Паттерны проектирования», Эрих Гамма и другие

Классика для программиста. Первая книга, посвящённая именно шаблонам.

Леонид Выговский, системный архитектор IT-компании LiveTex

— Издание уже 20 лет переиздаётся в изначальном виде. В этом, конечно, главный недостаток книги: некоторые шаблоны уже неактуальны. Думаю, её полезно читать уже после других, более современных, книг по паттернам проектирования. Тем более что она написана сухим академическим языком. Для понимания паттернов эта книга не must read, но её прочтение добавляет крутости в глазах коллег-программистов. 🙂 Начинать я советую с «Паттернов проектирования» (Head First Design Patterns).

3. «Чистый код. Создание, анализ и рефакторинг», Роберт К. Мартин

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

Леонид Выговский, системный архитектор IT-компании LiveTex

— Почему спорная? Книг про написание кода уже огромное количество, и часть приёмов являются общепризнанными. Но каждый автор добавляет что-то своё. Лично для меня мнение Боба Мартина кажется иногда странным и противоречащим другим источникам. Не must read, но прочитать всё же стоит. Качество кода после прочтения становится лучше.

4. «Предметно-ориентированное проектирование», Эрик Эванс

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

Леонид Выговский, системный архитектор IT-компании LiveTex

— Из этой книги выросли концепции СQRS, BDD, onion-architecture и много других интересных идей. Единственный недостаток: книга насквозь теоретическая. Практическую пользу она приобрела только с выходом книги Вона Вернона «Реализация методов предметно-ориентированного проектирования» (Implementing Domain Driven Design). Поэтому читать их надо последовательно, сразу друг за другом.

5. «JavaScript: сильные стороны», Дуглас Крокфорд

Обязательная книга для веб-разработчиков. В ней Дуглас Крокфорд рассказывает о преимуществах языка JavaScript и учит грамотно их применять для создания эффективного кода.

6. «Шаблоны корпоративных приложений», Мартин Фаулер и другие

Книга описывает базовые принципы проектирования ПО для корпоративных платформ.

7. «Совершенный код. Мастер-класс», Стив Макконнелл

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

Михаил Осотов, директор по производству «Центра высоких технологий»

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

8. «Рефакторинг. Улучшение существующего кода», Мартин Фаулер и другие

Из серии книг по написанию понятного и качественного кода, «Рефакторинг» — лучшая.

Леонид Выговский, системный архитектор IT-компании LiveTex

Выговский: «Она не только показывает хороший код, но и на примере плохого объясняет, чем именно он плох. Эта книга — must read для всех. Причём чем раньше вы её прочтёте, тем лучше. Качество кода после прочтения сильно вырастет».

Если книгу Фаулера вы уже прочли, обратите внимание на «Рефакторинг с использованием шаблонов» (Refactoring to Patterns) Джошуа Кериевски, которую рекомендует Михаил Осотов.

«Рефакторинг с использованием шаблонов» Кериевски — отличная книга для тех, кто каждый день сталкивается с проблемой легаси-кода и технического долга в своих проектах.

Михаил Осотов, директор по производству «Центра высоких технологий»

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

9. «Паттерны проектирования», Эрик Фримен, Элизабет Фримен и другие

Серия Head First, на мой взгляд, идеально подходит для новичков в области разработки ПО.

Михаил Осотов, директор по производству «Центра высоких технологий»

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

10. «Язык программирования C», Брайан У. Керниган, Деннис М. Ритчи

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

11. «Эффективное использование С++. 55 верных способов улучшить структуру и код ваших программ», Скотт Майерс

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

12. «Экстремальное программирование: разработка через тестирование», Кент Бек

Автор на примерах описывает методику разработки ПО, которая предполагает тестирование программ ещё до написания их кода.

13. «Алгоритмы. Построение и анализ», Томас Х. Кормен и другие

Эту книгу называют библией алгоритмов. Она зарекомендовала себя как отличное научное пособие для студентов технических вузов и всех, кто интересуется информатикой. Книга доступным языком знакомит с алгоритмами разных типов и описывает их особенности.

14. «Регулярные выражения», Джеффри Фридл

Издание об эффективной работе с текстом в Perl, PHP, Java, Python, Ruby и других языках программирования.

15. «CLR via C#. Программирование на платформе Microsoft.NET Framework 4.5 на языке C#», Джеффри Рихтер

Классический учебник по разработке приложений для платформы Microsoft, в том числе с помощью Silverlight, Windows Presentation Foundation, ASP.NET и прочих технологий компании.

16. «Современное проектирование на C++», Андрей Александреску

Книга для опытных программистов на C++. Автор предлагает новый подход к разработке, сочетающий метапрограммирование шаблонов, обобщённое программирование и объектно-ориентированное программирование на этом языке.

17. «Microsoft ASP.NET 2.0. Базовый курс», Дино Эспозито

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

18. «Шаблоны тестирования xUnit. Рефакторинг кода тестов», Джерард Месарош

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

19. «Компиляторы. Принципы, технологии и инструментарий», Альфред В. Ахо и другие

Книга описывает базовые принципы разработки компиляторов и делает особый акцент на оптимизации кода. В помощь читателю — большое количество примеров из практики.

20. «Инфраструктура программных проектов. Соглашения, идиомы и шаблоны для многократно используемых библиотек .NET», Кржиштоф Цвалина, Брэд Абрамс

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

Полный рейтинг англоязычных книг доступен на сайте Dev-Books. Там же можно просмотреть списки самых популярных книг на определённые темы, будь то Java, Database Design или CSS.

100 Задач по программированию

Воспользуйтесь шаблоном
прямо сейчас!

Россия, Москва
28 лет

Описание

Сможешь бросить сам себе такой вызов?

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

Есть ли тут обучающий материал?

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

Как выполнять задания, если я не знаю как?

У тебя нету интернета? Бери под руку интернет и начинай гуглить его вопросами. Окей гугл, как сделать то; окей гугл, как сделать это. И так далее. Всё делается по шаблонам, в данном вызове нету готовых инструкций, так как он учит самостоятельности. Ты должен сам научиться решать сложные задачи, которые перед собой ДО ТЕБЯ никто не ставил. Именно так рождаются уникальные разработчики чего-либо.

Я готов! Что мне делать?

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

Сколько стоит шаблон?

Он бесплатный. Мне не жалко.

Как отблагодарить?
Хотя бы про себя скажи «спасибо», этого будет вполне предостаточно 😉

Ну, или если сможешь, выполни этот вызов.

На создание шаблона ушло: 3 дня.

Версия шаблона: 1.0.0 (стартовая).

Описание, которое станет доступно после установки шаблона:

Я принял вызов!

Суть вызова:

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

Задания:

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

ВАЖНО: Перед тем как браться за задачи, освойте следующее:

  • Выберите свой язык программирования, на котором вы будете писать.
  • Выберите программу на которой будете заниматься разработками.
  • Изучите основы своего языка (можно во время выполнения задач).
  • Изучите что такое ООП (на 2 этапе), научитесь пользоваться классами.
  • Изучите создание библиотек классов (dll) перед 5 этапом.

Правила:

Чтобы всё правильно сделать и не ошибиться, стоит следовать простым и незаурядным правилам:

  1. Не спешите! Даже если вы в себе уверены, перед каждой задачей настраивайтесь!
  2. Не халтурьте. Старайтесь делать всё красиво, так, как будто вы делаете это для кого-то важного.
  3. Не зазнавайтесь. Если вы не уверены, что сможете такое разработать, упрощайте для себя задачу.
  4. Не тупите. Если вы застряли на каком-то этапе, выполняйте задачу заного, значительно упрощая её.
  5. Не тужтесь. Если вам не нравится задача, не заставляйте себя. Придумайте аналогичную и выполните её.

Этапы выполнения заданий:

Этап 1. Я консольщик.

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

Этап 2. Мастер оконной разработки.

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

Этап 3. Различные задачки.

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

Между-этап. Гексагон.

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

Этап 4. Игры для компаний.

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

Этап 5. Разработчик игр.

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

Этап 6. Разработчик софта.

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

Этап 7. Трехмерная графика.

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

В конце:

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

Обо мне

Обо мне? Так.. реализую свои идеи. Интересно если, можете посмотреть: [Гик-дневник] или просто посетить мою страницу и найти что-нибудь интересное для себя. Если тебе понравится шаблон — обязательно оставь отзыв. Если ты прошел его, или находишься на каком-либо моменте, скажи, как было бы по твоему лучше (я подправлю — сделав шаблон еще лучше).

Консольная шпаргалка

Постановка задачи: красиво вывести информацию о типах данных (целочисленные, строки) и их переменных (int, string) и других существующих в вашем языке типе данных. Оформить всё аккуратно и красиво.

Консольный перехват ошибки

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

Консольный калькулятор

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

Консольный массив

Постановка задачи: Разработать программу которая умеет выводить массив M x N.

Усложнение задачи: Сделать так, чтобы можно было производить какие-либо операции над массивами. (К примеру чисел в массиве, нахождение общего знаменателя и так далее — подобные задачи можно найти в интернете). Для того чтобы зачесть себе в карму усложнение задачи, решите как минимум 5 задач с матрицами.

Консольная рекурсия

Постановка задачи: Создать консольную программу выполняющую рекурсию (хорошо подойдет цикл do while), иначе говоря которая закончится только при определенном действии (к примеру «выход»).

Консольные наскальные рисунки

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

Консольная свободная задача #1

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

Консольная свободная задача #2

Постановка свободной задачи: как и в свободной задаче #1-4

Консольная свободная задача #3

Постановка свободной задачи: как и в свободной задаче #1-4

Консольная свободная задача #4

Постановка свободной задачи: как и в свободной задаче #1-4

Конвертер величин

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

Записки

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

Легкое тестирование

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

Мои важные программы

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

Дизайнерское решение

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

Мини-веб-браузер

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

Код доступа «V3N3P4»

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

У меня есть свой функционал

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

Секундомер и таймер

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

Произвольная задача

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

Черное или белое?

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

Числовой диапазон

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

Буквоцифры

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

Пример:
Саша + Маша = 89

(19 + 1 + 26 + 1) + (14 + 1 + 26 + 1) = 47 + 42

Микробы

Постановка задачи: Составить программу решающую следующую задачу:

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

Песочные часы

Постановка задачи: Разработать программу — песочные часы. Время должно устанавливаться с клавиатуры.

Игральные кости

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

Постановка задачи: Разработать программу — весы, которая будет взвешивать определенные объекты. Объекты должны быть заранее установлены в программу.

Яблочный завод

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

Купюрообменник

Постановка задачи: У вас есть определенное количество монет (разного номинала), от копеек до рублей. Разработайте возможность перевода этих денег в купюры различного номинала, с возможностью выдавать остаток. Алгоритм задачи — на собственное усмотрение.

Отель 5 звезд

Постановка задачи: Разработать программу, в которой есть M гостиничных номеров (каждый номер должен добавляться отдельно. Для презентации номеров отеля с указанием цены и что находится в комнате. Оформить всё стильно, как будто вы и вправду презентуете пятизвездочный отель.

В какой баноке находится шарик?

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

Дом для кошек

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

Мастер Йода рекомендует:  Создание системы учета посещений PHP

Постановка задачи: Составить программу могущую решать следующую задачу:

Задачка: Два поезда, находящиеся на расстоянии A км, движутся навстречу друг другу со скоростью B1 и B2 км/ч каждый. Муха берёт старт с одного из поездов и летит по направлению к другому со скоростью X км/ч. Долетев до другого поезда, муха разворачивается и летит назад к первому. Так она летает туда и обратно, пока два поезда не сталкиваются, и насекомое погибает. Какое расстояние успела пролететь муха?

Разработать алгоритм растосовки карт

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

Познавательные приключения в машине

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

.
Подсказка:

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

  • Маятник отклонится назад.
  • Шарик с гелием отклонится вперед.
  • Пузырь в банке с водой отклонится вперед.

Соответственно при торможении — наоборот.

Если так и не поняли, посмотрите познавательное видео:

План эвакуации


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

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

Сложное решение задачи: Использовать графичческий интерфейс, где можно отследить перемещение дома.

Задача со спичками

Постановка задачи: Разработать программу Drag&Drops со спичками, чтобы пользователь мог перетаскивать определенные спички и получать нужный результат. Задачи со спичками можно достать в интернете.

Лягушки в болоте

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

Лабиринты

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

Магический шар

Постановка задачи: Разработать программу, которая будет как «магически» шар выдавать случайный результат. К примеру, вы ей задаете вопрос: «. . .. . .. ?», а она выдает вам результат из предложенного:

  • Да
  • Нет
  • Скорее всего да
  • Скорее всего нет
  • Возможно
  • Имеются перспективы
  • Вопрос задан неверно

По желанию дополнить ответами.

Гексагон

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

Ассоциации

Постановка задачи: Компьютер должен предлагать интересное слово, которое должен в виде ассоцииации передать один игрок, другому игроку (и так до последнего). Суть в интересе сравнить изначальное слово (о котором знает тот, кто сидит у компьютера) с конечным. Программа очень простая.

Загадки

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

Крутилка для твистера

Постановка задачи: Есть игра, называемая «твистер» — для неё есть специальный спинер, который не всегда удобно крутить играючи. Разработайте программу благодаря которой один из игроков, который ближе всего к мышке сможет крутить спинер.

Фанты

Постановка задачи: Разработайте программу, выдающую определенный «фант», который игрок обязан будет выполнить. Фанты должны выгружаться из текстового файла, в котором построчно были введены определенные задания. Фанты можно редактировать, добавлять, или удалять через программу.

Правда или желание

Постановка задачи: Разработать игру, которая спрашивает: «Правда, или желание?», в случае выбора игрока, игрок должен будет рассказать какую-либо правду, спрошенную компьютером, или выполнить желание, которое компьютер выдаст. Ответы должны быть заранее заготовлены. Игрок выбирается произвольно, рандомом, но не учитывая N предыдущих (т.е. задается с компьютера, сколько раз не спрашивать того человека, который отвечал).

Бутылочка

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

Крокодил

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

Я никогда не .

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

Произвольная задача игры для компании

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

Сапер

Постановка задачи: Разработать программу, как аналог саперу. Можно и желательно со своим интерфейсом. Со своими упрощенными, или усложненными задачами (в зависимости от того, как справитесь с поставленной перед собой задачей).

Найди число

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

Пинболл

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

Дурак

Постановка задачи: Очередная сложная задача, только на этот раз вам нужно разработать карточную игру.

Косынка

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

Шашки

Постановка задачи: На этот раз вам предстоит разработать более сложную игру с матрицей и моделью игры «шашки».

Морской бой

Постановка задачи: На этот раз действительно сложная задача, состоящая из 2 матриц, одна из которых поле врага, другая — ваша. При этом тут должны использоваться не только матрицы, но и элементы Drag and Drop для перемещения кораблей. Элементы взаимодействия для нападения на противника, и, нападения противника на вас.

Крестики нолики

Постановка задачи: Разработать программу (простую) для игры в крестики нолики.

Судоку

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

Трубопровод

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

Точки

Постановка задаи: Разработать игру на подобии этой игры: [ссылка], только со своими возможными условиями.

Змейка

Постановка задачи: Разработать игру на подобии игры «змейка».

Бык и корова

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

Алхимия

Постановка задачи: Разработать игру, аналогичную игре «алхимия».

100 дверей

Постановка задачи: Разработать игру, аналогичную игре «100 дверей».

Открой замок

Постановка задачи: Разработать игру, в которой вы взломщик и должны взломать замок.

Рисовалка

Постановка задачи: Разработать приложение в котором вы сможете рисовать. К примеру разукрашивать картины.

Лазерный луч

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

Красная кнопка

Постановка задачи: Разработать программу, которая будет выполнять забавный функционал «красной кнопки». К примеру как игра 100 методов нажать красную кнопку (и уничтожить мир — пример в видео). Думайте сами.

Постановка задачи: Разработать игру, аналогичную игре 2048.

Постановка задачи: Разработать игру в которой есть матрица, к примеру 3х3 (9 клеток), в которой отсутствует одна картинка. Сделать так, чтобы пользователь мог перемещая картинки собрать картину (и вставить последнюю деталь).

Пазлы

Постановка задачи: Разработать игру, аналогичную сборке пазлов.

Передвинь блок

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

Загони шарик

Постановка задачи: Разработать игру, в которой нужно крутить квадрат таким образом, чтобы загнать шарик в лунку.

Произвольная простая игра

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

Свой платформер

Постановка задачи: есть такой жанр игр как «платформеры». Попробуйте разработать свой платформер (движок) в котором будет своя физика, своё взаимодействие с миром и непосредственно сам мир. Задача не простая.

Что требуется для платформера:

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

Обязательные условия:

  • Перед созданием игры начертите схему на бумаге, продумав все детали.
  • Библиотеки классов dll. Т.е. обязательное использование ООП.

Нарисован план на листочке

Разработана схема ООП

Приступили к разработке

Своя рпг

Постановка задачи: есть такой жанр игр как «ролевые игры», или «рпг», в которых у вас есть персонаж (или несколько), которые проходят по сюжету и развивают его. Не нужно грамоздкой графики, достаточно воспользоваться псевдо-3D (вид сверху) и сделать простенькую игру.

Что требуется для рпг:

  • Свой мир со своей атмосферой и развивающимся сюжетом.
  • Свой персонаж (или персонажи) взаимодействующий с миром.
  • Враги, которые наполняют и мешают персонажу во время сюжета.
  • Дополнительный контент.

Обязательные условия:

  • Перед созданием игры начертите схему на бумаге, продумав все детали.
  • Библиотеки классов dll. Т.е. обязательное использование ООП.

Нарисован план на листочке

Разработана схема ООП

Приступили к разработке

Свои гоночки

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

Обязательные условия:

  • Перед созданием игры начертите схему на бумаге, продумав все детали.
  • Библиотеки классов dll. Т.е. обязательное использование ООП.

Нарисован план на листочке

Разработана схема ООП

Приступили к разработке

Своя стратегия

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

Что требуется для стратегии:

  • Свой мир со своими типами существ (или их характеров).
  • Взаимодействия развития ресурсов (империи, или города, или еще чего-либо) игрока.
  • Взаимодействие с конкурентами, или врагами.

Обязательные условия:

  • Перед созданием игры начертите схему на бумаге, продумав все детали.
  • Библиотеки классов dll. Т.е. обязательное использование ООП.

Нарисован план на листочке

Разработана схема ООП

Приступили к разработке

Произвольная сложная игра

Постановка задачи: На этот раз (если вы добрались до этого пункта) всё ложится на ваши плечи! Сами выбирайте жанр, сами выбирайте направление и развивайте свою какую-либо игру. Возможно она станет разовым проектом (после испытания того, что вы создавали). Возможно постоянным.

Обязательные условия:

  • Перед созданием игры начертите схему на бумаге, продумав все детали.
  • Библиотеки классов dll. Т.е. обязательное использование ООП.

Нарисован план на листочке

Разработана схема ООП

Приступили к разработке

Программа по тестированию

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

Календарь

Постановка задачи: Разработать программу — календарь. С возможностью просматривать даты и время.

Калькулятор

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

Проигрыватель музыки

Постановка задачи: Разработать свой простой проигрыватель музыки.

Интерфейсы

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

Генератор паролей

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

Органайзе

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

Сетевой информатор

Постановка задачи: Разработайте программу, которая при подключении к интернету, будет получать нужную для вас информацию (новости, погоду, еще что-либо). Желательно разработать интерфейс для пользователя.

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

Сетевая игра

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

Графики

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

Помогите выбрать факультет для будущей работы программистом игр

У нас в Нижнем Новгороде на программиста можно идти в ВМК, на следующие факультеты:
Прикладная математика и информатика,
Фундаментальная информатика и информационные технологии,
Прикладная информатика
(в информационной сфере),
Программная инженерия
Я вот не могу понять, куда нужно идти, чтобы в будущем программировать игры?

Математика там точно должна быть 🙂

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

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

Zab
У нас она была 230105

Пока будешь изучать всякие технологии, они 10 раз устареют, а может и что-то кардинально изменится и появятся новые досупные всем квантовые компьютеры или еще чего. А вот математика не устаревает.
Посему — прикладная математика и информатика. Как говаривал Карл Фридрих Гаусс «Математика — царица всех наук».
_Lostghbear
> Я вот не могу понять, куда нужно идти, чтобы в будущем программировать игры?
К сожалению изучать как правило, через инет и книги на английском. Потому если не владеешь, тоже начинай. Чтобы в будущем программировать игры, нужно тебе сейчас изучать и начинать программировать, простенькие игры и выкладывать их. Так ты получишь стаж игродела к концу обучения в условные 4 года. Но как бы советовать легко, математика, английский, программирование, игрострой, забьет все свободное время, захочется ли.

_Lostghbear
> Прикладная информатика
А вообще это не так и важно, куда идти.

_Lostghbear
> Я вот не могу понять, куда нужно идти, чтобы в будущем программировать игры?

Идти программировать игры. потом будет не до игр, после универа и какой-нибудь левой специальности.

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

Иди лучше в армию. Стрелять научат. Качественные шутеры будешь делать.

Zimogor
> Иди лучше в армию. Стрелять научат. Качественные шутеры будешь делать.
А если в стройбат, качественные сим-сити?

у меня в университете только один преподаватель на факультете, который действительно знает, что такое с++11/14 и рассказывает обо всех нововведениях в нём. Остальные либо не хотят, либо у них «немножко паскаль».

static_cast
Никто и не должен ничего рассказывать, если этого нет в программе. А в программе это вряд ли есть. Прослушал курс С++ 98, а дальше сам по литературе осваиваешь современные стандарты!

static_cast
> который действительно знает, что такое с++11/14 и рассказывает обо всех
> нововведениях в нём.
Я думал о таких вещах должны рассказывать в ПТУ или там на курсах программирования за 21 день. Университет должен давать более фундаментальные вещи чем нововведения в одном из языков.

9К720
> Я думал о таких вещах должны рассказывать в ПТУ или там на курсах
> программирования за 21 день. Университет должен давать более фундаментальные
> вещи чем нововведения в одном из языков.
Полностью согласен.

1С и все-все-все, или «тру программинг»

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

Однажды меня всё это достало окончательно, и я начал карьеру с самого начала, перешел на Java-программирование.

В этой статье я расскажу, чем же хорош 1С, и стоит ли вообще с ним связываться.

Начнём с хорошего:

В условиях постоянно меняющегося законодательства постсоветского пространства 1С — достаточно неплохой вариант: относительно дёшево, легко настраиваемо (при наличии грамотного программиста), не требует больших технических затрат (на железо и софт).

Научиться программировать на 1С, особенно на 1С 7.7 — достаточно легко. Этим и пользуются многие бухгалтера, хорошо разбирающиеся в предметной области. 1С 8.х уже значительно сложнее в понимании, но, в принципе, тоже возможно (хотя я не видел для 1С 8 ни одного самоучки «с нуля». А вот «семёрочников» — видел много). Год-два — и вы будете более-менее хорошим специалистом.

Я начинал программировать на 1С 7.7, и на 2000-й год это был уже достаточно хороший продукт (я видел 1С 6, и меня она особо не впечатлило. Убогенько), которым уже можно было пользоваться. Минусом «семёрки» было огромное количество багов, которые было непонятно, как лечить и неумение справляться с большим количеством подключенных пользователей (как, например, Аксапта. Но у Аксапты — ценник в 50 раз выше, и свои проблемы с настройкой). Плюсами — цена, неприхотливость к ресурсам, быстродействие. Для малого бизнеса альтернативы 1С 7.7 на тот момент не было никаких. Ибо изобретать велосипед через ту же Java для сверки бухгалтерского баланса — занятие глупое: конечно, можно, но ценник будет — ууууу.

Когда появилась 1С 8.0, она не была особо популярна: «восьмёрка» требовала больше ресурсов по памяти и производительности, да и ценник её был выше. Но прошло 10 лет — и она перехватила популярность. Сейчас в области бухгалтерского ПО как для программиста, так и для пользователя 1С 8.х — одно из лучших решений. При появлении 1С 8.3, заточенной под работу через интернет — вообще практически идеальное.

Теперь о минусах:

«Восьмёрка» стала отличаться от 7.7 как небо и земля. Просто перейти программисту с одного поколения на другое без нервов и трудозатрат — невозможно, приходится переучиваться заново. И дело не только в появлении других объектов, или смене механизмов, дело даже в банальном синтаксисе. Компания «1С» перелопатила ВСЮ систему, создав совершенно непохожий на предыдущий продукт. Почему, по моему мнению, она это сделала — чуть ниже.

1С — российская компания, и, соответственно, её продуктам свойственны все минусы, присущие программному обеспечению стран-изгоев. А именно: это ПО мало кто поддерживает. Для 1С 7.7 в своё время сторонними организациями создавались дополнительные расширения, помогающие увеличить функциональность системы, но они так и не были встроены в платформу (хотя, кажется, почему бы и нет? Людям будет приятней работать! Но нет, 1С на всех парах уже продавала следующую версию! А на старую ей было плевать), а некоторые индивидуумы даже игры писали простенькие. В капиталистическом мире на популярные программные продукты постоянно создаются какие-то дополнения, компиляторы, библиотеки, макросы, но их гораздо больше. И дело совсем не в том, что русские — тупые, и не могут сами такого сделать. Нет, это не так. Банально — у англоязычных бОльший ореол обитания: вся США, вся Европа, Китай, Индия, Япония, Австралия. Весь мир программирует на этих языках и пишет для них костыли.

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

По той же причине, что 1С — сугубо российский продукт, и переехать на ПМЖ в Штаты или Европу с намерением сразу устроиться программистом — не получится. Никому вы там не нужны со своим 1С. Альтернатива — такие же бедные страны-сотеллиты типа Беларуси, Казахстана, или Украины. Но туда эмигрировать — это позор.

Теперь о реальностях:

в 1С не получится «просто программировать». И потому что законодательство меняется, и потому что у каждой конторы есть свои заморочки, и потому что приходится обучать конечного пользователя. Бизнес-аналитики в некоторых компаниях есть, но обычно программист напрямую общается с бухгалтером, для которого делает работу. Может, так оно тоже правильно. но обычно бухгалтера — очень специфические люди, которые редко могут объяснить, что же они хотят. Точнее, чаще всего они хотят «шоб всё работало!», суперкнопку с электродами, вживлёнными в центр удовольствия, а что будет между этими двумя событиями (программист пришел — появилась кнопка) — их мало волнует. Так же им плевать на ограничения, накрадываемые «железом» и самой 1С. Более того, многие из них совершенно не разбираются в смежных областях даже в той же Бухгалтерии. Но ТЫ — должен всё это почему-то знать (часто приходится переделывать одну и ту же работу раза по 4 потому что нет толкового техзадания, программа разрабатывает на лету, а деталей очень много, и про всех их бухгалтер часто забывает). Но и это всё терпимо, если бы с каждым новым пользователем не пришлось начинать всё сначала. По итогу оказалось, что в свои «почти 40» и имея зарплату, равную 2-3 бухгалтерским, всё равно должен делать скрины в «Пэинте», рисовать красные стрелочки, указывая, какие кнопки должен жать пользователь, и отсылать всё это 23-летним девочкам, только окончившим ВУЗ.

Вообще, бухгалтер — это очень специфическая профессия.

Их как будто специально учат в ВУЗе предмету «как заебать разработчика» (и преподают им — Черномырдин, Лёня Космонавт и Кличко). Мало кто ДЕЙСТВИТЕЛЬНО может с первого раза объяснить, что же действительно им нужно.

Объясняется это просто: в нархоз идут люди без фантазии. Туда берут тех, кто более-менее разбирается в математики (гуманитарии туда сами не идут. Им не интересно возиться с цифрами), и натаскивают на дебет-кредит (и больше — ничего). По специфике работы вся их жизнь проходит в бумажках и цифрах, работа требует кропотливости, внимательности и аккуратности, и больше ни на что им времени уже не хватает. Я встречался с достаточно большим количеством бухгалтеров-женщин. В целом — они зажатые, живущие и работающие в женских коллективах тётки (мужчины редко могут выдержать эту рутинную работу), и они не особо стремятся развиваться. Они могут прочитать что-нибудь банальное и модное типа Коэльи или Муракамы, но вглубь проблем и явлений они не лезут, и сами не спешат ничем интересоваться. К примеру, у одной моей знакомой бухгалтерши дома было только 10 книг. Из них 7 — учебники по английскому за школьный курс. У второй — вообще книг не было, она смотрела телевизор. Третья все свои деньги вкладывала в машину, больше ничего у неё не было.

Мастер Йода рекомендует:  Работа с текстовыми тенями

Зато знали план счетов бухгалтерский, и читали журнал «Главный бухгалтер». Они выучили механизм, он им приносит немного денег, а всё остальное — хоть травой порасти.

1Счиков, которые гордятся своей работой, немного. Большая часть из них стали программистами, начиная из биологов, бухгалтеров, продавцов. Для них быть программистом — это вдвойне круто: ты и, типа, умный, и зарплата у тебя выше, чем у всех остальных. «Тру программеры» называют же 1Счиков часто «ненастоящими программистами»: типа, разве ж ты можешь считаться настоящим, если твой код не содержит запускаемый файл? Так. Макросы пишешь. Отчасти это правда: мы пишем только инструкции для оболочки. С другой стороны — тогда их тоже нельзя считать настоящими, т.к. запускаемые файлы — это тоже инструкция для оболочки. Для операционной системы. А настоящий программный код — машинные коды — уже никто и не пишет практически. Даже ассемблер — это тоже надстройка для процессора.

Я знаю очень много 1Счиков, которые навсегда хотят уйти из 1С (троим из них это всё-таки удалось. Я надеюсь, что стану четвёртым. Правда, один из них был новичком, второй — аналитиком, а третий ушел в такую же «торговую систему», в SAP). Не делают только из-за жадности и лени: стать снова Джуниором после зарплаты в полтора косаря — психологически действительно сложно. Да и переучиваться придётся. И английский учить. Я их понимаю, сам много лет жался. Но и рисовать красные стрелочки на скриншотах до 60 лет — это, простите, вынос головного мозга. Да и английский — не такая уж и сложная вещь. Просто надо озадачиться и прикладывать усилия.

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

Вообще, чем дальше я занимаюсь этим, тем больше прихожу к мысли, что 1С — это кроме хорошей бухгалтерской программы — отличный способ вымывания денег из карманов, и бухгалтеров, и программистов: конфигурации с каждым годом усложняются, разрабатываются новые, и уже без спец. обучения, без курсов и, соответственно, без экзаменов — не обойтись. А всё это стоит денег. Кроме, собственно, тренингов по программированию плодится просто ОГРОМНОЕ количество говнотренингов типа «Матрица мышления программиста» и прочего теоретического навоза. Умные быстроговорящие дядьки с умным видом говорят интуитивно понятные вещи, а прочие спят, мысленно его матерят, и платят, платят, платят. Дядек понять можно — они бабки зарабатывают, слушателей этих курсов — понять невозможно.

Обновлено. Спустя 1.5 года после написания статьи.

Прошло 1.5 года, и я ушел из 1С-а.

Я в 40 лет переучился на Java, и начал всё сначала. Теперь пишу сайтики.

Что я могу сказать.

Наверное, я сделал это зря: я очень много потерял в зарплате. И я потратил очень много денег на обучение.

Плюсы: я стал тру-программером.

Минусы: оказалось, что любой язык имеет свои недостатки.

К примеру, в Java очень много приходится делать «с нуля». А в 1С всё это уже реализовано. И реализовано достаточно хорошо.

Вообще, 1С 8 — это продукт на много порядков выше, чем та же Java. Ну просто она заточена немного под другую программную область.

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

Лучшая практика — Страница 3 из 3 — всё по этой теме для программистов

MSDN : лучшая библиотека, посвящена тем языкам , которыми занимается мелкософт, а именно: Visual Basic/C#/C++/F#, JScript ну и конечно же там есть мануалы по среде разработки Visual Studio. Основной упор сделан на .NET, описан каждый класс этой платформы и имеются примеры, иногда бессмысленные, в которых просто показывается работа с этим классом, а иногда очень даже поучительные попадаются. Вообщем самый полезный ресурс, если вы постигаете один из .NET языков.

SimpleC# : отличный ресурс посвященный C#-у, есть и форум, и множество проектов, иногда серьезных, которые пишут пользователи ресурса, так же есть неплохие уроки, уроки не насыщенные, сухие и не подойдут для начального обучения, не чего не поймете, скорее всего это так, если что забыли, чтобы было где подсмотреть.
https://mycsharp.ru — отличный сайт для изучения С#
https://ru.html.net — изучение HTML, CSS, PHP
MSPLive — Видео-блог по программированию для продуктов Microsoft.

Не волнуйтесь, если что-то не работает. Если бы всё работало, вас бы уволили.©

В теории, теория и практика неразделимы. На практике это не так.© Gen

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

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

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

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

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

Болтовня ничего не стоит. Покажите мне код.© — Torvald

Как видно, совершенство достигается не тогда, когда уже нечего прибавить, но когда уже ничего нельзя отнять.© — Antoine de Saint

Я изобрел понятие «объектно-ориентированный», но могу заявить, что не имел в виду C++ при этом.© — Alan Kay

Насколько проще была бы жизнь, если бы она была в исходниках!©

У программиста есть два состояния: «Втупляю» и «Попёрло». © Gen

Лучшие программисты не чуть-чуть лучше хороших. Они на порядок лучше по любым меркам: концептуальное мышление, скорость, изобретательность и способность находить решения.© — Randall E. Stro

Сначала учите науку программирования и всю теорию. Далее выработаете свой программистский стиль. Затем забудьте все и просто программируйте.© — George Carrette

Ничто так не ограничивает полет мысли, как компилятор. ©

Если что-то заработало сразу — выключай и ищи ошибку!©

Это не баг, это фича!©

Наше дело написать — ваше дело разобраться. ©

Качество проекта определяется количеством матов у программистов.©
Я бы изменил этот мир, но Бог не дает исходников. (c)

Дружно благодарим за цитаты HE_TOT_KTO_Hy)I(EH

  1. HE_TOT_KTO_Hy)I(EH
  2. agranom555
  3. Mr.EvgenRu
  4. DenFav
  5. kingofshadows ЯП: Pascal, Delphi, Java, C/C++, C#, Python.
  6. zusicks438
  7. FronSTAN
  8. Spout07
  9. VaaLerka
  10. ololololo)
  11. NonpluS
  12. GamerZAV
  13. dushkin_alex
  14. Izobara ЯП: Pascal, Delphi, Java.
  15. th3_smart
  16. flex911
  17. Prototik
  18. banana_men
  19. scadl ЯП: Delphi, C++, ECMAScript, SQL.
  20. Николай Сургут ЯП: Pascal, C++.
  21. XAKERART
  22. fomichevic ЯП: Pascal, Java, C, PHP, Visual Basic.
  23. RznNike ЯП: C#, C++, MS SQL, Visual Prolog 7, 1C, Python, Turbo Pascal, Delphi, VBA, Assembler.
  24. AvatarMod ЯП: C#.
  25. worldxaker ЯП: JavaScript, C#.
  26. wolf3d2 ЯП: язык зависит от конкретной задачи.
  27. LdrLo ЯП: C, Python, JavaScript.
  28. vovka323 ЯП: Pascal.
  29. mikiQD ЯП: C#, JavaScript, Python, Golang.
  30. Pepsi743 ЯП: Pascal, Python, C++.
  31. Fantom-3000 ЯП: Pascal, Delphi, C++.
  32. deym ЯП: Python, C++.
  33. nikmlv ЯП: C++, Pascal, Python; Разметка: HTML, CSS.
  34. Assassin225 ЯП: C++, C#.
  35. JasonVoorhees (ex. Rodik. 24) ЯП: Java, C++.
  36. 4.0 ЯП: Pascal, Java (В процессе изучения).
  37. Paya1nik ЯП: C++, C#, VB, JS, Pascal — забанен
  38. androiddroiddroid ЯП: VB, Python.
  39. G00D_WlN ЯП: C++, C#.
  40. Rovik_Hevik ЯП: C#
  41. BOYARIH ЯП: python, веб-языки (html, css и т.д.), ruby, C/C#/C++, assembler
  42. CM 13 ЯП: Java, C++
  43. PHPoeniX ЯП: Shell , C++ , Edify , Java(В процессе изучения)
  44. SigmaTel71 ЯП: PHP (В процессе изучения); Разметка: HTML, CSS.
  45. ROOTALPHA ЯП: Javascript, Python; Разметка: HTML.

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

Этот закон назван так в честь его создателя — капитана Эдварда Мерфи, бывшего в то время инженером на проекте MX981 ВВС США. Целью проекта было определение максимальной перегрузки, которую способен выдержать человеческий организм.

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

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

С течением времени список «законов» пополнялся новыми перлами армейских технических специалистов, оставаясь, тем не менее, не известным практически никому кроме них самих.

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

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

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

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

Чтобы обнаруживать ошибки, программист должен иметь ум, которому доставляет удовольствие находить изъяны там, где, казалось, царят красота и совершенство.
Фредерик Брукс-младший

Выдавать глобальные идеи — это удовольствие; искать сволочные маленькие ошибки — вот настоящая работа.
Фредерик Брукс-младший

Как только проект окончательно принят, он становится устаревшим в смысле своих концепций.

Настойчивость руководителя может определить график выполнения задания, но не в состоянии определить срок его действительного завершения.
Фредерик Брукс-младший

Глупец, лишенный способности посмеяться над собой вместе с другими, не сможет долго выносить программирование.
Фредерик Брукс-младший

Если за две минуты омлет еще не готов, у заказчика два выбора — подождать или съесть его сырым.
Фредерик Брукс-младший

Когда кажется, что все уже работает, все объединено в систему — вам еще осталось работы на четыре месяца.
Чарльз Портман , ICL

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

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

Ошибка? Это не ошибка, это системная функция.
Т. Джон Уэнделл

Пользователь не знает, чего он хочет, пока не увидит то, что он получил.
Э. Йодан

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

Если отладка — процесс удаления ошибок, то программирование должно быть процессом их внесения.
Э.Дейкстра

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

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

Ошибки так же неисчерпаемы, как и атом.

Аксиома. В любой программе есть ошибки.

Закон пропорциональности. Чем более программа необходима, тем больше в ней ошибок.

Следствие. Ошибок не содержит лишь совершенно ненужная программа.

Фундаментальный закон теории ошибок. На ошибках учатся.

Следствие 1. Программист, написавший программу, становится ученым.

Следствие 2. Чем больше программист делает ошибок, тем быстрее он делается ученым.

Следствие 3. Крупный ученый-программист никогда не пишет правильные программы.

Замечание. На то он и ученый.

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

Закон необходимости ошибок. Программист может обнаружить ошибку только в чужой программе.

Следствие. Ошибке не все равно, кто ее обнаружит.

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

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

Язык ошибок. Ошибки могут следовать друг за другом.

От перестановки двух эквивалентных ошибок результат не меняется (коммутативность эквивалентных ошибок).

Две последовательные ошибки можно объединить в одну, более сильную.

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

Ошибки могут образовывать циклы. Наиболее устойчивый из них — бесконечный.

Ошибки могут вызывать друг друга и сами себя (рекурсивность ошибок).

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

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

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

Взаимодействие ошибок с базовой операционной системой.

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

Запросы операционной системы к ошибкам ошибками могут игнорироваться.

Запросы ошибок к операционной системе игнорироваться не могут.

При работе с файлами ошибки могут пользоваться файловой системой базовой ОС и ее ошибками.

На ЭВМ с параллельной архитектурой может выполняться несколько ошибок одновременно.

Системные программы облегчают процесс написания прикладных программ и их ошибок.

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

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

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

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

Как я стал разработчиком с нуля. И вы сможете

В нашей стране люди воспитаны так, что профессию надо выбрать раз и навсегда, причем уже к 18 годам. А что, если ошибся, либо надоело, либо дошел до стадии, когда карьерный рост по каким-то причинам невозможен? В юности смена рода деятельности воспринимается более-менее нормально, но когда тебе 30, а то и больше, тут уж не до маневров… Или это не так?

Короче, мне за 30, я состоявшийся профессионал, и я решил освоить фронтенд-разработку. Захотелось двух вещей:

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

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

С чего начать?

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

Решив, что мне интересна разработка сайтов, а именно фронтенд, я отправился на YouTube. Там мне помогли видео о том, что должен знать веб-разработчик в текущем году – особенно те ролики, где досконально рассматривали всю «дорожную карту» от самых основ до вершин. Тут же более-менее стало ясно, куда двигаться.

Как учиться?

В общем есть два пути:

Суровый самоучка – кидаетесь в пучину с головой. Все, что надо, есть на YouTube, а все платное можно даром скачать на торрентах. Если что непонятно, спрашиваем в чатиках и соцсеточках.

Подход кажется хорошим, но он требует невыносимого самоконтроля. Вы можете безвылазно смотреть YouTube в течение первой недели, а на второй «что-то пойдет не так», и вы просто бросите. Просто потому, что вдруг отдали приоритет чему-то другому. Сериалу, играм, девушке – неважно. К тому же, вы ничего не платили, а стало быть ничего не теряете – и легко сливаетесь.

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

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

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

  • Систематизированные видеоуроки. С самых-самых основ. Я гуманитарий, и мне нужно все разжевать и положить в рот без лишней технической терминологии.
  • Качественная профессиональная подача. Мой учитель по ту сторону экрану должен говорить уверенно и по делу. И таких, как оказалось, очень и очень мало – большинство «преподов» можно смело слушать на удвоенной скорости, в то и не слушать вовсе.
  • Интересная практика. Без этого никуда. Нужно решать задачки, и важно, чтобы они соприкасались с реальной жизнью, а не только с математикой. Согласитесь, что одно дело тасовать абстрактные цифры в массивах, и совсем другое – написать какой-нибудь планировкщик или хотя бы базу девушек, с которыми ты одновременно встречаешься.

Мою веру в гуру кодинга окончательно подорвали на бесплатном вебинаре одной из широко рекламируемых в рунете школ. Молодой человек в пижаме пытался объяснить основные понятия в программировании, обильно сдабривая речь словами «ну», «вот» и «короче». В качестве примеров он приводил математические операции, и было ни черта не ясно, как из всех этих уравнений получается конечное приложение. Аудитория требовала объяснений. Парень ухмылялся: ну головой-то думайте , грёбаные гуманитарии ! В конце вебинара он поздравил собравшихся с тем, что сейчас можно записаться на курсы со скидкой. И ушел.

Где учиться?

Для желающего освоить новую профессию в интернете есть куча платных и бесплатных материалов. В моем случае начинающего веб-разработчика я обнаружил:

  • Неиссякаемый YouTube. Вроде бы все есть, но с чего начать, а тем более, куда продолжить, – непонятно. Знания не систематизированны. Блогеры любят фокусироваться на частностях, упуская общую картину. Однако YouTube хорош, когда нужно углубить какую-то тему.
  • Русскоязычные платные курсы «Нетология», GeekBrains, HTML Academy и подобные. Дороговато, если не решил крепко-накрепко менять профессию и не уверен, что в будущем отобьешь затраты. К тому же бесплатные вебинары некоторых школ не блистали качеством, а среди преподавателей по другим специальностям я обнаружил коллег, чей профессионализм оставляет желать лучшего. Хм.

По ценам. Первый уровень месячного интенсива HTML + CSS в HTML Academy стоит 24 500 рублей. Профессия frontend-разработчик в «Нетологии» без скидки 54 900 рублей, правда, за 8-месячные курсы плюс обещают стажировку и трудоустройство. В GeekBrains берутся учить за 7855 руб/мес на протяжение семи месяцев, в комплекте стажировка на реальном проекте GeekBrains или Mail.Ru, а то и у партнеров вплоть до Сбербанка.

И это лишь немногое из того, где можно поучиться.

Меня спасла реклама в Facebook. Предложили англоязычную школу Treehouse, и я повелся. Кликнул на бесплатный курс Introduction to HTML and CSS, прошел его.

Обучение было как раз таким, какое я искал: на видео профессиональный наставник с чувством, с толком, с расстановкой объяснял азы фронтенда. Иногда на экране появлялась доходчивая инфографика. В ходе разбора темы нужно было выполнять задания, а то и пройти целый челлендж, либо ответить на вопросы.В конце – контрольная работа. Есть «песочница», где писать код и ссылки на допматериалы – документации на Mozilla Developer Network и др.

Мне понравилось. Вот просто – понравилось. Обучение стоило всего 25 долларов в месяц, за которые я получал неограниченный доступ ко всем курсам школы. Я и вписался.

И что было дальше?

По мере прохождения курсов я работал над учебными проектами. Это были простенькие одностраничные сайтики. Как только происходил затык, и мне хотелось углубиться в тему, я направлялся на YouTube и в Telegram-чаты. Почувствовав силы, присоединился к тематическим сообществам на Facebook и время от времени отвечал на вопросы новичков.

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

Мне помогало абстрагироваться от суровой реальности среднестатистического российского кодера. Вдохновение и поддержку я находил в зарубежных фрилансерских тусовках Digital Nomads. Как правило, это заряженные ребята, которые точно знают, чего хотят от жизни, и многие из них – программисты самоучки. А многие из самоучек – написали книги о своем пути к новой профессии.

Первые деньги

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

В случае с фронтендом это проще простого:

  1. Если вы хорошо учитесь, то у вас по ходу дела будут появляться готовые учебные проекты.
  2. В интернете есть базы готовых макетов. Загружаете – и верстаете. Чтобы не ковыряться слишком долго, поставьте себе цель: сверстать 5 макетов в неделю. Ну или хотя бы парочку.
  3. Наверняка у вас есть друзья, которым нужна сайт. Возьмите и сделайте им подарок.
  4. Если таковых друзей нет, то предложите свои услуги в каком-нибудь профессиональном сообществе. Бесплатно.

Как только почувствовали, что ваш кодинг-скилл достиг 80 lvl, и вы способны на раз-два решать актуальные задачи, можно искать работу. Тут прямой путь как минимум на HeadHunter, а если хотите фрилансить – добро пожаловать на Upwork.

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

(5.00 из 5, оценили: 5)

Добавить комментарий