С/С++ - разные технологии
От: bobos  
Дата: 25.05.06 08:29
Оценка:
Давно интересует вопрос, почему в предложении работы пишут "требуется программист С/С++". Только из-за того, что С++ создан на основе С? Это же совершенно разные подходы к программированию! Гораздо более здраво звучит "требуется программист Java/C++" или "программист С/Pascal/Fortran", а еще лучше "требуется программист ООП(объе-ориент.прогр)" или "требуется процедурный программист".

Какие будут комментарии?
Re: С/С++ - разные технологии
От: AmSpb  
Дата: 25.05.06 08:40
Оценка:
Здравствуйте, bobos, Вы писали:

B>Давно интересует вопрос, почему в предложении работы пишут "требуется программист С/С++". Только из-за того, что С++ создан на основе С? Это же совершенно разные подходы к программированию! Гораздо более здраво звучит "требуется программист Java/C++" или "программист С/Pascal/Fortran", а еще лучше "требуется программист ООП(объе-ориент.прогр)" или "требуется процедурный программист".


B>Какие будут комментарии?


Я вот на работе пишу часть проекта на C++, а другую часть (драйвера) на С. А написано в названии вакансии может быть что угодно.
Re: С/С++ - разные технологии
От: Awaken Украина  
Дата: 25.05.06 09:07
Оценка: -2
Здравствуйте, bobos, Вы писали:

B>Давно интересует вопрос, почему в предложении работы пишут "требуется программист С/С++". Только из-за того, что С++ создан на основе С? Это же


странно знать C++ и не знать C. это же подмножество.
чистый C широко востребован в системном и низкоуровневом программировании
Re: С/С++ - разные технологии
От: LelicDsp Россия  
Дата: 25.05.06 09:13
Оценка:
Кстати,
Многие не задумываются, что ничто не мешает писать на C следуя ООП.
Re[2]: С/С++ - разные технологии
От: AmSpb  
Дата: 25.05.06 09:22
Оценка: 1 (1) +3
LD>Кстати,
LD>Многие не задумываются, что ничто не мешает писать на C следуя ООП.

Многим известно, насколько это гиморно, вот и не задумываются
Re[2]: С/С++ - разные технологии
От: Left2 Украина  
Дата: 25.05.06 09:23
Оценка:
A>странно знать C++ и не знать C. это же подмножество.
Я к примеру знаю С++ на довольно крепком уровне, но абсолютно не знаю С.

A>чистый C широко востребован в системном и низкоуровневом программировании

Разве что для поддержки какого-то старого кода или в embedded programming, если для какой-то железяки C++ компилятор не доступен.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re[2]: С/С++ - разные технологии
От: chum Россия  
Дата: 25.05.06 09:31
Оценка:
Здравствуйте, LelicDsp, Вы писали:

LD>Кстати,

LD>Многие не задумываются, что ничто не мешает писать на C следуя ООП.

Ага, или на ассемблере!
Если есть возможность отдать человеку все, не прося ничего взамен — отдай. Если тебе один раз из десяти долг отдадут — будешь богатым.
Re[3]: С/С++ - разные технологии
От: Demiurg  
Дата: 25.05.06 10:57
Оценка:
Здравствуйте, chum, Вы писали:

LD>>Кстати,

LD>>Многие не задумываются, что ничто не мешает писать на C следуя ООП.

C>Ага, или на ассемблере!


О, на асме писать, следуя ООП, это круто! Видел в одной книжке примеры реализации, попробовал и плюнул — ну его нафиг объекты и vmt вручную создавать Весь труд уходит на реализации ООП, а не на полезный код
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re[2]: С/С++ - разные технологии
От: Андрей Хропов Россия  
Дата: 25.05.06 11:33
Оценка: +1
Здравствуйте, LelicDsp, Вы писали:

LD>Кстати,

LD>Многие не задумываются, что ничто не мешает писать на C следуя ООП.
Ага, и таблицы виртуальных функций в виде структур с указателями на функции.
Такое можно, например, в POV-Ray увидеть.

Только вот не надо это, ИМХО.
Отдайте компилятору то, что он может сделать,
а сами займитесть более высокоуровневыми проблемами.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re[3]: С/С++ - разные технологии
От: Андрей Хропов Россия  
Дата: 25.05.06 11:33
Оценка:
Здравствуйте, Left2, Вы писали:

A>>странно знать C++ и не знать C. это же подмножество.

L>Я к примеру знаю С++ на довольно крепком уровне, но абсолютно не знаю С.
Это невозможно.
С — это подмножество C++ (да, да, я знаю, есть мелкие различия, например из-за того что ввели новые ключевые слова, но по сути так). С99 конечно кое-что новое добавил, но сути не изменил.

