Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Собираюсь учиться программированию на С++,с чего следует начинать?

31K
18 мая 2008 года
rudvil
23 / / 18.05.2008
В программирование на С++ я ноль,только пхп чуток знаю.
Интерестно узнать у опытных людей с чего лучше начинать,какие книжки лучше прочитать и есть ли вообще смысл учиться по книжкам? может лучше пойти на курсы С++ ?
63
18 мая 2008 года
Zorkus
2.6K / / 04.11.2006
Цитата: rudvil
В программирование на С++ я ноль,только пхп чуток знаю.
Интересно узнать у опытных людей с чего лучше начинать,какие книжки лучше прочитать и есть ли вообще смысл учиться по книжкам? может лучше пойти на курсы С++ ?


Имхо -
Не лучше, по крайней мере поначалу.
Подавляющее большинство курсов по программированию (особенно в провинции) придумано хитрыми уродами для выбивания денег из желающих учиться.
Да, согласен, некоторые знания они дают. Но гораздо более глубокие знания можно почерпнуть из хороших книг, которые стоят гораздо меньшие деньги. Кроме того, я считаю, что преподаватели курсов сами обычно не слишком сильные и современно-развитые практики программирования.
Исключения есть. Но не уверен что тебе повезет на них попасть, я бы на такое не рассчитывал.
Большой вред этих курсов часто в том, что они прививают начинающему совершенно дурацкую и необоснованную уверенность в том, что
он хорошо знают какой-то язык или технологию (не понимая, что за 3 месяца или около того широко, а тем более глубоко изучить ничего нельзя, вдобавок знания, почерпнутые на курсах в быстром темпе так же и забываются), и потом он может стать воинствующим чайником, из
которого такую уверенность выбить бывает трудно.
Мой совет - это изучать по книгам, статьям и форумам в интернете.
Писать свои программы, продвигать их на конференции в вузе и .т.п.
И только когда выйдешь на некоторый более-менее серьезный уровень, уже идти устраиваться на работу в какую-то приличную компанию, чтобы на этой работе уже как минимум уметь видеть и понимать слабые и сильные стороны коллег и руководителей.
А дальше - в хорошей компании часто есть собственные курсы повышения квалификации сотрудников (+ помощь в сертификациях и т.п.). Вот на них уже ходить и надо :).

P.S. Все - мои личные ощущения из опыта.

31K
18 мая 2008 года
rudvil
23 / / 18.05.2008
Благодарю за совет, теперь постараюсь осмыслить.

P.S. насчет
Цитата:
Великий идет впереди своего времени, умный идет рядом с ним, хитрый старается использовать его, глупый становится ему поперек дороги.

взято из индии,китая?

63
18 мая 2008 года
Zorkus
2.6K / / 04.11.2006
Взято с http://ru.wikiquote.org/wiki/%D0%9B%D0%B0%D0%BC%D0%B5%D1%80%D0%B8%D0%B7%D0%BC
Многие цитаты там мне понравились.
27K
06 июня 2008 года
David_K800i
36 / / 27.05.2008
Цитата: Zorkus
Имхо -
Не лучше, по крайней мере поначалу.
Подавляющее большинство курсов по программированию (особенно в провинции) придумано хитрыми уродами для выбивания денег из желающих учиться.
Да, согласен, некоторые знания они дают. Но гораздо более глубокие знания можно почерпнуть из хороших книг, которые стоят гораздо меньшие деньги. Кроме того, я считаю, что преподаватели курсов сами обычно не слишком сильные и современно-развитые практики программирования.
Исключения есть. Но не уверен что тебе повезет на них попасть, я бы на такое не рассчитывал.
Большой вред этих курсов часто в том, что они прививают начинающему совершенно дурацкую и необоснованную уверенность в том, что
он хорошо знают какой-то язык или технологию (не понимая, что за 3 месяца или около того широко, а тем более глубоко изучить ничего нельзя, вдобавок знания, почерпнутые на курсах в быстром темпе так же и забываются), и потом он может стать воинствующим чайником, из
которого такую уверенность выбить бывает трудно.
Мой совет - это изучать по книгам, статьям и форумам в интернете.
Писать свои программы, продвигать их на конференции в вузе и .т.п.
И только когда выйдешь на некоторый более-менее серьезный уровень, уже идти устраиваться на работу в какую-то приличную компанию, чтобы на этой работе уже как минимум уметь видеть и понимать слабые и сильные стороны коллег и руководителей.
А дальше - в хорошей компании часто есть собственные курсы повышения квалификации сотрудников (+ помощь в сертификациях и т.п.). Вот на них уже ходить и надо :).

