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

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

Таким образом, вместо того, чтобы MyClass имел параметр типа, он мог бы иметь функцию в качестве параметра, что-то вроде этого:

class MyClass(f:(Seq[Double])=>HasCalculate){
 val pars = Seq(1.0, 2.0)
 val calc = f(pars)
 val res = calc.calculate
}

А затем предоставить анонимную функцию с конструктором в его теле:

val myClass = new MyClass((s:Seq[Double])=>new Calc1(s) with HasCalculate)

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

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

11
задан 11 revs, 4 users 53% 23 May 2017 в 10:28
поделиться

29 ответов

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

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

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

37
ответ дан 3 December 2019 в 00:37
поделиться

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

0
ответ дан 3 December 2019 в 00:37
поделиться

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

0
ответ дан 3 December 2019 в 00:37
поделиться

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

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

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

0
ответ дан 3 December 2019 в 00:37
поделиться

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

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

0
ответ дан 3 December 2019 в 00:37
поделиться

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

0
ответ дан 3 December 2019 в 00:37
поделиться

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

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

0
ответ дан 3 December 2019 в 00:37
поделиться

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

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

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

0
ответ дан 3 December 2019 в 00:37
поделиться

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

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

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

0
ответ дан 3 December 2019 в 00:37
поделиться

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

0
ответ дан 3 December 2019 в 00:37
поделиться

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

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

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

0
ответ дан 3 December 2019 в 00:37
поделиться

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

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

1
ответ дан 3 December 2019 в 00:37
поделиться

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

1
ответ дан 3 December 2019 в 00:37
поделиться

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

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

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

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

1
ответ дан 3 December 2019 в 00:37
поделиться

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

:-)

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

1
ответ дан 3 December 2019 в 00:37
поделиться

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

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

1
ответ дан 3 December 2019 в 00:37
поделиться

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

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

1
ответ дан 3 December 2019 в 00:37
поделиться

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

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

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

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

Доверие инструменту является большим - но знающий, как сделать, это без инструмента важно, также.

2
ответ дан 3 December 2019 в 00:37
поделиться

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

2
ответ дан 3 December 2019 в 00:37
поделиться

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

2
ответ дан 3 December 2019 в 00:37
поделиться

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

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

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

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

3
ответ дан 3 December 2019 в 00:37
поделиться
s/make/allow/

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

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

4
ответ дан 3 December 2019 в 00:37
поделиться

Нет,

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

4
ответ дан 3 December 2019 в 00:37
поделиться
6
ответ дан 3 December 2019 в 00:37
поделиться

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

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

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

9
ответ дан 3 December 2019 в 00:37
поделиться

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

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

Tony

6
ответ дан 3 December 2019 в 00:37
поделиться

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

17
ответ дан 3 December 2019 в 00:37
поделиться

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

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

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

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

То же самое с программированием и SDKs, можно добавить много дополнительных свойств с помощью предопределенного кода, но когда время настает, что необходимо записать что-то для РЕШЕНИЯ проблемы, все инструменты и автоматизация в мире не помогут Вам там (AI не усовершенствованный еще так или иначе ;).

14
ответ дан 3 December 2019 в 00:37
поделиться

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

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

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

1
ответ дан 3 December 2019 в 00:37
поделиться
Другие вопросы по тегам:

Похожие вопросы: