LINUX.ORG.RU
ФорумTalks

Программист ли это?


0

0

Читая разную писанину на форумах и общаясь с людьми пишущих на языках сверх высокого уровня, ясли можно так выразится, я был удивлен, что много из них даже не представляют что и как устроенно в компьютере. Они слабо представляют себе как данные хранятся в памяти, что такое машинный код, ну и так далее. Для них есть просто переменная, в которую можно положить все что угодно, и все, — дальше черный ящик. Мне интересно что по этому поводу думаете вы.
1) Нужны ли эти знания человеку пишущем на Python/Ruby/PHP/Java/etc?
2) Можно ли таких программистов называть полноценными программистами?

★★★★★

1) Нужны. Чтобы не писать быдлокод.
2) Нельзя. Это быдлокодеры, а не программисты.

svr4
()

Блджад, куда делся из моего поста заголовок треда в который я отвечаю? Запилите как было.

svr4
()

1) почти никогда не нужны
2) да

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

volh ★★
()

1. да
2. нет. это уг.

зы: а чо за глюки???? это только я вижу??

Komintern ★★★★★
()

> Они слабо представляют себе как данные хранятся в памяти

Ну, я на самом деле слабо представляю, как работает трансляция адресов на более новых x86...

shimon ★★★★★
()

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

Так всегда было. Собственно, много-много лет назад сформировалось деление на программистов системных и программистов прикладных. Первым знание устройства ПК на низком уровне обязательно. Вторым - нет. Я учился на факультете кибернетики химико-технологических производств. И готовили из нас именно прикладников. Так вот, устройство компьютера нам даже близко не преподавали :) Вычислительная математика, Фортран, Паскаль. Учили как рассчитать нефтеперегонный завод, но не учили, что такое операции сдвига и сколько регистров бывает у процессора. Собственно, например, про машины, с которыми работал в рамках этого курса, до сих пор ничего не знаю. Та же СМ-4 - без гугления ничего не скажу, ни разрядность, ни архитектуру, ни параметры. Зато знаю, как писать на ней программы на Фортране :)

KRoN73 ★★★★★
()

Новые времена наступили:
Люди пишут софт имея слабую тройку по математике в аттестате, банковские работники осваивают VBA и пишут макросы для экселя, программисты 1С отдельная песня )

aydar ★★★★★
()
Ответ на: комментарий от shimon

>Ну, я на самом деле слабо представляю, как работает трансляция адресов на более новых x86...

Когда писал свой DPMI-драйвер под 386 - тогда меня MMU интересовал. После 386-го - уже нет. Так что даже как он на 486-м работает уже не в курсе :) А к моменту появления Pentium MMX я уже и ассемблером интересоваться перестал. В результате до сих пор имею только смутное представление о SIMD-командах x86 :)

KRoN73 ★★★★★
()
Ответ на: комментарий от volh

> чтобы программист тридцать лет назад считался программистом, нужно ли ему было знать, как и из чего сделаны перфокарты?

Представляешь себе холивар на тему «какой картон для перфокарт душевнее, теплее и ламповее»? Я думаю, что тогда если и холиварили, то на тему, бюст которой из девочек-перфораторщиц округлее и изящнее...

shimon ★★★★★
()

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

volh ★★
()
Ответ на: комментарий от shimon

>Я думаю, что тогда если и холиварили

Гы. Я краем уха застал ещё споры о том, что предпочтительнее, перфоленты или перфокарты :)

KRoN73 ★★★★★
()
Ответ на: комментарий от volh

>спроси у художника химический состав красок, ёпт.

Ну, совсем недавно были времена, когда художники сами краски готовили :) И состав пигмента, собственно, в названии был отражён. «Сажа газовая», «белила цинковые», «охра», «киноварь»... Но сегодня - да, таки прогресс :D

KRoN73 ★★★★★
()

Программист ли это?

1) Нужны 2) Нельзя

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