P.S. Все - мои личные ощущения из опыта.




про провинции согласен фигня полная
но есть же курсы Microsoft IT Academy где деньги зря не выбивают
советую автору не жалеть денег и записаться
когда я проходил их все было нормально
1 пара лекции потом 2 пары практики
при чем все идет не по книжкам а на уровне общения со студентами
ну и книжки тоже хороши - берн страуструп FOREVER
архангельский
но лучше всего найди с
он не сильно отличается от пхп только типы есть
освой цмд и рви всех

11
06 июня 2008 года
oxotnik333
2.9K / / 03.08.2007
Цитата: David_K800i
но есть же курсы Microsoft IT Academy где деньги зря не выбивают
советую автору не жалеть денег и записаться
когда я проходил их все было нормально



не заметно, по вопросам, оставляемым на форуме

27K
06 июня 2008 года
David_K800i
36 / / 27.05.2008
Цитата: oxotnik333
не заметно, по вопросам, оставляемым на форуме



интересно кто так считает и почему

255
06 июня 2008 года
Dart Bobr
1.4K / / 09.04.2004
Кто так считает - спроси у каждого. Я согласен с oxotnik333 исходя из глубины осмысленности ваших вопросов и по кидаемым понтам.
Пример, как минимум эта тема: http://forum.codenet.ru/showthread.php?t=48228
В теме вопроса вы не разбираетесь, но других участников форума оскорбляете.
Как собственно и в этой теме: http://forum.codenet.ru/showthread.php?t=48371
Из-за фраз:
Цитата:

материть может только тот кто умнее


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

4.3K
07 июня 2008 года
flat
142 / / 27.12.2005
Цитата:
воинствующим чайником


Вот вам, пожалуйста, яркий пример. :)

13K
08 июня 2008 года
specter
113 / / 28.09.2007
rudvil, хочу сказать из своего опыта - не учи сразу С++, начни с С. Если потратишь хотябы пол года на С, то получишь хорошее представление о процедурном программировании, оптимизации и работе с памятью (что часто оооочень важно). А дальше уже С++ пойдет как по маслу ;)
5
08 июня 2008 года
hardcase
4.5K / / 09.08.2005
Цитата: specter
rudvil, хочу сказать из своего опыта - не учи сразу С++

Вот это правильно.
Лучше изучать чегонить подружественней к новичку - Delphi, Java,
но стопудово не С или C++.
Вообще, если топикстартер пробовал себя в PHP, логично было бы развить тему веба дальше, исследуя возможности Ruby.

87
08 июня 2008 года
Kogrom
2.7K / / 02.02.2008
Что-то я не уловил логику: зачем изучать другие языки, если хочешь изучить c++? Изучите другой язык и будете пытаться используя те же методы программировать в c++...

Зачем изучать c до c++? Чтобы изучить не нужные в c++ макросы, чтобы привыкнуть к неудобным строкам, чтобы ставить где не надо указатели? Зачем нужны эти знания? Нет уж, c++ тут дружественнее к новичку.