Конечно, другое дело, что ты наверное привык мыслить в терминах объектов больше.
Или ты имел ввиду функции стандартной библиотеки C (memcpy,printf там...)?

A>>чистый C широко востребован в системном и низкоуровневом программировании

L>Разве что для поддержки какого-то старого кода или в embedded programming, если для какой-то железяки C++ компилятор не доступен.
Да, иногда вакансии чисто С попадаются, но редко.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re[4]: С/С++ - разные технологии
От: Left2 Украина  
Дата: 25.05.06 11:42
Оценка:
A>>>странно знать C++ и не знать C. это же подмножество.
L>>Я к примеру знаю С++ на довольно крепком уровне, но абсолютно не знаю С.
АХ>Это невозможно.
АХ> С — это подмножество C++ (да, да, я знаю, есть мелкие различия, например из-за того что ввели новые ключевые слова, но по сути так). С99 конечно кое-что новое добавил, но сути не изменил.

Ну хорошо, хорошо. В целом согласен.

АХ>Конечно, другое дело, что ты наверное привык мыслить в терминах объектов больше.

АХ>Или ты имел ввиду функции стандартной библиотеки C (memcpy,printf там...)?

Я привык мыслить в терминах синтаксиса С++, и в терминах стандартной библиотеки С++. Перейти к написанию программ на C для меня ничуть не проще чем перейти к написанию программ на С#. Вот поэтому я и утверждаю что языка С не знаю.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re[3]: С/С++ - разные технологии
От: Ubivetz Украина  
Дата: 25.05.06 17:32
Оценка:
Здравствуйте, Left2, Вы писали:

L>Я к примеру знаю С++ на довольно крепком уровне, но абсолютно не знаю С.

Весьма спорное утверждение.

С/С++/STL/COM/ATL/MFC/MSSQL/Oracle/JAVA/PHP/ASP — вот такие реальные требования к кандидатам можно встретить в объявлениях о работе. Часто пишут их HR, а не TL || PM.
Эх, люблю выпить и переспать с кем нибудь!
Но чаще выходит перепить с кем — нибудь и выспаться...
Re[2]: С/С++ - разные технологии
От: Ubivetz Украина  
Дата: 25.05.06 17:33
Оценка:
Здравствуйте, LelicDsp, Вы писали:

LD>Кстати,

LD>Многие не задумываются, что ничто не мешает писать на C следуя ООП.
Как пример — GTK+
Эх, люблю выпить и переспать с кем нибудь!
Но чаще выходит перепить с кем — нибудь и выспаться...
Re[3]: С/С++ - разные технологии
От: volk  
Дата: 26.05.06 21:16
Оценка: 3 (1) :)
Здравствуйте, Left2, Вы писали:

A>>странно знать C++ и не знать C. это же подмножество.

L>Я к примеру знаю С++ на довольно крепком уровне, но абсолютно не знаю С.

A>>чистый C широко востребован в системном и низкоуровневом программировании

L>Разве что для поддержки какого-то старого кода или в embedded programming, если для какой-то железяки C++ компилятор не доступен.

Ага. Вот поэтому микрософты свой (встроенный в платформу x86) Word и написали на С. В самом деле, откуда для этой железяки C++?
Тот, кто желает, но не делает, распространяет чуму.
Re[3]: С/С++ - разные технологии
От: Awaken Украина  
Дата: 26.05.06 21:46
Оценка:
L>Разве что для поддержки какого-то старого кода или в embedded programming, если для какой-то железяки >C++ компилятор не доступен.

большая часть кода в ОС Windows и Unix это как — старый код?
Re[2]: С/С++ - разные технологии
От: Awaken Украина  
Дата: 26.05.06 21:57
Оценка: 1 (1)
LD>Многие не задумываются, что ничто не мешает писать на C следуя ООП.

можно, и пишут.
1.группируем функции работающие с одной структурой данных в одном исходнике, чем не инкапсуляция.
2.наследование- можно заменить агрегацией и делегацией.
3.полиморфизм — можно реализовать через таблицы диспетчиризации
Re[3]: С/С++ - разные технологии
От: Demiurg  
Дата: 26.05.06 22:39
Оценка:
Здравствуйте, Awaken, Вы писали:

A>можно, и пишут.

A>1.группируем функции работающие с одной структурой данных в одном исходнике, чем не инкапсуляция.
A>2.наследование- можно заменить агрегацией и делегацией.
A>3.полиморфизм — можно реализовать через таблицы диспетчиризации

