Делают ли более умные компиляторы, языки и фреймворки более тупыми программистов?[закрыто]

StackOverflow https://stackoverflow.com/questions/428571

  •  06-07-2019
  •  | 
  •  

Вопрос

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

Джим С приводит следующую аналогию калькулятора:

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

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

Это было полезно?

Решение

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

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

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

Другие советы

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

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

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

  

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

Калькулятор - это инструмент, который позволяет выполнять определенные задачи. Конечно, вы можете выполнять сложную математическую и многопараметрическую интеграцию, но, не изучая математику, откуда вы знаете, что вам НЕОБХОДИМО выполнить эту задачу в определенный момент времени?

То же самое с программированием и SDK, вы можете добавить много наворотов, используя предопределенный код, но когда придет время, когда вам нужно что-то написать, чтобы решить проблему, все инструменты и автоматизация в мире выиграют ' Тебе там не помочь (ИИ еще не настолько развит;).

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

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

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

Вращает ли Visual Studio разум?  - Чарльз Петцольд

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

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

Тони

Нет,

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

s/make/allow/

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

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

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

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

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

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

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

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

Только если вы позволите им.

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

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

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

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

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

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

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

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

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

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

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

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

:-)

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

В некотором смысле

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Итак: для всех вас, людей, уже знающих языки, нет ... это не делает вас тупее

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top