Зачем учить Delphi до c++ ? чтоб потом путаться гда ставить =, где ==, а где := ? Чтобы забывать после if ставить скобочки? Классы, на мой взляд, проще изучить в c++. Возможно, в Delphi меньше используются указатели, но их можно не использовать и в c++ при первом знакомстве.
502
08 июня 2008 года
Jail
550 / / 30.01.2007
[QUOTE=Kogrom]Что-то я не уловил логику: зачем изучать другие языки, если хочешь изучить c++? Изучите другой язык и будете пытаться используя те же методы программировать в c++...[/QUOTE]
Хотя бы ради того, что не везде одним С++ сыт будешь. С++ не панацея от всех проблем, а лишь один из распространенных ООП языков программирования. Плюс, изучение иных языков, никоим образом не помешает, а даже наоборот. Да будет Вам известно, что множество библиотек написано например на "чистом" Си. Это ли не повод, хотя бы, к ознакомлению с ним?
[QUOTE=Kogrom]Зачем изучать c до c++? Чтобы изучить не нужные в c++ макросы, чтобы привыкнуть к неудобным строкам, чтобы ставить где не надо указатели? Зачем нужны эти знания? Нет уж, c++ тут дружественнее к новичку.[/QUOTE]
Позвольте спросить...а что в С++ отменили "ненужные" макросы, "неудобные" строки и указатели??? Смею заметить, что С++ является расширением языка Си, а так же, повторюсь, являет собой ООП язык программирования. Он создавался не для того что бы избавиться от Си, а для того что бы лаконично сочитаться с ним и дополнять его!
[QUOTE=Kogrom]Зачем учить Delphi до c++ ? чтоб потом путаться гда ставить =, где ==, а где := ? Чтобы забывать после if ставить скобочки? Классы, на мой взляд, проще изучить в c++. Возможно, в Delphi меньше используются указатели, но их можно не использовать и в c++ при первом знакомстве.[/QUOTE]
Если человек путается в таких вещах, то..... можно ограничиться изучением одного единственного языка программирования...или вообще тогда ничего не учить и не тратить на это время и усилия.
Сейчас, одни единственный язык программирования, не решит всех поставленных задач, темболее, если Вы заняты над серьезным проектом.
87
08 июня 2008 года
Kogrom
2.7K / / 02.02.2008
Цитата: Jail
Хотя бы ради того, что не везде одним С++ сыт будешь. С++ не панацея от всех проблем, а лишь один из распространенных ООП языков программирования. Плюс, изучение иных языков, никоим образом не помешает, а даже наоборот. Да будет Вам известно, что множество библиотек написано например на "чистом" Си. Это ли не повод, хотя бы, к ознакомлению с ним? .


Согласен, что изучение разных языков может пригодиться, но если хочется (требуется) изучать c++, зачем начинать с си? Можно его изучить потом.

Цитата: Jail
Позвольте спросить...а что в С++ отменили "ненужные" макросы, "неудобные" строки и указатели??? Смею заметить, что С++ является расширением языка Си, а так же, повторюсь, являет собой ООП язык программирования. Он создавался не для того что бы избавиться от Си, а для того что бы лаконично сочитаться с ним и дополнять его!.


