
![]() |
Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
|
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[216.73.216.218] |
![]() |
|
Страницы: (31) « Первая ... 19 20 [21] 22 23 ... 30 31 ( Перейти к последнему сообщению ) |
Сообщ.
#301
,
|
|
|
Это когда сегодня тебе говорят: к вечеру надо векторный редактор, который работает только с прямыми линиями. На следующий день приходят и заявляют: а теперь надо, чтобы он еще умел вставлять битмапы из файла и рисовать окружности; через полчаса твой продукт уже может все это. Правда, описанный пример хорошо ложиться на парадигму OOD (design), но тем не менее требования кардинально меняются и продукт должен быть быстро адаптирован и не должно было быть потрачено много времени для обеспечения расширяемости на начальном этапе разработки. Как-то так. Добавлено Кстати, об одномиз подходов, называемых bottom-up design я на днях прочитал и проникся: идея заключается в том, что мы не приступаем непосредственно к решению задачи, а создаем инструментарий, который позволяет нам решить задачу в терминах ее предметной области, после чего решаем задачу на ее «естественном языке». Затем, если на следующий день нас попросили расширить функциональность, то есть два варианта: 1. новая функциональность может быть выражена в уже описанных терминах предметной области => собираем новую функциональность из готовых кубиков 2. для расширения продукта необходимо расширить набор понятий предметной области => расширяем базовый инструментарий и из готовых кубиков собираем требуемую функциональность Добавлено Фактически, bottom-up design похож на OOD, но формализуется не задача, а язык задачи. |
Сообщ.
#302
,
|
|
|
Цитата linuxfan @ Это когда сегодня тебе говорят: к вечеру надо векторный редактор, который работает только с прямыми линиями. На следующий день приходят и заявляют: а теперь надо, чтобы он еще умел вставлять битмапы из файла и рисовать окружности; через полчаса твой продукт уже может все это. Правда, описанный пример хорошо ложиться на парадигму OOD (design), но тем не менее требования кардинально меняются и продукт должен быть быстро адаптирован и не должно было быть потрачено много времени для обеспечения расширяемости на начальном этапе разработки. Как-то так. При таком подходе разница между скриптовыми и компилируемыми языками несколько нивилируется. И вот почему. Да, на скрипте ты можешь докрутить ту или иную фишку (потенциально) быстрее, чем на том же С++. Но! Если ты будешь делать это бездумно, то очень скоро ты получишь такое же спагетти кода, немеренное количество костылей, соплей и проч. проч. проч, которое ты опасаешься получить на плюсах. Итог - сложноподдерживаемый и сопровождаемый продукт. Добавлено А если изначально подойдешь с умом к решению задачи, то выбор инструментария ты будешь делать уже из совсем других соображений. Добавлено Цитата linuxfan @ Кстати, об одномиз подходов, называемых bottom-up design я на днях прочитал и проникся: идея заключается в том, что мы не приступаем непосредственно к решению задачи, а создаем инструментарий, который позволяет нам решить задачу в терминах ее предметной области, после чего решаем задачу на ее «естественном языке». Затем, если на следующий день нас попросили расширить функциональность, то есть два варианта: Хороший подход. Частенько им пользуюсь. Добавлено Собственно, тем тот же шарп или джава "берет" - в нем изначально представленно большое количество этих самых кирпичиков, пользуясь которыми можно решить задачу (.NET Framwork, Swing, и т. п.). |
Сообщ.
#303
,
|
|
|
Цитата Flex Ferrum @ Но! Если ты будешь делать это бездумно, то очень скоро ты получишь такое же спагетти кода, немеренное количество костылей, соплей и проч. проч. проч, которое ты опасаешься получить на плюсах. Итог - сложноподдерживаемый и сопровождаемый продукт. Ну так общеизвестно, что гуано можно написать на чем угодно. Я один рз на чистом C написал декодер протокола, причем т. к. в протоколе были пакеты, состоящие из одинаковых типов полей, а мне было впадлу писать кучу case'ов с вызовами одинаковых процедур, я на этом же самом C завернул описания пакетов в C'шные структуры, причем пакеты описывались в терминах протокола (т. е. пакет, состоящий из целочисленного, строкового поля и из массива строковых полей). В результате когда для каких-то целей другой человек начал ковырять этот декодер, я поразился, что эта хреновина, оказывается, недурственно расширяется, правда не без костылей и грязных хаков, но очень легко. Достаточно было вписать пару строчек, но перед этим необходимо было решить более сложную задачу: в какое место их вписывать. Фактически, это был мой первый неосознанный опыт bottom-up дизайна. Я получил удовольствие как от реализации, так и от результата. Добавлено Цитата Flex Ferrum @ Собственно, тем тот же шарп или джава "берет" - в нем изначально представленно большое количество этих самых кирпичиков, пользуясь которыми можно решить задачу (.NET Framwork, Swing, и т. п.). Протестую! Swing, библиотеки Java и .NET'а, это не кирпичики, это материал, из которого надлежить наобжигать кирпичей и сделать цемент для построения приложения! В терминах реальных задач «layout» встречается очень редко ![]() |
Сообщ.
#304
,
|
|
|
Цитата linuxfan @ Ну так общеизвестно, что гуано можно написать на чем угодно. Ну так об том и речь. Добавлено Цитата linuxfan @ Протестую! Swing, библиотеки Java и .NET'а, это не кирпичики, это материал, из которого надлежить наобжигать кирпичей и сделать цемент для построения приложения! В терминах реальных задач «layout» встречается очень редко Ээээ... Батенька... Далеко не всегда. В ТЗ, положим, у тебя написано: "На экране должна быть таблица, отображающая перечень активных пользователей". Ты это выражаешь в терминах DataGrid'а + SqlConnection + SqlCommand + некоторое количество хранимых процедур. Что ты тут изобратать собрался? |
Сообщ.
#305
,
|
|
|
Цитата Ну так общеизвестно, что гуано можно написать на чем угодно. Нужно отдать должное, что на плюсах гуано написать легче, т.к. много очень "интересных" и "специфических" моментов ![]() |
Сообщ.
#306
,
|
|
|
Цитата BugHunter @ Нужно отдать должное, что на плюсах гуано написать легче, т.к. много очень "интересных" и "специфических" моментов Ну, тут все зависит от того, что понимать под гуаном. Вон, Ho Im плювался от гуано, написанного на PHP. |
Сообщ.
#307
,
|
|
|
Цитата Flex Ferrum @ Далеко не всегда. В ТЗ, положим, у тебя написано: "На экране должна быть таблица, отображающая перечень активных пользователей". Э, нет. ТЗ -- это уже формализованные требования/пожелания пользователя. А пользователь хочет «видеть список активных пользователей» (ой, тафталогия получилась ![]() |
Сообщ.
#308
,
|
|
|
Цитата linuxfan @ а ты этот список делаешь так: берем 1 часть DataGrid + 1 часть SqlConnection + ..., замешиваем это в class UsersList -- и получаем кирписик для решения задачи. Ну, далеко не всегда это будет замешено в класс UsersList. |
Сообщ.
#309
,
|
|
|
Цитата linuxfan на крестах напишу за 20 секунд: ![]() ![]() #include <iostream> #include <cstdlib> int main() { std::cout << "Random is " << random() << std::endl; return 0; } Начнется все с попытки реализовать random, закончится выводом. Даже если взять всю libc и заюзать prntf, все равно получется дольше и больше букафф ![]() ![]() void main () { printf ( "Random is %X", rand() ); } и где ж многа букаф та? прошу заметить - даже хедеров никаких не нужно.. |
Сообщ.
#310
,
|
|
|
Цитата mICRo @ и где ж многа букаф та? прошу заметить - даже хедеров никаких не нужно.. А теперь вместо %X пишем %s (ну абшиблись мы). Радостно наблюдаем за результатом... |
Сообщ.
#311
,
|
|
|
Цитата mICRo @ и где ж многа букаф та? прошу заметить - даже хедеров никаких не нужно.. Это половые проблемы MSVC. По стандарту нужен: 1. stdlib.h (random) 2. stdio.h (printf) В оригинальном посте речь шла об ASM, а printf ИМХО одно из самых удачных изобретений человечества. Плюсовые потоки по удобству использования сильно сливают printf'у, т. к. вместо каких-нибудь "%5.2f" там такой огород писать придется... Яркий пример того, что плюсы писались не для человека, а для машины. Добавлено Цитата Flex Ferrum @ А теперь вместо %X пишем %s (ну абшиблись мы). Радостно наблюдаем за результатом... Ну нормальный компилер (gcc) кинет варнинг ![]() |
Сообщ.
#312
,
|
|
|
Цитата linuxfan @ Плюсовые потоки по удобству использования сильно сливают printf'у, т. к. вместо каких-нибудь "%5.2f" там такой огород писать придется... Яркий пример того, что плюсы писались не для человека, а для машины. Так подобная штука и в плюсах есть. Boost::format (http://www.boost.org/libs/format/doc/format.html) называется, причем оно помощнее, чем printf будет. ![]() ![]() cout << boost::format("writing %1%, x=%2% : %3%-th try") % "toto" % 40.23 % 50; // prints "writing toto, x=40.230 : 50-th try" |
Сообщ.
#313
,
|
|
|
Цитата mo3r @ Boost Набор костылей на все случаи жизни ![]() |
Сообщ.
#314
,
|
|
|
Цитата linuxfan @ Набор костылей на все случаи жизни ![]() кирпичики, из которых можно строить хорошие системы ![]() |
Сообщ.
#315
,
|
|
|
Цитата wormball @ Таки выкинули. (и не надо говорить, что holy wars - это не корзина!) Теперь надо переименовать в "asm vs c++" А тема и есть холиварная каждый считает тот язык идеальным, к которому привык Добавлено Цитата linuxfan @ Набор костылей на все случаи жизни , причем и запись какая-то неестественная. это так любую библиотеку можно назвать костылями, хотя на самом деле они именно Цитата mo3r @ кирпичики, из которых можно строить хорошие системы |