the unreasonable effectiveness of C

Всичко за програмирането на игри - архитектура, графика, звук, изкуствен интелект, мрежи.
Потребителски аватар
Kerberos
Power User
Power User
Мнения: 234
Регистриран: 24 фев 2005 16:08
Местоположение: София
Контакти:

Re: the unreasonable effectiveness of C

Мнение от Kerberos » 26 яну 2013 20:02

Един задълбочен анализ на Microsoft относно драйверите и C++:
http://msdn.microsoft.com/en-us/windows ... e/gg487420

и няколко мнения на Linux програмисти:
http://www.tux.org/lkml/#s15-3

Останах с впечатлението, че основния проблем е че C++ просто не е бил достатъчно добър навремето. Сега пренаписването на цялото нещо би отнело години.

Потребителски аватар
Kerberos
Power User
Power User
Мнения: 234
Регистриран: 24 фев 2005 16:08
Местоположение: София
Контакти:

Re: the unreasonable effectiveness of C

Мнение от Kerberos » 26 яну 2013 21:13

От друга страна може би всичко е в дизайна на нещата и сигурно е доста трудно да се скача от едно на друго. Примерно BeOS (и наследника му Haiku) са изцяло написани на C++ и предоставят обектно ориентирано API. Аз лично никога не бих се върнал в C++ (това не означава, че някой друг не би ме върнал ;) ). По стечение на обстоятелствата ми се налага да пиша модули на C, които се викат от скриптов език. Та билдвам си една обикновена DLL-ка и си викам функциите от нея, подавайки и получавайки обикновени C типове (включително и структури) - чисто, просто и бързо. Пък в скриптовия език си слагай колкото искаш ООП логика. Е това на C++ не може да стане без да оклепеш всичко - целия набор от класове, меотди и прочие трябва да го опишеш и в скриптовия език (туулове за подобни неща колкото искаш, повечето несъвместими я с компилатор, я с нещо друго). И не можеш просто да заредиш DLL-ката и да си викаш ей така на воля - то полиморфизъм, то версии на компилатора, едни хеширани имена на функциите и правиш едни extern C за да се се докопаш до ресурси ... Прекарал съм достатъчно часове в подобна мъка. Времето за компилиране на подобни неща също е съществено.

gemicha
Site Admin
Site Admin
Мнения: 2930
Регистриран: 20 ное 2003 22:20
Местоположение: USA

Re: the unreasonable effectiveness of C

Мнение от gemicha » 27 яну 2013 00:44

Stilgar написа:
gemicha написа:Няма лоши езици, има лошо подготвени програмисти.
Това често срещано изказване е голяма глупост. Ако е вярно означава, че всички езици са еднакво добри от което следва, че да правиш дизайн на език е нещо много лесно и изобщо няма какво да го мислиш щото няма какво да сбъркаш.
Във всяко изказване, което се реща често трябва да има някаква истина. Няма какво да мислиш и няма какво да сбъркаш ако езика ти е абстракция на асемблер. Дали NASM или MASM или TASM са най-добрия асемблер?

gemicha
Site Admin
Site Admin
Мнения: 2930
Регистриран: 20 ное 2003 22:20
Местоположение: USA

Re: the unreasonable effectiveness of C

Мнение от gemicha » 27 яну 2013 00:51

Kerberos написа:Един задълбочен анализ на Microsoft относно драйверите и C++:
http://msdn.microsoft.com/en-us/windows ... e/gg487420

и няколко мнения на Linux програмисти:
http://www.tux.org/lkml/#s15-3

Останах с впечатлението, че основния проблем е че C++ просто не е бил достатъчно добър навремето. Сега пренаписването на цялото нещо би отнело години.
Статията на Microsoft е от преди 6 години. Доста неща се промениха. Днес можеш да пишеш драйвери и на C#. Можеш да пишеш и на C++, но се изисква сръчност.

Дали ядрото на Linux ще мина на C++? Не мисля, че това е интресен проблем. По-интересно ми е какво би се случило ако Haiku + LLVM се окаже по-добър вариант за IBM/Oracle/HP/Canonical отколкото Lunux.

Отговори