Не отменили, но использование большинства макросов (например #define) в c++ не требуется и может даже быть вредным. си-строки тоже не отменили, но в си++ есть намного более удобные std::string и изучение лучше начать с них. Указатели тоже есть, но в c++ есть много случаев, когда лучше их не использовать, в то время как человек, изучивший прежде си по привычке будет их применять.

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

Цитата: Jail
Если человек путается в таких вещах, то..... можно ограничиться изучением одного единственного языка программирования...или вообще тогда ничего не учить и не тратить на это время и усилия.
Сейчас, одни единственный язык программирования, не решит всех поставленных задач, темболее, если Вы заняты над серьезным проектом.



Опять же не спорю. Изучайте хоть 200 языков. Но делать это надо по потребности или из интереса. А если мы собрались изучать си++, зачем нам перед этим учить Дельфи?

63
08 июня 2008 года
Zorkus
2.6K / / 04.11.2006
Цитата: Jail
Хотя бы ради того, что не везде одним С++ сыт будешь. С++ не панацея от всех проблем, а лишь один из распространенных ООП языков программирования. Плюс, изучение иных языков, никоим образом не помешает, а даже наоборот. Да будет Вам известно, что множество библиотек написано например на "чистом" Си. Это ли не повод, хотя бы, к ознакомлению с ним?


Одним С++ сыт не будешь, огромное количество задач гораздо лучше решать на других языках (например, на Лиспе). Но их будут решать другие люди. Профессионалы в своей, также узкой, области.
В разумной степени узкой, конечно же.
Главным образом, С нужно сейчас для программирования под *nix.

Цитата:

Позвольте спросить...а что в С++ отменили "ненужные" макросы, "неудобные" строки и указатели??? Смею заметить, что С++ является расширением языка Си, а так же, повторюсь, являет собой ООП язык программирования. Он создавался не для того что бы избавиться от Си, а для того что бы лаконично сочитаться с ним и дополнять его!


Ну так использование C-style в программировании на С++
давно признано очень существенной проблемой для людей, переходящих с С на С++.

Цитата:

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


Знать несколько языком программирования полезно в том плане, что
их можно сравнивать, и мыслить более широко, видеть плюсы и минусы каждого языка.
Но, в серьезном проекте, имхо, рулит узкая, (умеренно узкая, а не "специалист по правой ноздре") специализация. Например - я ни разу в жизни не встречал человека, который бы был гуру по C++ и Java, нигде - ни здесь, ни на одном форуме, ни в университете (хотя это конечно, не показатель), ни на работе. И не думаю, что встречу когда-нибудь. (Скажу даже более конкретно - я ни разу не встречал гуру по ВСЕЙ ВООБЩЕ платформе Java, а только по отдельным частям (J2ME, J2EE и т.п.).) Можно знать много языков, можно быть спецом в одном и нормально знать несколько дополнительно. Но имхо, быть гуру в нескольких языках программирования сразу - невозможно.
Я не согласен так же с теми, кто считает, что начинать нужно с более дружественных Java или Delphi.
Во-первых, не определено понятие "дружественный".
Во-вторых, у этих языков разное предназначение и разная философия.
Они мало связаны (кроме синтаксиса, но синтаксис далеко не самая главная часть языка).

13K
08 июня 2008 года
specter
113 / / 28.09.2007
Цитата: Zorkus

Ну так использование C-style в программировании на С++
давно признано очень существенной проблемой для людей, переходящих с С на С++.


Если ты годами писал на С, а потом решил попробовать С++, то возможно, да и то спорно. Реально встречается только одна проблема - приведение типов в С++ используя C-style.

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

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

87
08 июня 2008 года
Kogrom
2.7K / / 02.02.2008
Цитата: specter
Те, кто начинал с С++ потом тратили много времени на изучение С, дабы уметь писать эффективный код.


Где Green ходит? Тут такое говорят, а он молчит :)

Цитата: specter
К тому же стандартные библиотеки С++ часто не дают нужного эффекта и приходит некоторые вещи реализовывать вручную, а человек который знает только С++ многого просто не сможет сделать, потому как это является нормальным для С, а в С++ не распространено (управление памятью к примеру).


Я еще начинающий программист, может чего-то не понимаю. Вы говорите про динамическое выделение памяти? А чем тогда операторы new и delete вас не устраивают? Не хотите же вы сказать, что malloc и free эффективнее. Тем более, что при использовании контейнеров STL даже эти операторы редко бывают нужны.

11
08 июня 2008 года
oxotnik333
2.9K / / 03.08.2007
Цитата: specter
rudvil, хочу сказать из своего опыта - не учи сразу С++, начни с С. Если потратишь хотябы пол года на С, то получишь хорошее представление о процедурном программировании, оптимизации и работе с памятью (что часто оооочень важно). А дальше уже С++ пойдет как по маслу ;)


Назовите хотя бы одну ситуацию, когда структурные языки превосходят ООЯ или какую задачу нельзя решить при помощи ООЯ?
ЗЫ: не далее как 2 дня назад завершил проект на ООЯ который делали на фортране 8!!! чел 5!!! лет, у меня ушло на это 1.5 месяца.
ЗЫЗЫ: Почти все современные ООЯ берут свою концепцию (а часто и синтаксис) от С++

13K
08 июня 2008 года
specter
113 / / 28.09.2007
Цитата: Kogrom
Я еще начинающий программист, может чего-то не понимаю. Вы говорите про динамическое выделение памяти? А чем тогда операторы new и delete вас не устраивают? Не хотите же вы сказать, что malloc и free эффективнее. Тем более, что при использовании контейнеров STL даже эти операторы редко бывают нужны.