Так и писали. Структурный подход это, хоть и дает видимость ООП.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re[4]: С/С++ - разные технологии
От: Андрей Хропов Россия  
Дата: 27.05.06 10:13
Оценка: +2
Здравствуйте, Awaken, Вы писали:

L>>Разве что для поддержки какого-то старого кода или в embedded programming, если для какой-то железяки >C++ компилятор не доступен.


A>большая часть кода в ОС Windows и Unix это как — старый код?

да
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re[4]: С/С++ - разные технологии
От: Андрей Хропов Россия  
Дата: 27.05.06 10:13
Оценка:
Здравствуйте, Demiurg, Вы писали:

D> О, на асме писать, следуя ООП, это круто! Видел в одной книжке примеры реализации, попробовал и плюнул — ну его нафиг объекты и vmt вручную создавать Весь труд уходит на реализации ООП, а не на полезный код

для понимания того, что "под капотом" у С+#/Java (c) Jazy Cjow Rhrr полезно.
В реальной жизни применять конечно не стоит.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re[4]: Object-based approach in С
От: Valery A. Boronin Россия linkedin.com/in/boronin
Дата: 28.05.06 01:55
Оценка: 16 (3)
Здравствуйте, Demiurg, Вы писали:

D> Так и писали. Структурный подход это, хоть и дает видимость ООП.

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

A>можно, и пишут.

+1
раскрою немного тему в дополнение.

ядро НТ написано на С следуя ОО подходу, факт

вот цитата из источника навскидку нагугленного Концепции Windows NT:

Хотя NT и не является полностью объектно-ориентированной, в ее основе лежат объекты. Единообразная форма именования, совместного использования и учета системных ресурсов, простой и дешевый способ обеспечения безопасности системы и ее модификации — все эти преимущества могут быть достигнуты при использовании объектной модели.
...
Несмотря на всестороннее использование объектов для представления разделяемых ресурсов, Windows NT не является объектно-ориентированной системой в строгом смысле. Большая часть кода операционной системы написана на С с целью обеспечения переносимости. Несмотря на то, что С не поддерживает непосредственно объектно-ориентированные конструкции, такие как динамическое связывание типов данных, полиморфные функции или наследование классов, эти инструментальные средства были использованы из-за их широкой распространенности.


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

не совсем то, source units не совсем корреллируют с инкапсуляцией, хотя в качестве доп меры может быть полезно при небольших объемах кода

группировать же можно и по другим критериям, например ф-ии в ядре Windows типа IoCreateDevice названы не просто так, а по определенным правилам: Kernel-Mode Driver Architecture: Windows Driver Kit Object-Based

PrefixOperationObject, where

Prefix
Identifies the kernel-mode component that exports the support routine and, usually, the component that defined the object type. Most prefixes have two letters.

Operation
Describes what is done to the object.

Object
Identifies the type of object.


что кстати изменилось в KMDF/WDF в связи с полным переходом на event-driven model

Methods, Properties, and Events
Methods are functions that perform an action on an object, such as creating or deleting the object. KMDF methods are named according to the following pattern:
WdfObjectOperation

Object specifies the KMDF object on which the method operates, and Operation indicates what the method does. For example, the WdfDeviceCreate method creates a framework device object.
Properties are functions that read and write data fields in an object, thus defining object behavior and defaults. Properties are named according to the following pattern:
WdfObject{Set|Get}Data
WdfObject{Assign|Retrieve}Data


Object specifies the KMDF object on which the function operates, and Data specifies the field that the function reads or writes. Some properties can be read and written without failure, but others can sometimes fail. Functions with Set and Get in their names read and write fields without failure. The Set functions return VOID, and the Get functions typically return the value of the field. Functions with Assign and Retrieve in their names read and write fields but can fail. These functions return an NTSTATUS value.


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

Достаточно легко перевести программу на С++ с классами и наследованием в такую объектную модель, если хорошо понимать как и что + заранее установить такие правила — руку быстро можно набить, имея хороший пример перед глазами (вроде исходников ядра Windows).

A>2.наследование- можно заменить агрегацией и делегацией.

A>3.полиморфизм — можно реализовать через таблицы диспетчиризации
технически заменить можно многими способами, конечно

кроме предложенных, последние 2 пункта наглядно продемонстрированы на примере class-specific driver model (class/port/miniport) в Классификация WDM драйверов
Автор: Valerio
Дата: 07.01.05


резюмируя, структурным программированием я бы это все не назвал.
... << RSDN@Home 1.2.0 alpha rev. 648>>
Valery A. Boronin, RSDN Team, linkedin.com\in\boronin
R&D Mgmt & Security. AppSec & SDL. Data Protection and Systems Programming. FDE, DLP, Incident Management. Windows Filesystems and Drivers.
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.