Могут ли более умные компиляторы, языки и рамки делать более глупых программистов?

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

Jim C дает следующую аналогию калькулятора:

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

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

Ответ 1

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

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

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

Ответ 2

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

Ответ 3

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

Хорошая автоматизация задач просто делает программистов более эффективными, а не dumber.

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

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

То же самое с программированием и SDK, вы можете использовать множество колоколов и свистков с использованием предопределенного кода, но когда придет время, вам нужно что-то написать, чтобы РЕШИТЬ проблему, все инструменты и автоматизация в мире выиграли, t помочь вам там (AI еще не продвинулся вперед;).

Ответ 4

В среднем, да.:)

Они не делают нас программистов. То, что они делают, позволяет быть более глупыми программистами (что, я полагаю, означает, что в среднем мы глупее.) Имея лучшие инструменты, это означает, что кто-то с небольшим опытом и теневым пониманием концепций CS может все еще выдавать код, который в конечном итоге работает и делает что-то полезное. Это невозможно при записи в сборке, но это при написании, скажем, в VB. (Конечно, есть больше шансов на возможные катастрофы в стиле WTF, когда менее опытный человек пишет большие приложения, которые в конечном итоге рушится под тяжестью их плохой архитектуры.)

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

Ответ 5

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

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

Тони

Ответ 7

Нет,

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

Ответ 8

s/make/allow/

Быть немного меньше glib: они инструменты. Инструменты ничего не делают, и они не делают какого-либо мастера лучше или хуже. Мощные инструменты тоже не действуют - они просто действуют как рычаг, усиливая определенную компетенцию ремесленника (или его отсутствие).

Некоторые средства программирования повлияли на снижение барьеров для входа, если не на профессию инженера по программному обеспечению, а затем, по крайней мере, на запуск приложения. Сокращение количества мысли, которое должно быть связано с созданием рабочего (или "рабочего" ) приложения, сокращает оба пути: компетентные эксперты освобождаются от работы на шутках и могут делать отличные вещи, но неуклюжие новички иногда получат плохой код в производстве, стали бы работать без "умных" инструментов. Последнее влияние, вероятно, оказало большее влияние, чем первое в формировании репутации BASIC, VB, PHP и недавних изменений в инфраструктурах быстрого развития MVC для Интернета - и даже в отношении таких инструментов в целом.

Ответ 9

Более умным вы подразумеваете автоматизацию. Выполнение повторяющейся работы не делает кого-то умнее, поэтому ответ нет.

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

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

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

Ответ 10

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

Ответ 11

Компьютеры - это усиливающие устройства. Так глупые становятся глупее и умнее становятся умнее.

Ответ 12

Только если вы разрешите им.

Если вы научились чему-то трудному и утонченному (например, моему ноутбуку Tandy 102), вы все равно думаете в этом режиме даже с умными инструментами.

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

Например, вы не учите людей, как делать деревообрабатывающие станки с настольными пилами и буровыми машинами - вы начинаете с ручных пил и шнеков или небольших ручных сверл. Таким образом, когда вы переходите к электроинструментам, вы не делаете что-то глупое (tm).

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

Ответ 13

Нет, но это улучшает программы и код.

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

Ответ 14

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

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

Ответ 15

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

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

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

Ответ 16

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

: -)

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

Ответ 17

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

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

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

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

Ответ 18

Нет, это что-то похожее на стероиды (и другие препараты, повышающие эффективность) - они делают хорошего спортсмена еще лучше, но они не могут заставить кого-то вроде меня бегать 100 м в возрасте до 10 лет, даже если я съел целую аптеку лекарств. Таким образом, god IDE, язык или структура могут сделать вас лучшим программистом, но если вы только полагаетесь на это, чтобы выполнить эту работу, у вас проблемы.

Ответ 19

Я думаю, нет, но есть много людей (очень мудрые), которые думают иначе

Я действительно рекомендую эту лекцию, это очень интересное мнение и очень хорошее эссе

Ответ 20

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

Ответ 21

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

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

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

Ответ 22

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

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

Лучшие инструменты делают нас лучше. Компромисс - мы не теряем контроль над процессом.

Ответ 23

В некотором роде

Например, я не знаю и не забочусь о том, как писать перегрузки операторов, потому что у меня есть инструменты, которые делают их для меня. Мне не нужно даже помнить, как работает P/invoke, потому что инструмент, который у меня есть, автоматически создаст проект dll С++ и [DllImport] в моем проекте С#. Мне не нужно писать автообновление для моего проекта, потому что ClickOnce в значительной степени это. (И я понятия не имею, как это работает "под капотом".)

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

Ответ 24

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

Я скажу, однако, я никогда не смогу вернуться к написанию одной строки кода без Intellisense:)

Ответ 25

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

Ответ 26

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

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

Ответ 27

Я бы сказал, нет.

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

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

Ответ 28

Умные языки, компиляторы и фреймворки делают программирование возможным. Я имею в виду, могли бы вы представить себе состояние программирования, если бы мы все еще ограничивались использованием языка ассемблера? Черт, поцарапай это. Не могли бы вы представить себе состояние программирования, если бы мы были ограничены C или С++?

Ответ 29

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

Ответ 30

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

Они делают нас глупее, большинство из вас здесь, кто реагирует уже ЗНАТЬ, как программировать достойно. И почему? Потому что вы пришли из эпохи, которая вряд ли использовалась.

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

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

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

Отметьте мои слова!