Я говорю не об операторах, а о различных манипуляциях с памятью вручную. Ты часто используешь reinterpret_cast в С++? В С аналогичное приведение (и куча разных иных манипуляций) это норма.

Реально С менее строгий чем С++, и поэтому можно наделать по неопытности кучу ошибок, но зато потом будет легче ;)

63
08 июня 2008 года
Zorkus
2.6K / / 04.11.2006
Цитата: specter
Если ты годами писал на С, а потом решил попробовать С++, то возможно, да и то спорно. Реально встречается только одна проблема - приведение типов в С++ используя C-style.


А использование по привычке средств С, там где С++ предоставляет больше возможностей?
[quote=specter]
Если у человека есть голова на плечах и он знает С, то используя С++ он должен понимать что в этом языке лучше, а что хуже и выбирать оптимальные методы. За время своей работы я не встретил ни одного хорошего С++ программиста, который не знал бы С. Те, кто начинал с С++ потом тратили много времени на изучение С, дабы уметь писать эффективный код.
[/quote]
Поясни, что ты понимаешь под эффективным кодом. Скорость выполнения?
[quote=specter]
Я говорю не об операторах, а о различных манипуляциях с памятью вручную. Ты часто используешь reinterpret_cast в С++? В С аналогичное приведение (и куча разных иных манипуляций) это норма.
[/quote]
Ты считаешь это преимуществом? Объективным, при практическом программировании?
[quote=specter]
Реально С менее строгий чем С++, и поэтому можно наделать по неопытности кучу ошибок, но зато потом будет легче
[/quote]
Чем?

87
08 июня 2008 года
Kogrom
2.7K / / 02.02.2008
Цитата: specter
Я говорю не об операторах, а о различных манипуляциях с памятью вручную. Ты часто используешь reinterpret_cast в С++? В С аналогичное приведение (и куча разных иных манипуляций) это норма.

Реально С менее строгий чем С++, и поэтому можно наделать по неопытности кучу ошибок, но зато потом будет легче ;)



В приведенной цитате я вообще ничего не понял. Зачем тут оператор преобразования типов reinterpret_cast?

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

А если исходить из того, что надо начинать с менее удобного и ошибкоемкого при создания больших программ языка, то почему бы не начать с ассемблера? После него будет совсем легко :)

502
08 июня 2008 года
Jail
550 / / 30.01.2007
Ну понеслась....развели демогогию блин...
[QUOTE=Zorkus](Скажу даже более конкретно - я ни разу не встречал гуру по ВСЕЙ ВООБЩЕ платформе Java, а только по отдельным частям (J2ME, J2EE и т.п.).[/QUOTE]
Отвечу только на твою цитату Zorkus. Соглашусь с тобою, не каждый программист на Java становиться в последствии Java Arhitect Developer'ом. Думаю ты знаешь какими знаниями необходимо обладать для подобного "зачета" на сертификации. Скажу больше, мне доводилось встречать подобных, можно сказать, единичных людей. Да и С++ они тоже неплохо знают + являются кодерами под замечательную ОСьку, Solaris называется :)
Удачи всем и не подеритесь только. Спор до добра не доводит!
63
08 июня 2008 года
Zorkus
2.6K / / 04.11.2006
Цитата: Jail
Соглашусь с тобою, не каждый программист на Java становиться в последствии Java Arhitect Developer'ом.


Имеешь в виду SCEA?

Цитата:

Думаю ты знаешь какими знаниями необходимо обладать для подобного "зачета" на сертификации. Скажу больше, мне доводилось встречать подобных, можно сказать, единичных людей. Да и С++ они тоже неплохо знают + являются кодерами под замечательную ОСьку, Solaris называется :)


Завидую по хорошему :)
Дай угадаю - случайно, не из Sun ребята?

5
08 июня 2008 года
hardcase
4.5K / / 09.08.2005
Цитата: specter
Я говорю не об операторах, а о различных манипуляциях с памятью вручную.

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

Цитата: specter
Ты часто используешь reinterpret_cast в С++? В С аналогичное приведение (и куча разных иных манипуляций) это норма.

Типы данных тоже видимо придумали для детей, которые не могут отличить void* от void*?
Если в программе приходится часто использовать reinterpret_cast или его аналоги, значит с архитектурой приложения полная задница. Вам так не кажется?

