[an error occurred while processing this directive]
|
С++ - не исключение. Его модель не всегда была стандартизована, но, даже в самом начале развития языка, либо все детали были четко описаны, либо были очевидны _на основе_ теории, разработанной задолго до создания С++ - начиная с Фортрана и Алгола, и на основе существовавшего тогда достаточно подробной спецификации Си. И, кстати, со временем С++ не утратил той красоты, которая ему была присуща с самого начала. Другое дело, что он разросся, возможно, чрезмерно, и требование совместимости с С с самого начала породило ряд компромиссов, которых лучше бы в плюсах не было. В старой литературе встречается мнение, что очень популярный в 70-х PL-I со временем так оброс всевозможными "удобствами", что им совершенно стало невозможно пользоваться. Вам это ничего не напоминает? Да и для некоторых новых областей применения (разработка COM-компонент) плюсы оказались не вполне предназначенные - конечно, COM-объекты можно писать на плюсах, и очень многие пишут - но без встроенной поддержки COM в язык как-то слишком много времени тратится на нормальное обслуживание требований к COM интерфейсам.
В случае с SystemC ситуация несколько иная. Насколько я могу судить по доступным мне документам, пока что нет ни четкого описания языка, ни теории, на основе которой решения были бы вполне очевидны. Я так понял, что Вы говорите "пусть, формальной теории нет - но я пятым чувством чувствую, что по С++ программе можно породить эффективное железо". Так вот, этого пятого чувства - мало. Бет четкой теории в программировании конфетку не сделаешь - обязательно выйдет говно.
Простите, но когда дела касается вопроса, можно ли описывать SystemC процесс в виде наследования - то это Вы как поборник решения должны привести цитату из спецификации SystemC, где бы явно утверждалось, что можно. Я, например, не видел достаточно детального документа, в котором бы описывался синтез SystemC конструкций. Если же такой цитаты нет, а есть только примеры, в которых используются макросы - то, извините, это означает ровно одно: разработчики SystemC не довели свою идею до состояния, при котором этот инструмент допустимо использовать в мало-мальски серьезном проекте. И доведут ли когда-либо до такого состояния - неизвестно.
И немного о программировании вообще. Конечно, жесткий менеджмент программных проектов является обязательным для их успеха. Но тут опять возникает компромисс. Для того, чтобы программист со знанием плюсов и некоторым опытам работы на нем начал писать так, как требуется в жестко администрируемом проекте - необходимо его обучение. Такое обучение стоит денег. Точно так же, как в хорошем языке программирования должны быть инструменты, позволяющие программировать безопасно, в хорошем языке программирования должны быть средства для обеспечения качества в рамках проекта с разумными затратами. Мне рассказали, что писатели игрушек в последнее время перешли с плюсов на Java - потому что разработка с приемлемым качеством получается дешевле в _несколько раз_. Да, плюсы - очень мощный инструмент, но во многих случаях его мощь обходится слишком дорого. Кстати, автомобиль без ремней безопасности эксплуатировать запрещено.
Что касается шаблонов - взгляните, например, на исходники класса basic_string в седьмом MSVC и скажите, какие методы требуются у параметра этого шаблона _Traits? И при отсутствии каких из них какие методы basic_string не будут компилироваться? Сложно? А все потому, что нет никакого средства типизации параметров шаблонов. Perl, кстати, тоже довольно популярный язык.
Я не оспариваю, что Verilog и VHDL первоначально создавались как язык моделирования логического железа, а не его синтеза.
E-mail: info@telesys.ru