Переключение на Главную Страницу Страницы: [1] 2 3  ОтправитьПечать
Очень популярная тема (более 25 ответов) Re: Священные войны про ООП (число прочтений - 11036 )
kms
1c++ power user
1c++ moderator
Отсутствует


я хочу, чтоб сюда проложили
дорогу оттуда...

Сообщений: 4632
Зарегистрирован: 19. Мая 2006
Re: Священные войны про ООП
29. Декабря 2007 :: 22:43
Печать  
К сожалению, оригинала исходного поста не сохранилось.
Но тем не менее он навсегда останется в наших сердцах

Цитата:
Случайно нашёл в Инете, изложил тут:
http://forum.script-coding.info/viewtopic.php?pid=7494#p7494
Переписка Торвалдса, из которой вроде следует, что С - это круто, а вот С++ - говно Очень довольный. Поскольку Торвалдс вроде как в авторитете Смех, мне показалось всё это довольно неожиданным. А вам?



The gray Cardinal

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

помнишь? "Наш зритель ждет нас" (с) Человек с бульвара Капуцинов


Так там истинная правда написана.
Слегка экспрессивно, несколько тенденциозно, но суть верная.

Вот, например, с этим (то, что пишет Ted, это далее в обсуждении) я согласен с каждым словом:
Цитата:
From: Theodore Tso <tytso <at> mit.edu>
Subject: Re: [RFC] Convert builin-mailinfo.c to use The Better String Library.
Newsgroups: gmane.comp.version-control.git
Date: 2007-09-07 06:15:54 GMT (16 weeks, 1 day, 16 hours and 9 minutes ago)
On Thu, Sep 06, 2007 at 08:09:23PM -0700, Dmitry Kakurin wrote:
> > Total BS. The string/memory management is not at all relevant. Look at the
> > code (I bet you didn't). This isn't the important, or complex part.
>
> Not only have I looked at the code, I've also debugged it quite a bit.
> Granted most of my problems had to do with handling paths on Windows
> (i.e. string manipulations).

I consider string manipulation to be one of the places where C++ is a
total disaster.  It's way to easy for idiots to do something like this:

     a = b + "/share/" + c + serial_num;

where you can have absolutely no idea how many memory allocations are
done, due to type coercions, overloaded operators (good God, you can
overload the comma operator in C++!!!), and then when something like
that ends up in an inner loop, the result is a disaster from a
performance point of view, and it's not even obvious *why*!

> My goal is to *use* Git. When something does not work *for me* I want
> to be able to fix it (and contribute the fix) in *shortest time
> possible* and with *minimal efforts*. As for me it's a diversion from
> my main activities.

Yes, and if you contribute something the shortest time possible, and
it ends up being crap, who gets to rewrite it and fix it?  I've seen
too many C++ programs which get this kind of crap added, and it's not
noticed right away (because C++ is really good at hiding such
performance killers so they are not visible), and then later on, it's
even harder to find the performance problems and fix them.

> Now, I realize that I'm a very infrequent contributor to Git, but I
> want my opinion to be heard.

And if git were written in C++, it's precisely the infrequent
contributors (who are in a hurry, who only care about the quick hack
to get them going, and not about the long-term maintainability and
performance of the package) that are be in the position to do the
most damage...

                                   - Ted


Только там по-существу обсуждается не OO /Procedural programming, а конкретно C++/C.
Хотя согласен, многое можно расширить и на академический Улыбка OOP.
Просто по отношению к чистому OOP C++ добавляет множество запросто возможных граблей.
« Последняя редакция: 09. Января 2008 :: 01:10 - kms »  

De quelle planète es-tu?
Наверх
 
IP записан
 
kms
1c++ power user
1c++ moderator
Отсутствует


я хочу, чтоб сюда проложили
дорогу оттуда...

Сообщений: 4632
Зарегистрирован: 19. Мая 2006
Re: Священные войны про ООП
Ответ #1 - 29. Декабря 2007 :: 23:35
Печать  
Вообще, тема очень большая.
Но если тезисно - можно попробовать сформулировать.

В чем проблема С++?

В С++ нет проблем. С++ - это всего лишь инструмент, не лучше и не хуже С.
Все проблемы лежат ЗА гранью С++.

Но они очевидны.

1. Проблема мышления на уровне абстракций.
Переходя на уровень абстракций, мозг теряет способность мыслить низкими категориями.
Это закономерно, ибо эти уровни являются взаимоисключающими by design.

2. Проблема проектирования архитектуры.
В С сделать плохое решение гораздо сложнее. Это факт.
Есть чистые данные, организованные в некие структуры, есть процедуры, ими оперирующие.
Можно выбрать неоптимальные наборы данных, можно написать неоптимальные алгоритмы.
НО. Проводить оптимизацию и рефакторинг такого кода несложно.

В С++ проблема любого большого проекта - проблема дизайна.
Есть на примете какой-нибудь проект с хорошим дизайном?

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

На досуге можно попробовать оценить иерархию классов в маленьком проекте 1cpp.
Можно еще нарисовать иерархию классов MFC Улыбка

Я в свое время подбрасывал оба проекта doxygen'у - было очень познавательно.
И все равно нихрена не понятно.

4. Ну, чисто языковые проблемы C++ (типа перегрузки операторов || &&) я вообще оставлю в стороне.
На эту тему существует множество книг (типа С++ gotchas и т.д.).

5. Время подготовки специалиста.
Для программирования на С нужно прочитать одну книжку К&R (Керниган/Ритчи).
Ладно, так и быть, еще одну книжку по среде исполнения.
Ну да, еще немножко математики и профильного образования, чтобы хоть как-то писать какие-то алгоритмы.

Сколько книг нужно по C++, чтобы ХОТЯ БЫ перестать лепить полную лажу?
Я так и думал, что вы скажете, что одной хорошей хватит. Улыбка
Хрен бы там.

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

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

К сожалению, не каждый человек может быть эффективным программистом.
И далеко не каждый эффективный программист может быть эффективным архитектором.
И тем не менее, каждый пытается.

Вот, собственно, и все проблемы С++. Очень довольный
  

De quelle planète es-tu?
Наверх
 
IP записан
 
kms
1c++ power user
1c++ moderator
Отсутствует


я хочу, чтоб сюда проложили
дорогу оттуда...

Сообщений: 4632
Зарегистрирован: 19. Мая 2006
Re: Священные войны про ООП
Ответ #2 - 29. Декабря 2007 :: 23:47
Печать  
Да, кстати, реальность дополняет теорию.

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

То же самое происходит и во всем остальном мире разработки софта.

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

...
Правда, хреновых решений под флагом 1С:совместимо еще больше Улыбка
По той же причине.
  

De quelle planète es-tu?
Наверх
 
IP записан
 
kms
1c++ power user
1c++ moderator
Отсутствует


я хочу, чтоб сюда проложили
дорогу оттуда...

Сообщений: 4632
Зарегистрирован: 19. Мая 2006
Re: Священные войны про ООП
Ответ #3 - 30. Декабря 2007 :: 00:23
Печать  
Ну и совсем уж, чтобы добить тему...

Зачастую такие споры ведутся абсолютно без привязки к первоисточнику.
А первоисточники, кстати, очень интересны.

К примеру, у Страуструпа есть книжка Design and Evolution of C++, где он повествует о том, как С++ создавался.
И в какие он был зажат тиски, между комитетом (позже) и ортодоксальными последователями С (сразу).
Эффективность всегда была ключевым моментом для Страуструпа.

Торвальдс высказывается по поводу STL - ее сложности, стабильности и т.п.
Но когда мы, наконец, делаем попытку вникнуть в то, кто же такой по жизни Степанов, мы начинаем понимать,
что для него самое главное - это эффективность, алгоритмизация, чистая математика, наконец.

Степанов на самом деле (по убеждениям) очень близок к Торвальдсу, не знаю, понимает ли это сам Торвальдс или нет Улыбка
Многие его работы, кстати, опубликованы на его сайте http://www.stepanovpapers.com

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

P.S.
Да, по поводу Торвальдса.

Интересно, а что он вообще думает по поводу своего линукса?
У линукса ведь абсолютно те же проблемы, что и у C++.
Проблемы недостатка сознания (у потребителей).
Разве нет?
Разве не тем объясняется успех windows, что она по уровню сложности установки и использования ориентирована на среднестатистического дебила?

Так отож. Смех
  

De quelle planète es-tu?
Наверх
 
IP записан
 
Uzhast
1c++ power user
Отсутствует



Сообщений: 1341
Зарегистрирован: 30. Августа 2006
Пол: Мужской
Re: Священные войны про ООП
Ответ #4 - 30. Декабря 2007 :: 15:06
Печать  
kms писал(а) 29. Декабря 2007 :: 22:43:
Так там истинная правда написана.
Слегка экспрессивно, несколько тенденциозно, но суть верная.

Вот, например, с этим (то, что пишет Ted, это далее в обсуждении) я согласен с каждым словом:


Шо? С чем тут можно быть согласным?!

Цитата:
I consider string manipulation to be one of the places where C++ is a
total disaster.  It's way to easy for idiots to do something like this:

     a = b + "/share/" + c + serial_num;

where you can have absolutely no idea how many memory allocations are
done, due to type coercions, overloaded operators (good God, you can
overload the comma operator in C++!!!), and then when something like
that ends up in an inner loop, the result is a disaster from a
performance point of view, and it's not even obvious *why*!

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

Цитата:
> My goal is to *use* Git. When something does not work *for me* I want
> to be able to fix it (and contribute the fix) in *shortest time
> possible* and with *minimal efforts*. As for me it's a diversion from
> my main activities.

Yes, and if you contribute something the shortest time possible, and
it ends up being crap, who gets to rewrite it and fix it?  I've seen
too many C++ programs which get this kind of crap added, and it's not
noticed right away (because C++ is really good at hiding such
performance killers so they are not visible), and then later on, it's
even harder to find the performance problems and fix them.

> Now, I realize that I'm a very infrequent contributor to Git, but I
> want my opinion to be heard.

And if git were written in C++, it's precisely the infrequent
contributors (who are in a hurry, who only care about the quick hack
to get them going, and not about the long-term maintainability and
performance of the package) that are be in the position to do the
most damage...

                                   - Ted

И ты что, с этим согласен?! На голом Си навалять мусора можно гораздо быстрее и проще. Потому что, возможностей сделать ошибку больше. Если, конечно, смотреть с точки зрения примера со строками. Если идиот напишет a = b + "/share/" + c + serial_num; то в С++ это будет корректный код. Если такой же код идиот напишет на Си, то сам знаешь, что будет.
  
Наверх
 
IP записан
 
Uzhast
1c++ power user
Отсутствует



Сообщений: 1341
Зарегистрирован: 30. Августа 2006
Пол: Мужской
Re: Священные войны про ООП
Ответ #5 - 30. Декабря 2007 :: 15:20
Печать  
kms писал(а) 29. Декабря 2007 :: 23:35:
Вообще, тема очень большая.
Но если тезисно - можно попробовать сформулировать.

В чем проблема С++?

В С++ нет проблем. С++ - это всего лишь инструмент, не лучше и не хуже С.
Все проблемы лежат ЗА гранью С++.

Но они очевидны.

1. Проблема мышления на уровне абстракций.
Переходя на уровень абстракций, мозг теряет способность мыслить низкими категориями.
Это закономерно, ибо эти уровни являются взаимоисключающими by design.

И что? Это проблема? Это средство борьбы со сложностью.

kms писал(а) 29. Декабря 2007 :: 23:35:
2. Проблема проектирования архитектуры.
В С сделать плохое решение гораздо сложнее. Это факт.
Есть чистые данные, организованные в некие структуры, есть процедуры, ими оперирующие.
Можно выбрать неоптимальные наборы данных, можно написать неоптимальные алгоритмы.
НО. Проводить оптимизацию и рефакторинг такого кода несложно.

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

kms писал(а) 29. Декабря 2007 :: 23:35:
В С++ проблема любого большого проекта - проблема дизайна.
Есть на примете какой-нибудь проект с хорошим дизайном?

Ага в Си таких проблем нет. Дизайн сложной системы от языка зависит слабо. Зато Си не дает достаточно приличных средств для воплощения этого дизайна.

kms писал(а) 29. Декабря 2007 :: 23:35:
3. Проблема осознания архитектуры.
ОК, допустим, в предыдущем пункте мы нашли-таки проект с хорошим дизайном.
Однако проект живет своей жизнью - авторы меняются, новые замыслы приходят на смену старым.


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

kms писал(а) 29. Декабря 2007 :: 23:35:
Для того, чтобы эффективно развивать проект надо полностью осознать концепцию существующей архитектуры.

На досуге можно попробовать оценить иерархию классов в маленьком проекте 1cpp.
Можно еще нарисовать иерархию классов MFC Улыбка

Я в свое время подбрасывал оба проекта doxygen'у - было очень познавательно.
И все равно нихрена не понятно.

Только причем тут С++? В любой сложной системе есть ряд непростых модулей со сложными зависимостями. Вот только при помощи С "со сложностью бороться сложнее".

kms писал(а) 29. Декабря 2007 :: 23:35:
4. Ну, чисто языковые проблемы C++ (типа перегрузки операторов || &&) я вообще оставлю в стороне.
На эту тему существует множество книг (типа С++ gotchas и т.д.).

Эти "проблемы" существуют только для идиотов.

kms писал(а) 29. Декабря 2007 :: 23:35:
5. Время подготовки специалиста.
Для программирования на С нужно прочитать одну книжку К&R (Керниган/Ритчи).
Ладно, так и быть, еще одну книжку по среде исполнения.
Ну да, еще немножко математики и профильного образования, чтобы хоть как-то писать какие-то алгоритмы.

Только когда начнутся сложные проекты одной книжки вдруг станет недостаточно.

kms писал(а) 29. Декабря 2007 :: 23:35:
Сколько книг нужно по C++, чтобы ХОТЯ БЫ перестать лепить полную лажу?
Я так и думал, что вы скажете, что одной хорошей хватит. Улыбка
Хрен бы там.

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

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

kms писал(а) 29. Декабря 2007 :: 23:35:
Интегрально, сложность систем, написанных на C++, намного выше, чем написанных на C.
Уровень абстракций, призванный эту сложность уменьшить, на деле дает лишь иллюзию уменьшения сложности.

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

kms писал(а) 29. Декабря 2007 :: 23:35:
Просто сложность переходит на другой уровень, разгружая мозг кодера и загружая мозг архитектора.

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

kms писал(а) 29. Декабря 2007 :: 23:35:
Вот, собственно, и все проблемы С++. Очень довольный

Неубедительно.
  
Наверх
 
IP записан
 
Uzhast
1c++ power user
Отсутствует



Сообщений: 1341
Зарегистрирован: 30. Августа 2006
Пол: Мужской
Re: Священные войны про ООП
Ответ #6 - 30. Декабря 2007 :: 15:22
Печать  
Цитата:
Случайно нашёл в Инете, изложил тут:
http://forum.script-coding.info/viewtopic.php?pid=7494#p7494
Переписка Торвалдса, из которой вроде следует, что С - это круто, а вот С++ - говно Очень довольный. Поскольку Торвалдс вроде как в авторитете Смех, мне показалось всё это довольно неожиданным. А вам?

Аффтар, у этого древнего бояна огромная лохматая седая борода пятиметровой длины. Читай РСДН. В нескольких темах там уже все обсосано со всех сторон. Линус слишком плохо знает С++, чтобы можно было всерьез принимать его высказывания.
  
Наверх
 
IP записан
 
Uzhast
1c++ power user
Отсутствует



Сообщений: 1341
Зарегистрирован: 30. Августа 2006
Пол: Мужской
Re: Священные войны про ООП
Ответ #7 - 30. Декабря 2007 :: 15:58
Печать  
Цитата:
Uzhast
Давай прямую ссылку на обсуждение, о котором говоришь, боянофоб ты наш Подмигивание. А если лень искать ссылку - просто помолчи.
Авторитет Линуса слишком высок, чтобы можно было всерьез принимать твои высказывания Подмигивание.

Вот тебе ссылки, любитель авторитетов ты наш без собственных мозгов:
http://rsdn.ru/Forum/Message.aspx?mid=2764724
http://rsdn.ru/Forum/Message.aspx?mid=2647838
  
Наверх
 
IP записан
 
Uzhast
1c++ power user
Отсутствует



Сообщений: 1341
Зарегистрирован: 30. Августа 2006
Пол: Мужской
Re: Священные войны про ООП
Ответ #8 - 30. Декабря 2007 :: 16:18
Печать  
Цитата:
Uzhast
Хамишь, однако. Значит, твоё мнение не стоит и выеденного яйца - пытаешься компенсировать хамством отсутствие аргументов. Просто помолчи - иногда лучше жевать, чем говорить.

Смех
Свои аргументы я привел. Тебе же ответить нечего - ты только прикрываешься авторитетом чужого человека. Значит, действительно - собственных мозгов нет. Скучно с тобой.
  
Наверх
 
IP записан
 
Uzhast
1c++ power user
Отсутствует



Сообщений: 1341
Зарегистрирован: 30. Августа 2006
Пол: Мужской
Re: Священные войны про ООП
Ответ #9 - 30. Декабря 2007 :: 16:36
Печать  
Цитата:
Uzhast
Мнение Линуса интересно (а речь в этой ветке именно о мнении Линуса). Твоё же "мнение" не интересно никому. Перестань хамить и просто помолчи. Прекрати гадить в ветке.

Видишь ли в чем дело... Если ты завел ветку на форуме, значит, ты ждешь неких "мнений" насчет заинтересовавшего тебя предмета. Однако эти "мнения" совершенно не обязательно будут такими, какие тебя устроят. Заводя ветку на форуме, всегда надо быть готовым, что возможна неприятная для тебя реакция. Что и произошло в данном случае. Если тебя подобные вещи не устраивают, то тебе лучше завести собственный форум, где ты будешь тряпочкой подтирать неугодные тебе "мнения". Естественно, тогда тебе надо быть готовым к тому, что твой форум и на х никому не будет нужен. Но это уже частности.
  
Наверх
 
IP записан
 
fez
Forum Administrator
1c++ power user
Отсутствует


I wanted to cry, but the
tears wouldn't come

Сообщений: 2712
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Священные войны про ООП
Ответ #10 - 30. Декабря 2007 :: 18:57
Печать  
вот уж действительно, holy war раздули.
  
Наверх
www  
IP записан
 
fez
Forum Administrator
1c++ power user
Отсутствует


I wanted to cry, but the
tears wouldn't come

Сообщений: 2712
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Священные войны про ООП
Ответ #11 - 30. Декабря 2007 :: 19:19
Печать  
Uzhast писал(а) 30. Декабря 2007 :: 15:58:

Сижу, зачитываюсь. Спасибо, порадовал Улыбка
  
Наверх
www  
IP записан
 
kms
1c++ power user
1c++ moderator
Отсутствует


я хочу, чтоб сюда проложили
дорогу оттуда...

Сообщений: 4632
Зарегистрирован: 19. Мая 2006
Re: Священные войны про ООП
Ответ #12 - 30. Декабря 2007 :: 19:44
Печать  
Uzhast

Ого, а я боялся, что тема окажется неинтересной. Улыбка

У меня еще есть пара таких тем:
1. Безопасна ли скорость (допустим) 150 км/ч на обычной загородной дороге для среднестатистического гражданского водителя?
2. Безопасно ли погружение на воздухе на глубину (допустим) 70 метров?

И т.д.
Любую из этих тем (как и топикстартер) можно обсуждать бесконечно долго и абсолютно безуспешно.

Можно? Можно. Нельзя? Нельзя.

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

Именно это Торвальдсом, кстати, и утверждается в этой ветке (ну или я так понял... или так захотел понять).
Кстати, я, насколько помню, вроде не утверждал, что C++ лучше или хуже С.

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

P.S.
Олег, в твоем настроении сегодня чувствуется некая печать уходящего года.
Ты не по МСК случайно вчера-сегодня катался?
Если так, то у меня вопросов больше нет Улыбка
  

De quelle planète es-tu?
Наверх
 
IP записан
 
sedmin
1c++ developer
Отсутствует


I Hate Fat YaBB 2!

Сообщений: 862
Зарегистрирован: 24. Мая 2006
Re: Священные войны про ООП
Ответ #13 - 08. Января 2008 :: 19:18
Печать  
Михаил, я не согласен, практически со всеми твоими комментариями, и практически полностью согласен с Олегом.

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

Тут я также согласен с Олегом, что порог освоения экскаватора и мотоплуга выше, чем у лопаты. Но зато лопатой можно и поле вскопать, и котлован вырыть. Очень довольный Какая из трех вещей будет полезнее?

На самом деле, как ты правильно заметил, дело в разных уровнях проблем. И если решения проблем, с которыми работает С, уже имеются инструменты, такие как компилятор, отладчик и т.п. То для решения проблем, с которыми работает С++, инструменты только разрабатываются.

Это UML и другие инструменты анализа/проектирования. Но не только. Это и метологические инструменты, такие как TDD. Ну если не TDD, то уж тесты сейчас практически всеми пишутся. Имеются в виду, конечно, серьезные проекты. (Мои знакомые, которые пишут для MySQL, говорят, что если ты написал код, то он должен быть покрыт тестами. То есть не должно быть строчки кода, через которую не проши тесты.) Также сюда можно отнести инструменты рефакторинга. (И хрен ты проведешь серьезный рефакторинг С-кода для серьезного проекта при наличии отсутствия тестов).

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

И нихрена С не дает подходов для создания инструментов проектирования.

И относительно "дома с пристройками". Возможный уровень пристроек определяет такая величина (личный уровень разработчика)*(личный уровень знакомства с проектом)*(уровень инструментов поддержания целостности проекта). И если с первыми двумя все понятно, то про третий можно сказать, что он играет не меньшую роль. Таким инструментом может быть документация. Но гораздо большую пользу дают тесты. Они позволяют не только строить пристройки без разрушения основного здания, но и менять дизайн всего здания при достаточно низкой величине (личный уровень)*(уровень знакомства с проектом).

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

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

И последнее. Относительно алгоритмов/оптимальности программ. Каково сейчас соотношение стоимости часа условного программиста к мегабайту памяти? А к МегаФЛОПСу? А какое оно будет чере 5 лет? А через 10? Так во что эффективнее вкладываться?
  
Наверх
 
IP записан
 
sedmin
1c++ developer
Отсутствует


I Hate Fat YaBB 2!

Сообщений: 862
Зарегистрирован: 24. Мая 2006
Re: Священные войны про ООП
Ответ #14 - 08. Января 2008 :: 19:46
Печать  
Кстати, еще один момент.

Проект на С++ сопоставимый по объему с проектом на С будет несопоставимым по функциональности. А сопоставимый по функциональности будет несопоставимым по объему.  Очень довольный

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

Кстати, ты наверное, согласишься, что в проекте на С гораздо больше соблазн перейти к пристройкам, чем в проекте на С++?  Тут возможности языка я отношу к средствам поддержания целостности проекта, и, следовательно, к средствам повышения смелости разработки/построения дизайна/редизайна.
  
Наверх
 
IP записан
 
Переключение на Главную Страницу Страницы: [1] 2 3 
ОтправитьПечать