11
08 июня 2008 года
oxotnik333
2.9K / / 03.08.2007
Цитата: hardcase
не могут отличить void* от void*?



ээээ... простите?

13K
09 июня 2008 года
specter
113 / / 28.09.2007
Цитата: Zorkus
А использование по привычке средств С, там где
Поясни, что ты понимаешь под эффективным кодом. Скорость выполнения?


Скорость и минимальное использование памяти.

Цитата: Kogrom
Ну хорошо. Допустим, для какой-то задачи си лучше, чем си++, но из этого не следует в какой очередности надо изучать эти языки.

А если исходить из того, что надо начинать с менее удобного и ошибкоемкого при создания больших программ языка, то почему бы не начать с ассемблера? После него будет совсем легко :)


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

Цитата: hardcase
Гммм.. а вы правда считаете что манипуляция памятью вручную это офигенный плюс?
Если так, то мне вас жаль.


В С++ исключительно редко, в С - часто. Суть в том, что используя С человек получит практическое представление о работе с памятью. На С++ лично мне приходилось писать хитрый memory poll для экономии долей секунд в скорости выполнения, и я уверен, что не работая до этого с С я не смог бы быстро и эффективно выполнить эту задачу.



Все противники С, скажите - это нормально, когда человек приходит на собеседование и не может написать элементарнейший алгоритм переворота односвязного списка, потому что он толком и не знает как вручную пользоваться списками, ведь все время он использовал std::list и больше ничего не знает. Примерно такой специалист и получится из автора, если он сразу полезет в ООП и STL.

245
09 июня 2008 года
~ArchimeD~
1.4K / / 24.07.2006
Цитата: specter
Скорость и минимальное использование памяти.



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

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

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

63
09 июня 2008 года
Zorkus
2.6K / / 04.11.2006
Цитата: specter
Скорость и минимальное использование памяти.


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

Цитата:
Все противники С, скажите - это нормально, когда человек приходит на собеседование и не может написать элементарнейший алгоритм переворота односвязного списка, потому что он толком и не знает как вручную пользоваться списками, ведь все время он использовал std::list и больше ничего не знает. Примерно такой специалист и получится из автора, если он сразу полезет в ООП и STL.


Ну ведь можно заглянуть в исходники std:list. И почерпуть прекрасный
пример реализации списка. Было бы желание. Незнание кандидатом алгоритма - это не из-за того, что он не работал с языками более низкого уровня. Это ненормально - но это не связано с незнанием С.

11
09 июня 2008 года
oxotnik333
2.9K / / 03.08.2007
Цитата: specter

Все противники С, скажите - это нормально, когда человек приходит на собеседование и не может написать элементарнейший алгоритм переворота односвязного списка, потому что он толком и не знает как вручную пользоваться списками, ведь все время он использовал std::list и больше ничего не знает. Примерно такой специалист и получится из автора, если он сразу полезет в ООП и STL.



А Вы знаете как бегают токи в компе при умножении сложении и делении? какие двоичные команды куда подаются?
А вот если знать все это, то можно дюже эффективные программы писать.
Однако языки высокого уровня отличает абстагированность от реализации низкого уровня.
Я не знаю как устроен std::list и мне это не надо, мне достаточно того что я могу в хелпе прочитать как им пользоваться а все его внутренности пусть делает автор STL.

5
09 июня 2008 года
hardcase
4.5K / / 09.08.2005
Цитата: specter
Все противники С, скажите - это нормально, когда человек приходит на собеседование и не может написать элементарнейший алгоритм переворота односвязного списка, потому что он толком и не знает как вручную пользоваться списками

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

