Развитие Visual C++
Какая версия Visual C++ сейчас актуальна? Какие библиотеки подпрограмм под Visual C++ сейчас востребованы? Есть ли будущее у продукта Visual C++ и у языка Си++ вообще. Сможет ли Си++ слиться с современными языками, ориентированными на мультиплатформенность?
Я говорю да Visual C++; VB и остальные языки
ООП на основе платформы NET имеют будующее!(хотя
ВБ и не относится к ООП он является языком который разрабатывается в среде Win32API)
Я говорю да Visual C++; VB и остальные языки
ООП на основе платформы NET имеют будующее!(хотя
ВБ и не относится к ООП он является языком который разрабатывается в среде Win32API)
А вот что касается MFC - будет ли она жить. Ведь сейчас все больше и больше специалистов переходят на Java, тот же .NET.
А вот что касается MFC - будет ли она жить. Ведь сейчас все больше и больше специалистов переходят на Java, тот же .NET.
Уважаемые, разберитесь сначала в сути области, прежде, чем задавать такие бредовые вопросы.
Я же как-то уже отвечал:
Java - язык,
.NET - платформа,
MFC - библиотека (однозначно умрет, т.к. сейчас уже еле двигается от ожирения).
Уважаемые, разберитесь сначала в сути области, прежде, чем задавать такие бредовые вопросы.
Я же как-то уже отвечал:
Java - язык,
.NET - платформа,
MFC - библиотека (однозначно умрет, т.к. сейчас уже еле двигается от ожирения).
Конкрентный вопрос: что должен выбрать разработчик, если он хочет написать обычный более-менее крупный проект для обычного пользователя. Суть проста: так как проект более-менее крупный, нужно, чтобы при его завершении не "умерло" то, что уже было сделано (в основном на Си++, ФОРТРАН,
т.к. проект включает мат. функции). В этой сфере, насколько мне известно, ни Java, ни NET не стоят рядом с Си и ФОРТРАН.
Хорошо, мы выбрали Си++. Допустим. И что? Писать интерфейс на чистом API? Или просто бросаться на JAVA только потому, что это модно, и интерфейс разрабатывается проще и легче (в ущерб существующим наработкам).
Конкрентный вопрос: что должен выбрать разработчик, если он хочет написать обычный более-менее крупный проект для обычного пользователя. Суть проста: так как проект более-менее крупный, нужно, чтобы при его завершении не "умерло" то, что уже было сделано (в основном на Си++, ФОРТРАН,
т.к. проект включает мат. функции).
:)
Уже лучше.
Скажи конкретно, сколько столетий будет жить проект? :)
Думаю, за наш век мало что изменится коренным образом. Да и проект потом можно (и наверняка нужно) будет переписать.
В этой сфере, насколько мне известно, ни Java, ни NET не стоят рядом с Си и ФОРТРАН.
Этого я не знаю, но что-то подсказывает мне, что язык не имеет большого значения в данном случае.
Хорошо, мы выбрали Си++. Допустим. И что? Писать интерфейс на чистом API? Или просто бросаться на JAVA только потому, что это модно, и интерфейс разрабатывается проще и легче (в ущерб существующим наработкам).
Обычно язык программирования выбирается из области применения, наличия квалифицированных разработчиков и т.д. Но никак не исходя из интерфейса пользователя.
Писать на "чистом API" (наверное, подразумевается Win32 API) совсем совсем необязательно. Думаю, твой вопрос в конечном итоге вырождается в вопрос: что использовать вместо MFC?
Ответ неоднозначный. Все опять же зависит от задачи. Если надо писать под Windows, то я советую WTL. Если под др. платформы или сразу под несколько, то можно использовать Qt или Gecko.
Этого я не знаю, но что-то подсказывает мне, что язык не имеет большого значения в данном случае.
Согласен, но есть библиотеки подпрограмм, в которых реализованы мат. алгоритмы по различным моделям. В большинстве своем они написаны на ФОРТРАНе и Си.
Все они уже давно отттестированы и переписавать их под новую платформу - большая работа.
Ответ неоднозначный. Все опять же зависит от задачи. Если надо писать под Windows, то я советую WTL. Если под др. платформы или сразу под несколько, то можно использовать Qt или Gecko.
WTL,Qt,Gecko - это отдельные библиотеки или они поставляются вместе с Си++. Чем они отличаются от MFC, ATL, STL?
Все они уже давно отттестированы и переписавать их под новую платформу - большая работа.
Ну тогда выбор очевиден.
Кроме того стоит четко разграничивать бизнес-логику и пользовательский интерфейс. Бизнес-логика не должна быть жестко связана с UI, поэтому реализовывать их можно (и нужно) по-отдельности, при этом можно и на разных языках.
WTL,Qt,Gecko - это отдельные библиотеки или они поставляются вместе с Си++. Чем они отличаются от MFC, ATL, STL?
Это отдельные библиотеки.
Отличие в том, что STL - это стандартная библиотека С++, она не для написания GUI.
ATL - библиотека для создания различных COM объектов и т.п.
MFC - старая тежелая оконная (но не только) библиотека для VC.
WTL - относительно новая, легкая и гибкая оконная библиотека.
Qt, Gecko - две мультиплатформенных оконных библиотеки из многих других.
Бизнес-логика не должна быть жестко связана с UI, поэтому реализовывать их можно (и нужно) по-отдельности, при этом можно и на разных языках.
Само понятие бизнес-логика близко к терминам баз данных. Здесь можно использовать и Java с его JDBC, и Дельфи с его ADO, и Visual С++ через ODBC.
Просто вопрос в том, с помощью какого инструмента это делать легче всего для программиста и использовать те инструменты, которые дают большую гибкость.
Это отдельные библиотеки.
Отличие в том, что STL - это стандартная библиотека С++, она не для написания GUI.
ATL - библиотека для создания различных COM объектов и т.п.
MFC - старая тежелая оконная (но не только) библиотека для VC.
WTL - относительно новая, легкая и гибкая оконная библиотека.
Qt, Gecko - две мультиплатформенных оконных библиотеки из многих других.
WTL новее STL? STL насколько мне известно есть в Visual С++ 6.0 и уже считается устаревшей.
Где можно взять сам WTL и его документацию?
Само понятие бизнес-логика близко к терминам баз данных.
Это понятие из OOA&D и имеет отношение не только к БД.
Подразумевается, что есть некое ядро, выполняющее работу (бизнес-логику). А далее к этому ядру привязывается интерфейс пользователя.
Можно привязать потом и другой интерфейс, т.к. интерфейс не влияет на работу ядра, а лишь передает ему параметры и принимает результаты.
Просто вопрос в том, с помощью какого инструмента это делать легче всего для программиста и использовать те инструменты, которые дают большую гибкость.
Бизнес-логику пиши на том, на чем удобнее её реализовывать, как я понял в твоем случае это С++ и фортран.
А потом прикручивайте UI, написанный на том, на чем легче написать его. Хоть на VB или Delphi.
WTL новее STL? STL насколько мне известно есть в Visual С++ 6.0 и уже считается устаревшей.
Где можно взять сам WTL и его документацию?
Набери в поисковике STL, а потом WTL и почитай что из них что.
Это совершенно не сравнимые вещи. Переведя в другое русло твой вопрос звучит примерно так: насколько мне известно рулевое колесо - уже устаревшее, поэтому я хочу использовать низкопрофильную резину.
Про WTL на русском можно почитать на rsdn.ru
Уважаемые, разберитесь сначала в сути области, прежде, чем задавать такие бредовые вопросы.
Я же как-то уже отвечал:
Java - язык,
.NET - платформа,
MFC - библиотека (однозначно умрет, т.к. сейчас уже еле двигается от ожирения).
Ребята тут идет речь,насколько я понимаю, о
Win32API и разроботке в GUI.
Это понятие из OOA&D и имеет отношение не только к БД.
Что такое OOA&D?
Набери в поисковике STL, а потом WTL и почитай что из них что.
Это совершенно не сравнимые вещи. Переведя в другое русло твой вопрос звучит примерно так: насколько мне известно рулевое колесо - уже устаревшее, поэтому я хочу использовать низкопрофильную резину.
Про WTL на русском можно почитать на rsdn.ru
Что значит STL и WTL несравнимые вещи? Если у них разные цели, ради которых они создавались, конечно они несравнимы.
STL, как я понял, не предназначен для создания интерфейса пользователя.
WTL - аналог MFC. Но действительно ли лучший аналог?
О совместимости. Я знаю, что из JAVA программы можно с помощью спец. средств получить Си#-программу. Таким образом можно решить вопрос о переходе с одной платформы (JAVA) на другую .NET.
А в Си++ что-то подобное возможно?
Ведь если мультиплатформенные ЯП займут большую часть рынка разработки ПО, найдется ли место языку Си++ и, в частности, Visual C++?
Что такое OOA&D?
Объектноориентированный анализ и проектирование.
STL, как я понял, не предназначен для создания интерфейса пользователя.
Правильно понял
WTL - аналог MFC. Но действительно ли лучший аналог?
Всё зависит от критерия оптимальности.
Скажем так, моим требованиям отвечает.
А в Си++ что-то подобное возможно?
Можно написать COM-компонент и использовать во многих языках.
Ведь если мультиплатформенные ЯП займут большую часть рынка разработки ПО, найдется ли место языку Си++ и, в частности, Visual C++?
Эка тебя потянуло...
Давай откровенно. Любая система через год уже устаревшая. Кроме того, не думаю, что то что ты собираешься написать будет чем-то мегасистемным... потому, что уровень задаваемых вопросов не тот.
Поэтому начинать писать в принципе все равно на чем. Потом когда все прояснится легче переписать, а переписывать придется однозначно.
Следуй золотому правилу: не проектируй тщательно стратегически, проектируй тактически и пробуй. В программировании, как и во всем остальном главное - эксперимент.
Объектноориентированный анализ и проектирование.
Эка тебя потянуло...
Давай откровенно. Любая система через год уже устаревшая. Кроме того, не думаю, что то что ты собираешься написать будет чем-то мегасистемным... потому, что уровень задаваемых вопросов не тот.
Поэтому начинать писать в принципе все равно на чем. Потом когда все прояснится легче переписать, а переписывать придется однозначно.
Следуй золотому правилу: не проектируй тщательно стратегически, проектируй тактически и пробуй. В программировании, как и во всем остальном главное - эксперимент.
У меня есть опасение, что реализуя простоту (в JAVA, например) мы придем к ядру (JVM или платформа .NET), на которое будут ориентироваться разработчики. Программист будет создавать не исполняемый файл, а просто текст программы, который будет выполняться этим ядром.
Поэтому есть разница: исходить из обычного модульного программирования или ориентироваться на ООП (с возможность переводить класс с одной платформы на другую).
У меня есть опасение, что реализуя простоту (в JAVA, например) мы придем к ядру (JVM или платформа .NET), на которое будут ориентироваться разработчики. Программист будет создавать не исполняемый файл, а просто текст программы, который будет выполняться этим ядром.
Поэтому есть разница: исходить из обычного модульного программирования или ориентироваться на ООП (с возможность переводить класс с одной платформы на другую).
Уважаемый, тебя это интересует с академической точки зрения или ты думаешь над реальной задачей.
Если с академической,- то говорить можно сколько угодно, а если с точки зрения реальной задачи - то пиши на чем угодно и не думай так много, все равно ни к чему не придешь.
Это все равно, что перед сватьбой думать какого цвета будут глаза у твоих пра-правнуков и будут ли они вписываться в цветовую гамму модную через 100-200 лет.
Меня очень заинтересовала твоя методика написания программ. Я начинающий программист и мне очень интересно как реализовывается написание программы с разделением на бизнес-логику и UI. Если можно совсем малюсенький пример (ну там сложение двух чисел) чтобы один раз увидеть вместо 100 услышать :)
Ну воопервых технологию NET уже поодерживает Visual Studio, то есть теперь достаточно выбрать один из 4 языков пакета и писать на нем под NET, и будет абсолютно пофиг напишешь ли ты его на VB или VC++. Ее так же поддреживает и Delphi. То есть NET это уже RAD в Visula Studio, а не ООП как в VC++ 6.0. Однако сохраняется возможность писать с использованием MFC. FORTRAN язык который уже давно УМЕР, на нем уже лет 7-8 ни чего не пишут(имеется ввиду ядра), С++ является наиболее гибким по сравнению с другими, поэтому и получил такое распространение(все ядра систем Win и NIx пишутся на нем).
Теперь что касается биснесc проектов и бизнесс логики. Для создания бизнесс проектов используются пакеты BPWin и ERWin, а таку же Microsoft Project. Если кто интересуется могу рассказать как и что, но вообще это целая облать знаний.
Так теперь по поводу переходу на Java. Это язык, очень похожий на С++, но являющийся менее гибким, но более простым в использовании и дающий наименьщюу скорость работы. Java - ЭТО не платформа.
Теперь по поводу БД и способов подключения к ним:
Delphi - ADO, BDE, ODBC (Delphi 2005 есть новый способ подключения)
Visual Studio - ADO, ODBC
ADO - является разработкой Microsoft и поэтому VC++ ее в первую одередь использует, вышел ее новый стандарт ADO.NET, ODBC устарела и скоро отомрет сама собой.
Если хочешь писать на языке который все время будет жить то используй asm не ошибешся... :P
и будет абсолютно пофиг напишешь ли ты его на VB или VC++.
Давай ка уточним, что для .NET подходит лишь managed C++, а не стандартный С++.
То есть NET это уже RAD в Visula Studio, а не ООП как в VC++ 6.0.
Что-то не понял мысли...
При чем тут ООП и RAD?
FORTRAN язык который уже давно УМЕР, на нем уже лет 7-8 ни чего не пишут(имеется ввиду ядра),
(все ядра систем Win и NIx пишутся на нем).
Ты контролируешь процесс разработки во всем мире?
Какие ядра? Пушечные?
Теперь что касается биснесc проектов и бизнесс логики. Для создания бизнесс проектов используются пакеты BPWin и ERWin, а таку же Microsoft Project. Если кто интересуется могу рассказать как и что, но вообще это целая облать знаний.
М-да... слышал звон, не знает, где он.
MS Project - инструмент автоматизации управления проектами (любыми, не обязательно связанными с разработкой программ). По большому счету, это просто дневник, для планирования использования ресурсов, отчетности и контроля.
С BPWin и ERWin не работал, но как понимаю, это CASE-средства.
Что значит "создание бизнес проектов", как и само понятие "бизнес проекта" в твоем понимании, для меня не ясно.
Но ты влез совершенно не понимая смысла обсуждаемого ранее. Как понял в твоем понимании слово "бизнес" неотъемлемо связано со знаком $ или иными словами с понятием "коммерция", но само по себе слово "бизнес" переводится как "дело", а под понятием "бизнес-логики" скрывается просто реализация алгоритма(мов), который производит действия, определяемые назначением программы. К примеру, есть у тебя электронные шахматы, так вот реализация логики принятий решений перестановкой шахматных фигур - это и будет бизнес-логика, а то, что показывает на экране эти фигуры и следит за движением мышки человеком - это пользовательский интерфейс (UI) и он может быть любым: графическим или текстовым (как в старых играх), и принимать команды пользователя может, как от мышки, так и с клавиатуры или др. устройства ввода. При этом бизнес-логика остается неизменной и никак не зависит от UI.
Так теперь по поводу переходу на Java. Это язык, очень похожий на С++,
Вся их схожесть начинается и заканчивается заимствованным синтаксисом.
но являющийся менее гибким, но более простым в использовании и дающий наименьщюу скорость работы.
Понятие гибкости и критерий простоты приведи, пожалуйста.
Если хочешь писать на языке который все время будет жить то используй asm не ошибешся... :P
Думаю, что и сам автор понимает, что это типа шутка.
Здравствуй!
Меня очень заинтересовала твоя методика написания программ. Я начинающий программист и мне очень интересно как реализовывается написание программы с разделением на бизнес-логику и UI. Если можно совсем малюсенький пример (ну там сложение двух чисел) чтобы один раз увидеть вместо 100 услышать :)
Ты мне льстишь... :) это не моя методика, а общепринятая.
Ты наверняка много слышал о ней, просто она называлась как-нибудь иначе, например "документ-вид" или "модель-контроллер-отображение" и т.п.
Все сводится к тому, что механизмы обработки данных отвязанны от механизмов отображения этих данных.
Ну например, сложение двух чисел. Понятно, что алгоритм сложения никак не будет зависеть от того как мы эти числа покажем на экране: в арабском или римском формате или в виде счетных палочек. Поэтому есть бизнес-логика (ядро, движок, можно называть как угодно), которая производит сложение чисел, а есть интерфейс пользователя, который принимает аргументы от пользователя, передает их бизнес-логике, а потом получает и отображает результат.
Ну пример кода (т.к. пример несколько примитивен, то и код будет академическим).
Это интерфейс бизнес-логики:
{
public:
void setFirstArgument(int arg);
void setSecondArgument(int arg);
int getResult();
};
Так может выглядеть интерфейс пользователя (не буду заводить соотв. класс):
{
Summator summator;
std::cout << "Input first argument: " << std::endl;
int firstArgument;
std::cin >> firstArgument;
summator.setFirstArgument(firstArgument);
std::cout << "Input second argument: " << std::endl;
int secondArgument;
std::cin >> secondArgument;
summator.setSecondArgument(secondArgument);
std::cout << "Result: " << summator.getResult() << std::endl;
}
При таком подходе мы, к примеру, теперь можем создать оконный интерфейс, где аргументы будут вводиться пользователем в Edit, а вычисление будем производится по нажатию на клавишу "Do it". При этом мы напишем код UI, а код самого сумматора не изменится.
Т.е. что-то типа такого:
{
public:
RESULT OnButtonDoIt();
private:
Summator summator;
};
RESULT SumWindow::OnButtonDoIt()
{
summator.setFirstArgument( editFirstArg->getIntValue() );
summator.setSecondArgument( editSecondArg->getIntValue() );
editResult->setIntVal( summator.getResult() );
}
Давай ка уточним, что для .NET подходит лишь managed C++, а не стандартный С++.
Да ты знаешь, что Pascal это не Delphi и что С++ это не managed С++. Однако эти понятия явлются очень похожими.
Что-то не понял мысли...
При чем тут ООП и RAD?
Ты когда нибудь писал на VC++ под NET? На что это похоже? На RAD скорее всего так? А что представляет собой процесс разработки в VC++ с использованием MFC, но уже без NET? Многие авторы книг утверждают что это чистый ООП, я в принципе с ними согласен. Если что не так понимаю оргументируй более конкретно.
М-да... слышал звон, не знает, где он.
MS Project - инструмент автоматизации управления проектами (любыми, не обязательно связанными с разработкой программ). По большому счету, это просто дневник, для планирования использования ресурсов, отчетности и контроля.
С BPWin и ERWin не работал, но как понимаю, это CASE-средства. Что значит "создание бизнес проектов", как и само понятие "бизнес проекта" в твоем понимании, для меня не ясно.
Но ты влез совершенно не понимая смысла обсуждаемого ранее. Как понял в твоем понимании слово "бизнес" неотъемлемо связано со знаком $ или иными словами с понятием "коммерция", но само по себе слово "бизнес" переводится как "дело", а под понятием "бизнес-логики" скрывается просто реализация алгоритма(мов), который производит действия, определяемые назначением программы. К примеру, есть у тебя электронные шахматы, так вот реализация логики принятий решений перестановкой шахматных фигур - это и будет бизнес-логика, а то, что показывает на экране эти фигуры и следит за движением мышки человеком - это пользовательский интерфейс (UI) и он может быть любым: графическим или текстовым (как в старых играх), и принимать команды пользователя может, как от мышки, так и с клавиатуры или др. устройства ввода. При этом бизнес-логика остается неизменной и никак не зависит от UI.
Тут все очень просто под бизнес логикой у меня понимается автоматизация какой-то отрасли деятельности предприятия или его в целом. То есть созданием системы (ЭИС). Я так вижу ты один раз брал в руки MS Project. В дествительно на первый взгляд так может показаться, однако это далеко не так, мне не хочется рассказывать что и как, но если кто захочит, то с радостью изложу свою точку зрения по поводу Project. ERWin один самых мошных средст проектирования ЭИС, собирающий в одном месте все что тебе нужно.
Понятие гибкости и критерий простоты приведи, пожалуйста.(Java)
Тут тоже все очень просто Java не используется для программирования мат. ядра системы, так же он не исплозуется для написания UI. И не стоит его ставить в ранг с такими языками как С++. Он подчти как VB и VBScript.
Думаю, что и сам автор понимает, что это типа шутка.
Asm он же ассемблер является языком низкого уровня. Одним из самых простых, но в то же время самым эффективным. Но написать на нем это все равно что покрасить весь город кисточкой для рисования. Что бы писать на нем нужно четко знать все режимы и структуру работы конкретного процессора, а так же стеков памяти.
Да ты знаешь, что Pascal это не Delphi и что С++ это не managed С++. Однако эти понятия явлются очень похожими.
Какие понятия?
Ты когда нибудь писал на VC++ под NET? На что это похоже? На RAD скорее всего так? А что представляет собой процесс разработки в VC++ с использованием MFC, но уже без NET? Многие авторы книг утверждают что это чистый ООП, я в принципе с ними согласен. Если что не так понимаю оргументируй более конкретно.
Что значит "чистый ООП"?
RAD - это всего лишь набор инструментов для автогенерации кода, а код этот может быть как ООП, так и не ООП.
RAD и ООП никак не связаны.
Ты, как я понял, пытаешься утверждать примерно следущее: "Пушкин писал на русском языке, а я пишу в MS Word."
Тут все очень просто под бизнес логикой у меня понимается автоматизация какой-то отрасли деятельности предприятия или его в целом. То есть созданием системы (ЭИС).
А ты не пробовал почитать предыдущие посты и вникнуть в контекст обсуждения.
Я так вижу ты один раз брал в руки MS Project. В дествительно на первый взгляд так может показаться, однако это далеко не так, мне не хочется рассказывать что и как, но если кто захочит, то с радостью изложу свою точку зрения по поводу Project.
Ну допустим MS Project я использую ежедневно (исключая субботу и воскресенье).
Так что расскажи ка, как он используется для "создания бизнесс проектов". Только не скатывайся к тому, что называется "планированием", я в курсе, как используется данный продукт для планирования.
Тут тоже все очень просто Java не используется для программирования мат. ядра системы, так же он не исплозуется для написания UI.
Чего?! :D
Что такое мат.ядро системы? Какой системы? Солнечной?
А как понять "не исплозуется для написания UI", т.е. я не могу на Java написать GUI ?
И не стоит его ставить в ранг с такими языками как С++. Он подчти как VB и VBScript.
Огласи, пожалуйста, положение о рангах языков?
Язык первого ранга, язык второго ранга и т.д.? :)
Asm он же ассемблер является языком низкого уровня. Одним из самых простых, но в то же время самым эффективным.
Критерий эффективности приводить будем?
Но написать на нем это все равно что покрасить весь город кисточкой для рисования.
Дык, значит не очень эффективный?
Что бы писать на нем нужно четко знать все режимы и структуру работы конкретного процессора, а так же стеков памяти.
Гы... ты серьезно? прямо таки все?
Кстати, объясни словосочетание "структуру работы", а то как-то в голове не укладывается.
Поехали дальше. MS Project используется для планирования и расчета, это его основная задача, но ни не ДНЕВНИКА.
мат. ядро системы - основная часть любой программы, в которой выполняются математические вычисления. Для ее написания исползуются зачастую такие языки как С++, Pascal, asm и т.д. Java может использоваться теоритически, но не используется и редко используется для написания UI, так как нет соответствующей среды разработки, одако тебе ни чего не стоит взять да и написать на нем все, вопрос в затратах на это и в удобстве.
Asm по эффективности стоит первым, с точки срения конечной производительности и оптимальности использваония ресурсов. Однако не нужно забывать что находясь в среде ОП, вы работаете лишь с ее API, а не напрямую с железом, в связи с этим эффективноть падает, но все равно остается самой высокой. Нецелесообразным его использование в чистом виде ввиду долгосрочности разработки, однако, С++ и Delphi можно делать вставки на этом языке. Ведь это все очивидные вещи или нет?
У каждого процессора есть свой набор команд, схема, если хочешь, работы, у каждого процессора разная структура кеш памяти. Могу более подробно рассказть про эти вещи, только правда сказать про x86 процессор.
Есть еще один вопросик. Возьмем тот же самый сумматор, это код который является ядром программы суммирования (правильно?). Теперь мне нужно написать прогу для разных пользователей, и у каждого будет свой интерфейс, как быть в этом случае? Конечно, приходит мысль как ни будь один раз сохранить это ядро (я конечно не уверен, но может в виде dll?) и много раз использовать во всех остальных программах, или наоборот, написать ядро в exe файле, а в виде dll поставлять UI (может это конечно бред сумасшедшего, я не знаю, просто я только начинаю осваивать программирование, в принципе с синтаксисом С++ я разобрался, и сейчас стоит задача в методике, т.е. – как оформить проект?; как правильно сделать структуру файлов в проекте?; где хранить параметры проекта в ini или в реестре?; какой базой данных лучше пользоваться (ну для склада например) и т.д.)?
И так первое когда ты находишся в среде разработки RAD, то ты ООП принципы вообще не используешь, за исключением тех случаев когда тебе самому нужно создать класс, тип, или компонет...
Кто тебе такую глупость сказал?
Значит, если ты пользуешься готовыми словами, вырезанными из газеты, то ты составляешь текст не на русском языке?
Кстати, как ты различаешь класс и тип?
Твое программирование будет называться как? - ПОП(процедурно-ориентированое), надеюсь объяснять не нужно по чему?
Объясни, не понимаю.
Если я создаю систему классов, то какая разница как их создаю? Я могу писать их в ручную, могу использовать RAD или т.д.
ООП - это не метод написания кода, это принцип программирования.
Поехали дальше. MS Project используется для планирования и расчета, это его основная задача, но ни не ДНЕВНИКА.
Ок. Хорошо, я оговорился. ЕЖЕДНЕВНИК. Так лучше?
А чем планирование отличается от расчета в этом контексте?
мат. ядро системы - основная часть любой программы,
Так программы или системы?
в которой выполняются математические вычисления.
Что ты подразумеваешь под "математические вычисления"?
А бывают программы без математических вычислений?
Для ее написания исползуются зачастую такие языки как С++, Pascal, asm и т.д.
Полнейшая ерунда.
По-твоему получается, что Java работает исключительно в связке с программами на других языках?
Для чего тогда вообще Java?
Java может использоваться теоритически, но не используется и редко используется для написания UI,
Какая чушь!
Для чего тогда вообще Java?
Библиотека Swing тоже теоретическая и редкоиспользуемая?
так как нет соответствующей среды разработки, одако тебе ни чего не стоит взять да и написать на нем все, вопрос в затратах на это и в удобстве.
Давай начнем с того, что UI не обязательно GUI.
Разницу чувствуешь? Но даже если ты подразумевал GUI, и говорил об отсутствии RAD (хотя GUI вполне можно написать и без RAD), то и тут ты ошибся. Посмотри к примеру JavaBuilder.
Asm по эффективности стоит первым, с точки срения конечной производительности и оптимальности использваония ресурсов.
Опять неверно. Принцип индукции тут не действует.
Но об этом я уже говорил в этой ветке:
http://forum.codenet.ru/showthread.php?s=&threadid=23184
Однако не нужно забывать что находясь в среде ОП,
Какой среде?
Нецелесообразным его использование в чистом виде ввиду долгосрочности разработки, однако, С++ и Delphi можно делать вставки на этом языке. Ведь это все очивидные вещи или нет?
Извини, ты вообще имеешь практику программирования?
Могу более подробно рассказть про эти вещи, только правда сказать про x86 процессор.
Да нет спасибо, мы и сами с усами.
Кстати, как у тебя с AT&T ? Это к вопросу о "четко знать все режимы и структуру работы конкретного процессора, а так же стеков памяти"
Возьмем тот же самый сумматор, это код который является ядром программы суммирования (правильно?).
В принципе, правильно.
Теперь мне нужно написать прогу для разных пользователей, и у каждого будет свой интерфейс, как быть в этом случае? Конечно, приходит мысль как ни будь один раз сохранить это ядро (я конечно не уверен, но может в виде dll?) и много раз использовать во всех остальных программах, или наоборот, написать ядро в exe файле, а в виде dll поставлять UI
Для начала давай опеределимся, в каких случаях целесообразно вообще использовать DLL.
Мое мнение, что использовать их есть смысл, когда нужно расшарить исполняемый код между несколькими приложениями или когда этот исполняемый код опционален, т.е. может использоваться, а может и нет (например, плагины).
Теперь по поводу твоего вопроса. Все зависит от конкретной задачи.
Например, если ты хочешь сделать сумматор с различными видами интерфейсов (а-ля Winamp), тогда есть смысл вынести UI в DLL.
Если же, у тебя есть несколько программ, которым нужен для работы сумматор, то его можно вынести в DLL.
Если же ты хочешь написать просто несколько вариантов программы "сумматор", отличающиеся только интерфейсом, то тебе нет нужды создавать DLL. Можно либо создать статически подлинковываемую библиотеку (.lib), либо вообще включить код сумматора в свой проект.
(может это конечно бред сумасшедшего, я не знаю, просто я только начинаю осваивать программирование, в принципе с синтаксисом С++ я разобрался, и сейчас стоит задача в методике, т.е. – как оформить проект?; как правильно сделать структуру файлов в проекте?;
Со временем разберешься.
Постарайся, просто, разделять сущности по классам и размещать их в отдельных файлах.
где хранить параметры проекта в ini или в реестре?;
Это уже вопросы реализации. Все зависит от целей и задач.
Можно воспользоваться такой методикой: сделай как проще и понятнее, а потом, если вдруг не подойдет, можно переделать. Это всяк лучше, чем долго обдумывать все варианты, сделать что-то сложное "на все случаи жизни", а потом окажется, что ты не учел какую-то мелочь и все приходится переделывать.
какой базой данных лучше пользоваться (ну для склада например) и т.д.)?
Ой, не знаю... :)
Кто тебе такую глупость сказал?
Значит, если ты пользуешься готовыми словами, вырезанными из газеты, то ты составляешь текст не на русском языке?
Кстати, как ты различаешь класс и тип?
Объясни, не понимаю.
Если я создаю систему классов, то какая разница как их создаю? Я могу писать их в ручную, могу использовать RAD или т.д.
ООП - это не метод написания кода, это принцип программирования.
Ок. Хорошо, я оговорился. ЕЖЕДНЕВНИК. Так лучше?
А чем планирование отличается от расчета в этом контексте?
Так программы или системы?
Что ты подразумеваешь под "математические вычисления"?
А бывают программы без математических вычислений?
Полнейшая ерунда.
По-твоему получается, что Java работает исключительно в связке с программами на других языках?
Для чего тогда вообще Java?
Какая чушь!
Для чего тогда вообще Java?
Библиотека Swing тоже теоретическая и редкоиспользуемая?
Давай начнем с того, что UI не обязательно GUI.
Разницу чувствуешь? Но даже если ты подразумевал GUI, и говорил об отсутствии RAD (хотя GUI вполне можно написать и без RAD), то и тут ты ошибся. Посмотри к примеру JavaBuilder.
Опять неверно. Принцип индукции тут не действует.
Но об этом я уже говорил в этой ветке:
http://forum.codenet.ru/showthread.php?s=&threadid=23184
Какой среде?
Извини, ты вообще имеешь практику программирования?
Да нет спасибо, мы и сами с усами.
Кстати, как у тебя с AT&T ? Это к вопросу о "четко знать все режимы и структуру работы конкретного процессора, а так же стеков памяти"
Я так понял, что ты до сих пор не видешь сходств и различий между ООП и ПОП. Если хочешь продолжить дисскусию пиши на [email]unmoved@mail.ru[/email], а мне если честно уже надоело тебя в чем-то переубеждать.
Я так понял, что ты до сих пор не видешь сходств и различий между ООП и ПОП.
Я их прекрасно знаю. А вот ты почему то мещаешб в одну кучу совершенно невзаимосвязанные вещи: ООП, RAD, .NET и MFC.
Если хочешь продолжить дисскусию пиши на [email]unmoved@mail.ru[/email], а мне если честно уже надоело тебя в чем-то переубеждать.
А меня и не надо ни в чем переубеждать, но и откровенные глупости тоже писать не стоит.
Мне показалось, что в этой дискуссии упоминались отнюдь не глупости. Наоборот конструктивный обмен мнениями. Только поменьше критики в адрес друг друга. Да и какая разница, блокнот ли MS Project или дневник?
Как я понял в DLL модули можно помещать лишь функции, т.е. классы и их компоненты туда уже нельзя включить. Все правильно?
Как я понял в DLL модули можно помещать лишь функции, т.е. классы и их компоненты туда уже нельзя включить. Все правильно?
Что значит "компоненты класса"? Члены класса?
В DLL можно помещать реализацию методов классов и статические члены. Но IMHO это не очень удобно.
Что значит "компоненты класса"? Члены класса?
В DLL можно помещать реализацию методов классов и статические члены. Но IMHO это не очень удобно.
А разве функции не являются компонентами класса?
А разве функции не являются компонентами класса?
У классов нет функций, есть методы и они не компоненты а члены класса.
У классов нет функций, есть методы и они не компоненты а члены класса.
У Подбельского в "Язык Си++" этот вопрос обсуждается, в книге указывается, что терминология ООП недостаточно устоялась. Это было почти 15 лет назад. Вопрос как переводить data member и member functions лично мне не очень интересен. Гораздо более важно, можно ли помещать определение класса и его реализацию в отдельный блок (.dll,.lib), чтобы затем работать с ним (создавать объекты класса, вызывать member functions) без перекомпиляции.
Что такое precompiled headers в VC++?
У Подбельского в "Язык Си++" этот вопрос обсуждается, в книге указывается, что терминология ООП недостаточно устоялась. Это было почти 15 лет назад. Вопрос как переводить data member и member functions лично мне не очень интересен.
Однако у программистов есть сформировавшийся сленг, котого следует придерживаться, если хочешь чтоб тебя понимали сразу.
Гораздо более важно, можно ли помещать определение класса и его реализацию в отдельный блок (.dll,.lib), чтобы затем работать с ним (создавать объекты класса, вызывать member functions) без перекомпиляции.
На этот вопрос я уже ответил:
В DLL можно помещать реализацию методов классов и статические члены. Но IMHO это не очень удобно.
Определение класса все равно придется писть в заголовочном файле (.h).
Что такое precompiled headers в VC++?
Для ускорения компиляции неизменяемые заголовочные файлы компилируются один раз. Это настраиваемая опция
Однако у программистов есть сформировавшийся сленг, котого следует придерживаться, если хочешь чтоб тебя понимали сразу.
Еще вопрос: зачем используется множественное наследование (производный классс<-базовые классы) или простое наследование (производный классс<-базовый класс), если можно создать класс, у которого в качестве членов будут использоваться указатели на объекты базовых классов?
Еще вопрос: зачем используется множественное наследование (производный классс<-базовые классы) или простое наследование (производный классс<-базовый класс), если можно создать класс, у которого в качестве членов будут использоваться указатели на объекты базовых классов?
Это вопрос сложнее, чем кажется на первый взгляд.
Дилема "агрегация или наследование" ни раз обсуждалась. В общем упрощенном случае наследование нужно использовать тогда, когда наследник должен обладать интерфейсом родителя, т.е. ты можешь обращатся с наследником, как с родителем. Для чего это, думаю понятно.
Если же родительские интерфейсы не видны наружу (private и protected наследование), то здесь агрегация в большинстве случаев предпочтительнее.
И ещё одно замечание. Не всегда наследование - не есть расширение класса родителя. В большинстве случаев родитель представляет лишь интерфейс, а реализация закрыта в потомках.
Это вопрос сложнее, чем кажется на первый взгляд.
Дилема "агрегация или наследование" ни раз обсуждалась. В общем упрощенном случае наследование нужно использовать тогда, когда наследник должен обладать интерфейсом родителя, т.е. ты можешь обращатся с наследником, как с родителем. Для чего это, думаю понятно.
Если же родительские интерфейсы не видны наружу (private и protected наследование), то здесь агрегация в большинстве случаев предпочтительнее.
Не можешь сказать, где обсуждался этот вопрос. Я сейчас столкнулся с этой проблемой.
Не можешь сказать, где обсуждался этот вопрос. Я сейчас столкнулся с этой проблемой.
Млин...люди..человеки...читайте Гради Буча от 1995 года. Хоть многие счас на него "гонят" но я считаю это фундаментальный труд в области ООП. Те кто его поняли лишних вопросов не задают :)))
Не можешь сказать, где обсуждался этот вопрос. Я сейчас столкнулся с этой проблемой.
Точно уже не помню. Поищи поиском на rsdn.ru, например ключом "наследование агрегирование" или "наследование агрегация" (только без кавычек).
Ну и поисковиками можно поискать, в т.ч. и по конференциям.
И еще... Я вот никак не пойму тех кто пишет на VB или Java, или еще чем подобном. Мне не понятно то, что многие пишут под MFC. Мне не понять тех кто говорит что Win32 API это сложно... Я просто ошарашен. Я не понимаю тех "программистов" которые хотят попроще. Брызжут слюнями, что они пишут на C++, а сами MSDN не открывали не разу! Я где-то в лет 15 начал писать на API. Моими книгами по C++ были несколько корявых исходников-туториалов от какого-то WATCOM'овского компилятора. А как только у меня появилось SDK, вот тогда-то я и попер! У меня даже и в мыслях не было что может быть проще. Потом я "узнал", что есть что-то более профессиональное, и перешел на Асм. Если вы не разбираетесь в Win32 API, не можете его использовать, значит вы вообще нихрена не понимаете в системе! Я думал людям свойственно хотеть быть лучше, профессиональнее, а они все больше и больше ООП'еют. А потом зубоскалят когда им говорят про Ассемблер, и про то, что кодеру еще и надо знать процессор.
А как только у меня появилось SDK, вот тогда-то я и попер!
Еще один бобёр попёр?
(Прошу прощения, у владельца ника, просто это уже становится нарицательным.)
Я где-то в лет 15 начал писать на API.
Объясни мне, бестолковому, как можно писать на API? Это же вроде бы интерфейс, а не язык программирования?
Кстати, какой API ты имел в виду?
Моими книгами по C++ были несколько корявых исходников-туториалов от какого-то WATCOM'овского компилятора.
Ага, чувствуется...
Но это тебе не помещало по ним познать Вселенную...
Мда... Про ассемблер это было тупо... Видно что никто из учавствующих в дискуссии не шарит в Асме.
Да куда уж нам... Кстати, ты о каком ассемблере толкуешь?
Может растолкуешь нам по-умному?
И еще... Я вот никак не пойму тех кто пишет на VB или Java, или еще чем подобном.
Трудности в общении?
Мне не понятно то, что многие пишут под MFC.
Ну так возьми их исходники или готовые продукты и посмотри, что они пишут.
Я не понимаю тех "программистов" которые хотят попроще.
Попроще что? Архитектура, интерфейсы?
Ты когда-нибудь слышал, что "все гениальное просто"? Ну это так, лерическое отступление.
Брызжут слюнями, что они пишут на C++, а сами MSDN не открывали не разу!
Ты, наверное, удивишься, но есть множество генеальных программистов в т.я. и на С++, которым MSDN нафиг не сдался, т.к. MSDN C++ не имеет никакого отншения к MSDN.
Потом я "узнал", что есть что-то более профессиональное, и перешел на Асм.
:D :D :D
Без комментариев...
Если вы не разбираетесь в Win32 API, не можете его использовать, значит вы вообще нихрена не понимаете в системе!
В какой системе? Солнечной?
Я думал людям свойственно хотеть быть лучше, профессиональнее, а они все больше и больше ООП'еют.
Что сказать... Отсутствие сомнений - прямой признак отсутствия знаний. (Ну нифига себе, сказанул. Запишу, пока не забыл... :)
Хотел бы заметить, что кое-кто тут с пеной у рта пытаеться разяснить что-то (не понятно что) не имея понятия (или имея, но совершенно изврашенное) как об ООП, так и о программировании в целом.
P.S. Что-то порядком поднадоели "неоперившиеся самородки" с наполеоновскими комплексами и навязчивым идеей мессии. Кстати, по-скромнее надо быть и сыпать фактами не из истории своего полового созревания, а по-существу.