Про это хорошо Джоель написал (http://www.joelonsoftware.com/)

Быдлокодеры считают Юникод побайтно. Никакой Питон не спасет вас от таких ошибок. Надо понимать, что системный вызов в принципе ничем от вызова функции из SO не отличается, надо понимать про защиту памяти, про еще кучу вещей. Часто на высоком уровне приходится городить аналогии стека и регистров...

demmsnt
()
Ответ на: Программист ли это? от demmsnt

Вообще имхо человек на должен знать устройство

но он должен быть готов его понять. он должен понимать, почему и зачем?

namezys ★★★★
()
Ответ на: комментарий от volh

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

Ну, поскольку уже при моей жизни - то, таки да, «буквально вчера» :) А та же Microsoft набирала свой вес уже не просто «при жизни», а на глазах :)

KRoN73 ★★★★★
()
Ответ на: Программист ли это? от demmsnt

>Быдлокодеры считают Юникод побайтно

Это, как раз, от смешения высокоуровневой и низкоуровневой работы. Если бы программисту не объясняли (ошибочно), что байт - это символ, то он бы никогда их не путал. Для него символ бы был высокоуровневым понятием.

KRoN73 ★★★★★
()
Ответ на: Программист ли это? от demmsnt

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

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

volh ★★
()
Ответ на: комментарий от shimon

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

urxvt ★★★★★
() автор топика

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

2. return пункт1() ? true : false;

Nagwal ★★★★
()
Ответ на: комментарий от urxvt

>самые базовые понятия: про регистры

Зачем? :)

сдвиги


Зачем? :)

про то сколько инт занимает


Опять же, на какой архитектуре? Даже С++ уже дошёл до того, чтобы абстрагировать int от разрядности слова машины (на 64-х битных машинах он по-прежнему 32 бита)

и почему именно 255 максимальное число влезающее в байт.


Во-первых, для этого нужна математика, а не знание потрохов машины, во-вторых, это всё равно не спасёт программиста на Java от ошибок типа:

Integer x = 1000;
Integer y = 1000;
if(x <> y)
// oops!

KRoN73 ★★★★★
()

Если Python/Ruby/PHP/Java, то эти знания необязательны. Более того, как раз таки люди, заморачивающиеся подобной ерундой, и пишут нечитаемый, трудно сопровождаемый бажный быдлокод.

slyjoe
()
Ответ на: комментарий от svr4

>Я как-то видел эмулятор простенького CPU (что-то типа 8008) написанный на языке очень высокого уровня. Плакал.

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

KRoN73 ★★★★★
()
Ответ на: комментарий от volh

В школе много чего проходят, но это же не гарантирует то что школьники это знать будут ;)

urxvt ★★★★★
() автор топика
Ответ на: комментарий от volh

От того как написан, как работал (в частности с какой скоростью) и как падал. До этого считал что программы на яве и c# не падают с memory access violation.

svr4
()

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

Legioner ★★★★★
()
Ответ на: комментарий от urxvt

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

Для кого тот же справочник по математике Корна и Корна написан?

volh ★★
()
Ответ на: комментарий от KRoN73

> Зачем? :)

Зачем? :)

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

Во-первых, для этого нужна математика, а не знание потрохов машины, во-вторых, это всё равно не спасёт программиста на Java от ошибок типа: ...

Ну математика математикой, но знать количество битов в байте нужно :) Хотя зачем мне для использования PHP это, казалось бы.

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

urxvt ★★★★★
() автор топика
Ответ на: комментарий от shimon

> Я думаю, что тогда если и холиварили, то на тему, бюст которой из девочек-перфораторщиц округлее и изящнее...

Нет, такого холивара не наблюдал, все девочки на ВЦ были хороши :)

Были перфораторы двух типов - «старые» (просто дырочки на перфокартах делали), и «новые», которые сверху еще и печатали соответствующий код. ТруЪ программисты в надпечатке не нуждались, читая перфокарты «на просвет» и у каждого из них был пакетик с «антидырочками» для быстрого исправления перфокарт :)

Холивары были за машинное время - кому нужнее... 30 минут пакетной обработки на ЕС-1033 в ночь для дипломника - счастье. Зато и программы вылизывали, и алгоритмы проверяли тщательно.

oami ★★
()
Ответ на: комментарий от oami

>Холивары были за машинное время - кому нужнее...

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

volh ★★
()
Ответ на: комментарий от urxvt

>Можно я на это отвечу словами Реймонда о Лиспе. :)

Не подходит :) Ибо это ради знания методик, а не технических решений.

но знать количество битов в байте нужно :)


Зачем? :)

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


Ну, это же машина Тьюринга, не? :)

что есть стек, и так далее


Стек есть не у всех процессоров :D А стек как структура данных - это, как раз, математика, а не технология :)

Просто иметь представление. Так же как автолюбителю иметь представление о принципе работы сцепления.


Не... Это как знать о том, что сцепление есть вообще. А то, как оно устроено - так у разных же машин по-разному :)

KRoN73 ★★★★★
()
Ответ на: комментарий от KRoN73

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

Надоело, ткунл в rubby. Теперь он доволен как слон

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

а о том, что память виртуальная - он до сих пор не знает

namezys ★★★★
()
Ответ на: комментарий от shimon

Представляешь себе холивар на тему «какой картон для перфокарт душевнее, теплее и ламповее»? Я думаю, что тогда если и холиварили, то на тему, бюст которой из девочек-перфораторщиц округлее и изящнее...

Гы-гы-гы, сразу представляю себе Calculate Linux.

los_nikos ★★★★★
()
Ответ на: комментарий от svr4

>От того как написан, как работал (в частности с какой скоростью) и как падал.

У меня есть эмулятор Кнутовского MIX-компьютера на лиспе. Надо сказать что функция exec-opcode в логах профайлера занимает не первое место. Первое место там занял emul-io который выводит данные из «порта» на консоль.

Absurd ★★★
()
Ответ на: комментарий от KRoN73

>> но знать количество битов в байте нужно :)

Зачем? :)

Для того чтобы понять откуда берется 256 (мы про байт говорили). Я не утверждаю что эти знания он прямо применит на практике.
Млин, ну какой мне толк из того что я знаю столицу Германии, что я знаю о существовании силы земного притяжения. :)

Ну, это же машина Тьюринга, не? :)

Она самая.

Стек есть не у всех процессоров :D А стек как структура данных - это, как раз, математика, а не технология :)

Ну про не все я не знаю, я только про существование ia32 подозреваю, остальные для меня черный ящик. Я же говорю, не нужно придираться к _конкретным_ примерам.

Не... Это как знать о том, что сцепление есть вообще. А то, как оно устроено - так у разных же машин по-разному :)

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

urxvt ★★★★★
() автор топика
Ответ на: комментарий от urxvt

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

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

volh ★★
()
Ответ на: комментарий от urxvt

>Для того чтобы понять откуда берется 256

Зачем? :)

Млин, ну какой мне толк из того что я знаю столицу Германии, что я знаю о существовании силы земного притяжения. :)


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

Ну про не все я не знаю, я только про существование ia32 подозреваю, остальные для меня черный ящик. Я же говорю, не нужно придираться к _конкретным_ примерам.


Все равно, это ведь полезные знания.


Полезные. Для общего знания. Но для профессиональной деятельности большинства прикладников прямой пользы эти знания не несут :)

KRoN73 ★★★★★
()
Ответ на: комментарий от KRoN73

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

imhotep
()
Ответ на: Программист ли это? от demmsnt

>что системный вызов в принципе ничем от вызова функции из SO не отличается
ну это, прямо скажем, обман, системный вызов через прерывание работает

dimon555 ★★★★★
()

Понимаешь... Попробуй решить ДЕЙСТВИТЕЛЬНО СЛОЖНУЮ задачу. Например машинный перевод, распознавание речи, OCR. Сразу поймешь, что хочется работать только с алгоритмом и задачей. А думать про всякую память и регистры совсем не хочется.

Beria1937
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.