Конкурентное и реальное программирование: отличия?

Вот все о различиях между соревновательным программированием и программированием в реальной жизни:

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

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

Реальная жизнь гораздо шире.

Программы для Windows, мобильные приложения, игры - ВСЁ БЕСПЛАТНО, в нашем закрытом телеграмм канале - Подписывайтесь:)

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

Давайте копать прямо!

Конкурентное и реальное программирование: отличия?

Что такое соревновательное программирование? (3 соревнования)

Счастливый программист на рабочей станции.

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

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

Спорт?

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

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

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

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

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

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

Топкодер №1

женщина-программист, работающая в домашнем офисе

Topcoder, вероятно, является самой известной организацией соревнований по программированию в бизнесе.

В них проводится множество различных соревнований, в том числе еженедельных, но самым престижным является Открытие топкодера (TCO).

Это ежегодное соревнование между лучшими участниками Topcoder.

Open проводится лично (тогда как квалификационные турниры в основном проводятся онлайн).

Во время Open всем участникам дается одно задание.

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

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

Следование их кодексу работает, побеждает самый быстрый участник.

№ 2 Начальник кода

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

CodeChef — еще одно громкое имя в бизнесе, и эта группа ежемесячно проводит соревнования.

Формат и задачи в CodeChef аналогичны тем, которые предоставляет Topcoder.

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

Например, у CodeChef есть то, что они называют Long Challenges.

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

#3 Побитовое

Молодой программист сидит за столом в своем офисе и работает

Побитовый ежегодное командное соревнование по программированию.

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

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

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

Что такое реальное программирование?

Два профессиональных ИТ-программиста мужского пола обсуждают на рабочих станциях.

Программирование в реальной жизни — это не технический термин.

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

Это просто общая фраза, которая пытается передать идею профессионального программирования, никак не связанного с соревновательным программированием.

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

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

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

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

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

Во-вторых, все они профессиональные приложения.

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

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

В чем сходство соревновательного и реального программирования? (3 принципа)

Специалист по кодированию сидит за столом и улыбается

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

В общем смысле это и аспекты, и приложения программирования.

Вы увидите много одинаковых навыков и знаний, применяемых к обоим.

Прежде всего, они следуют одному и тому же основному принципу: решению проблем.

№1 Решение проблем

Молодые программисты на рабочих станциях

Давайте копнем это немного глубже.

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

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

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

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

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

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

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

Код №2

программист, работающий над кодом в офисе

Один шаг вверх от решения проблем — в иерархии фундаментализма программирования — это код.

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

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

На корневом уровне код есть код.

# 3 Основные навыки

молодая азиатская женщина-программист занята дома, работая над кодом

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

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

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

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

Каковы ключевые различия между соревновательным и реальным программированием? (4 отличия)

мужчина-фрилансер работает на ноутбуке в домашнем офисе.

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

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

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

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

№1 Уверенность

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

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

Соревнование — это, по сути, гонка за тем, кто быстрее и эффективнее решит компьютерную задачу.

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

Люди, проводящие соревнования и разрабатывающие задачи, уже знают решение.

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

Их задача — найти его как можно быстрее.

В реальном мире все обстоит совсем наоборот.

Как программист, вы сталкиваетесь с проблемой или потребностью.

Ты должен решить ее, даже если никто раньше этого не делал.

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

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

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

Эта неопределенность меняет все отношение и перспективы вашего процесса программирования.

#2 Ставки

Разработчик программного обеспечения отдыхает от тяжелой работы в своем офисе

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

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

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

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

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

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

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

Ставки не могли быть выше.

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

#3 Эффективность и простота

Молодая женщина-программист работает дома.

Теоретически концепции эффективности и простоты универсально определяют хороший код.

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

Это достаточно легко понять.

В соревновательном программировании эффективность и простота решают все.

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

Он также может работать быстрее, и это тоже может иметь значение.

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

Вот и все.

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

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

Но эффективность на выходе, конечно, не самое главное.

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

Программирование в реальной жизни почти полностью ориентировано на результат.

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

# 4 Все, что помимо кода

счастливые молодые программисты-фрилансеры отдыхают и разговаривают на рабочем месте

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

Ни на что другое времени не остается.

Программирование в реальной жизни не могло быть другим.

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

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

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

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

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

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

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

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

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

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

Программы для Windows, мобильные приложения, игры - ВСЁ БЕСПЛАТНО, в нашем закрытом телеграмм канале - Подписывайтесь:)

Похожие записи

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

Ваш адрес email не будет опубликован. Обязательные поля помечены *