| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Опросы > Нужен ли каждому программисту C++? |
| Автор: nerezus 10.11.2006, 11:24 |
| Сабж. Я считаю, что каждому программисту необходимо знать C++ и Java на уровне синтаксиса. Причина: практически все примеры в умных книжках на этих языках. |
| Автор: Sartorius 10.11.2006, 11:41 |
| Я б сказал, что нужно знать С. Множество остальных языков (Java, C#, Perl ...) унаследовало его синтаксис. А зная С можно спокойно читать исходники на этих языках. |
| Автор: slav0nic 10.11.2006, 11:41 |
| C надо, жабу нет, темболее ООП везед разное |
| Автор: nerezus 10.11.2006, 11:49 |
| Sartorius, я сомневаюсь, что синтаксис PHP, Perl и C похожи. Там только отдаленное сходство. |
| Автор: slav0nic 10.11.2006, 11:57 |
| ну не lisp) а рнр как раз похож на С |
| Автор: nerezus 10.11.2006, 11:58 | ||
Будем считать, что C мы знаем. Ну да ладно: вопрос то не в C, а в C++. |
| Автор: spin2 10.11.2006, 12:14 |
| Нет, не нужен. Потому что в глобальном смысле синтаксис у всех языков этого уровня похож и разобраться с примером на любом языке - не проблема. |
| Автор: esperant0 10.11.2006, 13:00 |
| Я считаю что все программисты должны знать теорию вычислимости и не бояться машин тьюринга. |
| Автор: Reptile 10.11.2006, 13:45 |
| Абсолютно согласен с skyboy. Зачем мне С++ если я на Prolog-е пишу? |
| Автор: Alexeis 10.11.2006, 13:59 |
| В любом случае нужно знать хоть один классический язык. С, pascal, Assembler. Особено хорошо, если знать хоть самые основы Ассемблера, для понимания того "как это все работает". Если не изучать ассемблера, то хотя бы С или на крайний случай Паскаль. Без знания ассемблера сложно написать эффективный алгоритм, на любом из языков. Так что С++ можешь ты не знать, но ассемблер обязан |
| Автор: esperant0 10.11.2006, 17:11 | ||
Улыбнуло для написания эффективных алгоритмов, надо знать теорию алгоритмов, а знание асемблера тут не причем. |
| Автор: BUGOR 10.11.2006, 17:17 |
| Что значит эффективных? |
| Автор: Alexeis 10.11.2006, 17:21 |
Те, которые дают нужный результат и при этом рационально расходуют системные ресурсы. |
| Автор: skyboy 10.11.2006, 17:24 |
| alexeis1, я видел людей, которые на Prolog'e(и LISP'e) пытались писать в императивном стиле... все вредное влияние изучения Pascal и C++ |
| Автор: esperant0 10.11.2006, 17:27 | ||
В теории сложности, эффективныеми принято называть алгоритмы П-класса. Эксоненциальные алгоритмы принято считать не эффективными. Кроме того иногда говорят, что алгоритм А эффективней алгоритма Б если А принадлежит классу О-большое от Б. |
| Автор: Alexeis 10.11.2006, 17:40 | ||
Один и тот же алгоритм в разной реализации может требовать разных ресурсов. Да и просто, что построить алгоритм, его нужно строить для определенной (пусть и логической) машины, а тем более, когда идет речь об экстремальной оптимизации, например, под MMX, SSE, 3DNOW, так вообще непонятно, как это можно сделать без знаний ассемблера. Даже если, для реализации мы используем библиотеки, то мы должны представлять как растет время обработки в зависимости от входных условий. А для этого нужно хоть примерно понимать как же это все внутри реализовано. К примеру, захотели построить некий алгоритм с линейным временем расчета используя некую неизвестную функцию funct, а функция эта выполняет внутри нп полную задачу. И что? Алгоритм хорош, но работает он на практике *****. Теория теорией, а на практике далеко не все так красиво! |
| Автор: esperant0 10.11.2006, 17:51 | ||||
1) А может и не требовать. Все известные модели детерменистических машин тьюринга эквивалентны в классе полиномиальной сложности. 2)Машина тьюринга вполне достаточно. Но удобней рассмотреть м.т с random acsess memory. 3) 4) Все там выше сказанное не как не выделяет ассемблер по сравенению с другим эквивалентным языком. |
| Автор: nerezus 10.11.2006, 17:52 |
| Ну и какой нафиг асм для пхп нужен? )) Давайте отдельную тему потом для асма заведем =)) |
| Автор: Exception 10.11.2006, 18:04 | ||
Почему? Ты не поймёшь ни единого примера ООП на C#/Java, зная один лишь C. Одинаковое оно везде Добавлено @ 18:06
А я-то думал, процент прикладных программ и соответствующих вакансий на рынке превышает проуент тех, где необходимо знать, как эффективно выполнять алгоритмы. |
| Автор: Alexeis 10.11.2006, 18:25 |
А что скрипты ПХП в конечном итоге не выполняет процессор? Или они выполняются сами по себе. Что писать хороший код нужно представлять сколько времени он будет считаться и каких ресурсов требует. Сервер тоже не резиновый, если его всякой бякой забрасывать, то он не сможет обслуживать всех клиентов. Как вы думаете почему задержка между поисками по форуму аж 20 секунд А? Без оценки времени исполнения определенных операций, можно такое нагородить! Никто же не требует на нем кодить! Его нужно знать для глубокого понимания реализации тех или иных операций. Потому, в паскале есть "бесполезные" функции inc(), dec(), FillChar(), Move() и т.д. Потому написали функцию поиска в строках posEx, которую легко можно заменить функциями copy() и pos(), но разница разительная! Даже два линейных алгоритма могут выполняться, один за 2 минуты, другой за 2 секунды, при определенных условиях! Можно изобретать супер алгоритмы вычисления корня, и потратить на это месяцы, так и не поняв, что невозможно его расчитать быстрее определенного интервала, времени, который задает машина, а можно сделать просто таблицу и не терять время на извращеные алгоритмы. Ассемблер позволяет другими глазами смотреть на реализацию. |
| Автор: Nastya 10.11.2006, 18:32 | ||
А я не знакома ни с одним человеком, который бы писал на прологе и лиспе :'( |
| Автор: nerezus 10.11.2006, 18:38 | ||||||||
Только вот не забывай про оптимизацию компилятора. |
| Автор: Alexeis 10.11.2006, 23:30 |
| Автор: nerezus 10.11.2006, 23:43 |
| alexeis1, а кто пишет свои проекты на турбопаскале? |
| Автор: skyboy 10.11.2006, 23:43 | ||
профессионально? а загляни в раздел... а если - "просто пишут", то давай знакомиться |
| Автор: Alexeis 10.11.2006, 23:56 |
| nerezus, это здесь не суть вопроса. А суть в том, что нужно понимать, что ты используешь и как оно работает. |
| Автор: Romikgy 11.11.2006, 00:12 |
| имхо не корректный спор, все зависит от задачи, которую требуется реализовать, а на каком языке , это второй вопрос, главное реализовать! |
| Автор: Alexeis 11.11.2006, 01:21 |
| Romikgy, как я понял С++ рекомендуют учить в любом случае, вне зависимости от того на чем будешь программить. Типа С++ это основа синтаксиса большинства языков. Добавлено @ 01:30 Я считаю, что синтаксис учится за пару месяцев, а намного важнее понимать как работают все внутренние механизмы. Тот кто поймет ассемблер ИМХО поймет потом любой высокоуровневый язык. Помню когда нам, наконец начали его читать, я не мог сдержаться, чтоб не открыть учебник и не читать дальше, дальше, дальше. Конечно, программирование на нем не сахар, зато, что называется полный контроль над ситуацией. Нет недопониманий. Все четко. В спорных ситуациях он как судья показывает, где неправда, а где истина. |
| Автор: angus 11.11.2006, 05:44 |
| я считаю что : 1) delphi и c++ - прошлое (хоть я и начинал с них), будущее за java или за .net (время покажет), 2) так как я прошел путь c, pascal,asm,c++,delphi,java(я имею ввиду что писал код на них, а неразбираюсь професионально) - то считаю что учить например сначала C++ а потом Java - дело гиблое, сам переход не очень простой.не обязательно учить c++ чтоб понять суть OOП. 3) если сравнивать C и Java то ето вообще абсурд, С- используется для написания драйверов, системных фишек.а в Java опять же своя роль ...тут надо определить роли каждого языка и особенности которых нет в других. |
| Автор: esperant0 11.11.2006, 08:32 | ||
Нет не верно. Есть примеры знающих превосходно асемблер, и не понявших С++. ИБо упомянутой вами связи не существует |
| Автор: nerezus 11.11.2006, 09:16 | ||||
Ну вот например расширение интерпретируемого языка. Extensions. Это только C и С++. Геймдев: C++, хотя теперь и на дотнете стало возможно, но.... В геймдеве разница в скорости в пару процентов уже существенна.
Ну и дальше: возьмем книги по технологиям, по рефакторингу, по ООП, по паттернам..... На чем примеры? На C++ и джаве. (Ну это практически всегда) P.S. Мне самому ОЧЕНЬ не нравятся C и C++, но первый я знаю, а второй практически доучил =) |
| Автор: BUGOR 11.11.2006, 12:56 | ||
| Ну смешали всё в кучу, раз уж начали разговор о прикладных языках, так давайте не будем съезжать на скриптовые. Пхп кодеру ассемблер не слишком нужен, это ессно. esperant0
Ассемблер нужен любому программисту, т.к. знание архитектуры ПК отличает профессионала от пользователя, возомнившего себя программером после краткого курса ЯВУ. (С) Не помню. |
| Автор: Romikgy 11.11.2006, 13:55 |
имхо нет, это примочки майкрософта, а на никсах этой хрени нет , так что С++ точно жить будет долго!!! Да вобще проги написаные на С++ и Дельфи работают быстрее чем на Java & .Net (имхо почему понятно ) |
| Автор: Alexeis 11.11.2006, 22:00 | ||
С каких пор пример нескольких людей говорит о верности того или иного утверждения. Если для 100000 это будет правда, а для 10 человек нет, что на этом основании можно говорить, что утверждение неверно? Несколько человек это слишком маленькая выборка, чтоб ее считать достоверной. Дайте результат опроса хотя бы 500 программистов изучавших С++ после ассемблера. Классику надо всегда знать. Это все равно как сказать, что роман "Война и мир" написан давно и потому не актуален, а значит нафиг его читать. Или сказать, что Бетховен безнадежно устарел |
| Автор: nerezus 12.11.2006, 10:29 |
| alexeis1, ну ладно, человек, только что отписавшийся перед тобой(BUGOR), знает асм и не знает С++ и ООП. И я считаю, что таких именно большинство. |
| Автор: Romikgy 12.11.2006, 11:15 | ||
и что этим nerezus сказать то хотел? |
| Автор: nerezus 12.11.2006, 11:21 | ||||
Romikgy,
|
| Автор: Romikgy 12.11.2006, 12:08 |
а что джава? |
| Автор: nerezus 12.11.2006, 13:12 | ||||
Romikgy, ну вот ты ответил:
Ну так вот: M$ к джаве никакого отношения не имеет(ну кроме неудачной попытки сделать свою JVM), и джава под никсами пашет идеально. Тем более в отличии от, она кроссплатформенна. И активно развивается. |
| Автор: Alexeis 12.11.2006, 13:49 | ||
Зато он неплохо знает Delphi - это уж точно! Что С++ единственный высокоуровневый язык? Может у него не было такой необходимости изучать С++. Не надо путать "не сумел изучить" с "не хотел изучать". Причин может быть много разных, из них "не способность" мне кажется самой маловероятной. |
| Автор: esperant0 12.11.2006, 15:07 | ||||
С времен аристотеля. высказыванике каждый х он ф(х) верно если не существует х который не ф(х). Логика сила. Добавлено @ 15:10
Мне не способность кажется не маловероятная, и мои измышления основываются на 5 летнем опыте преподавания на кафедрах: информатики, математики , статистики |
| Автор: nerezus 12.11.2006, 15:26 |
| esperant0, а как согласуются способность изучить ООП и способность изучить асм? Мне кажется, что только как "способность изучить", т.е. просто сила воли. Ибо предметы эти никак не согласуются и не имеют ничего общего. |
| Автор: Romikgy 12.11.2006, 15:30 |
| nerezus, гуд убедил , насчет джавы забираю свои слова! чесно , чет не видно |
| Автор: esperant0 12.11.2006, 15:38 | ||
Как они согласуются тяжело сказать. Связь есть. Но нету связи которая упоминалось: любой кто выучит АСемблер способен выучить С++. Сие как показвает жизнь не правда. Хотя наверное если человек знает ассемблер то вероятность что он знает С++ большее, чем верооятность что человек не знающий асемблер знает С++ |
| Автор: nerezus 12.11.2006, 16:15 | ||||
У нас в группе 20 человек знает С++(десяток его знает довольно хорошо |
| Автор: Dude03 12.11.2006, 16:24 | ||
| По сабжу: "Язык не цель Язык это просто слова, а вот написание программ используя ОПП отличается от процедурного написания.
Опредились с понятиями "кодер" и "программист"! |
| Автор: Alexeis 12.11.2006, 17:04 | ||
Ну и что, как говорит опыт? Выходит, что если взять 10 человек знающих ассемблер и 10 человек не знающих его и обучать одинаково и тех и других, то те кто не знают ассемблера быстрее, легче и лучше изучат С++? По моему это бред. Если и с этим вы не согласны, то доказывать что-то дальше я думаю просто бессмысленно. |
| Автор: Romikgy 12.11.2006, 17:31 | ||
я не джавист, и разницы не увижу, ты популярно скажи , что это и это изменилось, и тогда бум на посмотреть! |
| Автор: BUGOR 12.11.2006, 17:35 | ||
Dude03,
Чего чего? |
| Автор: nerezus 12.11.2006, 17:58 | ||||
|
| Автор: BUGOR 12.11.2006, 18:18 |
| А чем отличаются понятия "кодер" и "программист", только лишь наличием диплома у второго? Так я могу кучу примеров привести, которые опровергают мнение о том, что дипломированный программист будет однозачно лучше подкован в своей области, нежели "кодер". |
| Автор: esperant0 12.11.2006, 18:31 | ||||
Я этим и не спорю, я не согласен с вашей гипотизой, Любой освоивший АСемблер освоит С++. она не верна. |
| Автор: nerezus 12.11.2006, 19:42 | ||
Ну да ладно, тема не про это ) |
| Автор: BUGOR 12.11.2006, 19:46 | ||||
А ещё так пишут в дипломах выпускников соответствующих учебных учереждений, которым до программистов, в твоём понятии, как пешком до Пекина. К тому же, где чётко сформулировано понятие кодер? Я всегда считал кодером - программиста самоучку.
Дейтсвительно, не будем спорить... PS Давно мы с тобой не спорили |
| Автор: nerezus 12.11.2006, 20:17 |
| Ну вот, /me стал себя чувствовать ущербным, т.к. нихрена асма не знает ) Распечатал книгу Крупника, это которая в стиле "Язык ассемблера для детей дошкольного возраста". |
| Автор: Alexeis 12.11.2006, 21:55 |
| esperant0, Ну хоть в чем-то мы сошлись При изучении ассемблера человек знакомится с работой оборудования, с реализацией тех или иных операций при помощи низкоуровневых операторов. Видит в каком виде программа поступает в процессор. Узнает за сколько тактов выполняются операции. Для написании программ на ассемблере нужно правильно и четко организовывать работу, структурировать, делать логические блоки. Это связано с тем, что операция, которая на С++ может быть записана в одну строчку, на ассемблере может занимать десятки строк. При этом необходимо четко понимать, что и как делает каждый участок. Языки высокого уровня позволяют писать небольшие программы ввиде нагромождения операторов и вызовов функций, плохо скомпанованных логически и структурно. Так это и выходит обычно у начинающих программистов. На ассемблере, очевидно, много кода так не напишешь. Аналогичная программа будет в разы больше по объему. Т.е. тут старание, терпение и правильное мышление должно развиваться намного быстрее. Как мне кажется причиной того, что связь не наблюдается никак не может быть неспособность. Т.е. что я хочу сказать. Художника несложно переучить в маляра, а вот маляра в художника намного сложнее. Изучивший С довольно легко справится с Бейсиком, так как тот позволяет те же вещи делать проще, и при этом теряет в функционале, различия, конечно есть, но суть остается. Аналогично С++ имеет меньше функционала по сравнению с Ассемблером и реализация многих вещей проще. Или еще аналогия, покоривший Эверест сумеет покорить и Говерлу. Возможно, он не захочет ее покорять, но потенциально он на это способен. Что из этого вызывает сомнение? |
| Автор: nerezus 12.11.2006, 22:17 | ||
|
| Автор: Dude03 12.11.2006, 22:24 |
| Кожу(именно это слово) примерно полгода. Начинал с Си(с примесью си++, но без ооп). Просто все фенечки ООП в моих программах излишни После изучения ассемблера мой взгляд на работу программы просто изменился=))) Раньше я думал что некий хитрый механизм "убивает" локальные переменные=))) ну и многие другие мелочи мне казались "темным лесом". С изучением ассемблера просто меняется взгляд на вещи(в лучшую сторону меняется |
| Автор: Alexeis 12.11.2006, 22:55 |
Если говорить про функционал, то ООП можно и на ассемблере реализовать. В конце концов, ООП это же не идеи искуственно введенные в язык. ООП это принципы программирования, которые гармонично вписываются в развитие программирования, для возможности грамотного проектирования больших приложений. ООП это больше принципы структурирования нежели набор операторов и синтаксических конструкций. Если в программе на С++ используются объекты, то это еще не значит, что она сделана по принципам ООП. ООП подразумевает особую систему построения приложения и взаимодействия ее структурных элементов. Они излишни до поры до времени, пока объем программы не превысит определенного предела, после которого ее написание станет слишком дорогим из-за неэффективно используемого рабочего времени программиста. |
| Автор: nerezus 12.11.2006, 22:58 | ||
|
| Автор: angus 12.11.2006, 23:05 | ||
ну извини - java + развитие j2ee технологий ето что-то. для java уже стока всякого что неуспеваеш у пощупать. Добавлено @ 23:16
1) времена C++ и Delphi скоро пройдут.C++ будет использоваься разве для апаратно-, ос-зависемых частей. Дельфа - вообще непонятно почему она еще жива. 2)вопрос на счет скорости выполнения - уже прошли ети времена. [P.S.] а ваабще я считаю С++ неким ассемблером ООП языков(канешно я немнго загнал, но смысл понятен). |
| Автор: Romikgy 13.11.2006, 14:20 | ||
будешь долго ждать у мя сложилось впечатление что ув. angus не знает что есть дельфи (его достоинства и недостатки), если я прав, тогда спор бессмысленен! имхо никогда эти времена не пройдут , ибо си и дельфи делают код без прослоек!
а если не извеню я не джавист и для меня это высказывание 0. более конкретнее, плз имхо мнение ошибочно , по крайней мере очень не точно! |
| Автор: Любитель 23.12.2006, 18:29 |
Ерунда полная. ООп-шный ассемблер - это IL и байт-код явы. В плюсах всё же даже ООП несколько своё. |
| Автор: Romikgy 23.12.2006, 18:43 |
| Любитель, |
| Автор: VectorMan 23.12.2006, 19:02 |
| Соглашусь с alexeis1. Нужно понимать ассемблер так так это ключ к пониманию устройства компьютера и принципов его работы з.ы. тему уже можно переименовывать в "Нужен ли каждому программисту Asm?" |
| Автор: nerezus 23.12.2006, 20:54 |
| По теме(среди оффтопа): для себя определился, что мне С++ не нужен: синтаксис знаю, ну и хватит. А вот джаву стал копать. |
| Автор: Любитель 24.12.2006, 10:47 |
| Romikgy, только увидел - сразу встал на защиту |