255
09 июня 2008 года
Dart Bobr
1.4K / / 09.04.2004
specter
Тоже вставлю свои 5 копеек.
А если человек пишет программы под win32 он должен заниматься рисованием окон и кнопочек вручную?
По вашей логике - программист должен обладать некоторым набором умений, но это далеко не главное. Главное для программиста - способность широко и гибко мыслить. Методики программирования через 10 лет будут сильно отличатся от сегодняшних, так зачем человеку нагружать ими свой мозг? Он должен уметь изобретать свой велосипед, то-есть мыслить креативно с новаторским подходом, а не зацикливаться на знании\не знании чего-либо.
То-что кандидат не может развернуть список - показывает его как человека, не способного творчески мыслить, и решать задачи, с которыми он не сталкивался раньше, а не говорит о качестве его знания языка С. Более-менее адекватный подход для найма сотружников, описывается в той же книге "Как сдвинуть гору Фудзи".
3
09 июня 2008 года
Green
4.8K / / 20.01.2000
Цитата: specter
За время своей работы я не встретил ни одного хорошего С++ программиста, который не знал бы С. Те, кто начинал с С++ потом тратили много времени на изучение С, дабы уметь писать эффективный код.


Цитата: Kogrom
Где Green ходит? Тут такое говорят, а он молчит :)


Нервно курю...
Боже, всё это время я писал не эффективный код!
Никому не говорите: я не знаю C.

Цитата: specter

[QUOTE=Zorkus]
А использование по привычке средств С, там где
Поясни, что ты понимаешь под эффективным кодом. Скорость выполнения?


Скорость и минимальное использование памяти.
[/QUOTE]
Типичное заблуждение.
Во-первых, эффективность - это не всегда скорость и размер, а, например, универсальность, функциональность, удобство использования. К примеру, STL basic_string значительнее эффективнее с этих позиций, чем CRT strxxx.

Во-вторых, "скорость и минимальное использование памяти" в первую очередь достигается за счет "правильной" архитектуры и применения "правильных" алгоритмов, а не за счет реализации. Как пример, тот же твой список можно отсортировать за n^2, а можно за n*log(n).
С другой стороны более высокоуровневые языки дают существенный выигрыш в скорости разработки, а это значит, что я быстрее могу получить результат, проанализировать его и внести изменения в "бутылочные горлышки".
Эффективный код невозможно получить сразу, это процесс итерационный (и не скончаемый). А за одно и то же время при использовании ЯВУ я получаю больше итераций разработки, а сл-но - и более эффективный код.

13K
09 июня 2008 года
specter
113 / / 28.09.2007
Дискуссия уже перешла в теоретическое поле. Автор наверное вообще уже об этой теме забыл, а если и не забыл, то врядли что-то понимает :)

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

И раз подняли тему алгоритмов - автор, начни лучше с них, очень полезная штука на практике ;)
502
09 июня 2008 года
Jail
550 / / 30.01.2007
[QUOTE=Zorkus]Имеешь в виду SCEA?[/QUOTE]
Угу, Sun Certified Enterprise Architect, я именно это и имел ввиду. Это наивысшая точка....хотя пределу нет границ, да и не обязательно SCEA, помоему такие компании как Oracle тоже сертифицируют.... не помню. :)
[QUOTE=Zorkus] Дай угадаю - случайно, не из Sun ребята?[/QUOTE]
Ребятам из Sun Microsystems не нужны сертификаты, они уже там работают и уже их наполучали до работы в Sun :)
Нет, другие ребята. Есть же проект OpenSolaris, не в курсе разве?
Кстате...в последнее время участились сертификации Индийских и Китайских парней... Недавно паренек из Индии получил награду Code for Freedom Winner, как участник проекта Campus Ambassador ...вот так вота вота.
87
09 июня 2008 года
Kogrom
2.7K / / 02.02.2008
Цитата: specter
Я думаю стоит закончить этот спор - никто никого не сможет переубедить.


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

Хотел посоветовать какую-нибудь книгу и понял, что сделать мне это пока трудно. Вроде бы надо "Язык программирования c++" Страуструпа посоветовать, но помню, что когда я начал изучать c++ мне она показалась непонятной, не рассчитаной на новичка.

63
09 июня 2008 года
Zorkus
2.6K / / 04.11.2006
Цитата: Jail
Угу, Sun Certified Enterprise Architect, я именно это и имел ввиду. Это наивысшая точка....хотя пределу нет границ, да и не обязательно SCEA, помоему такие компании как Oracle тоже сертифицируют.... не помню. :)


Да мне бы SCBCD сдать :) До SCEA мне...

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог