DVJ_MC_DOS Опубликовано 21 января, 2008 Жалоба Поделиться Опубликовано 21 января, 2008 С/С++ Вопросы и ответы () Описание: Обсуждайте люди Цитата Ссылка на комментарий
0xDEADBEEF Опубликовано 21 января, 2008 Жалоба Поделиться Опубликовано 21 января, 2008 Тема ппц информативная Ну раз уж так, давайте начнем священные войныВот что очень давно хотелось обсудить в круге иммено бурятских сишников:1. Отличие С от С++. Имеется ввиду не банальное наличие классов/перегрузок/шаблонов, а нечто более существенное: идиомы и средства.2. STL vs. велосипеды. Что же лучше?3. Целесообразность следованию современному пути развития языка (STL, Boost, etc) Цитата Ссылка на комментарий
popoff Опубликовано 24 января, 2008 Жалоба Поделиться Опубликовано 24 января, 2008 По поводу отличия C от C++они оба славятся олним и тем же - гибкостью. а классы/перегрузки/шаблоны с этой точки зрения - лишь надстройка. Для удобства и красоты.C, как инструмент, - это удобный карандаш, который можно хоть узлом завязать. Гибкий и ничего лишнего.C++ - это тот же карандаш, но со сменными стержнями, с резиночкой и кнопочкой "Вкл/Выкл".C# - модная ручка. прозрачная, с подсветкой и автоподогревом. Весьма отдаленно напоминает карандаш по форме и удобству.Pascal - стальной монолитный карандаш. Не пишет.Добавлено спустя 9 минут 40 секунд:К вопросу о велосипедах..Фабричный велик, конечно, новый, смазанный, проверенный и уже есть. Но своя развалюха как-то роднее.Да и вообще тут аналогия с веловипедом не совсем удачная. Если сдецтва не учился изобретать велосипеды, то никакой программист из тебя не получится. Будешь юзать всю жизнь STL - будешь индийским кодером) Хочешь научиться - сделай сам. А когда научишься сам, то можно не важно уже.Другое дело - сопровождаемость. Когда прога чужая, то понятно, что не нужно тратить время на поиск ошибок в стандартном векторе. Цитата Ссылка на комментарий
CooDi Опубликовано 24 января, 2008 Жалоба Поделиться Опубликовано 24 января, 2008 классы/перегрузки/шаблоны - это скорее необходимость, чем просто "удобство и красота" Цитата Ссылка на комментарий
0xDEADBEEF Опубликовано 24 января, 2008 Жалоба Поделиться Опубликовано 24 января, 2008 ...а классы/перегрузки/шаблоны с этой точки зрения - лишь надстройка. Для удобства и красоты. В чем же тогда заключается гибкость? Т.е. получается С++ это красиво обернутый С? Сомневаюсь.С++ ИМХО настолько популярен не из-за относительно красивой "оболочки", и не наличию ООП, а какраз за счет наличия мощного механизма обобщенного программирования.Если сдецтва не учился изобретать велосипеды, то никакой программист из тебя не получитсяВот с этим согласен, все должны знать как сделать велик, как он работае и как его использовать. Но вот только изобретать его каждый раз при необходимости, или же писать собственный навечно не имеет смысла. Нет никаких гарантий что ваш не окажется медлительным, ортогональным, с согласованным интерфейсом, а главное безошибочным.Будешь юзать всю жизнь STL - будешь индийским кодером)*60 Нет слов Цитата Ссылка на комментарий
popoff Опубликовано 24 января, 2008 Жалоба Поделиться Опубликовано 24 января, 2008 В чем же тогда заключается гибкость? Т.е. получается С++ это красиво обернутый С? Сомневаюсь.С++ ИМХО настолько популярен не из-за относительно красивой "оболочки", и не наличию ООП, а какраз за счет наличия мощного механизма обобщенного программирования.согласен. не совсем корректно выразился. я имел ввиду, что C++ не потерял в гибкости по сравнению с C.Хоть C и создавался для написания операционных систем, но в итоге получился удобный язык общего назначения. такойвот глобал пурпос, так сказать. Да. Гибкость и глобал пурпос.и вообще, тема сложная. есть не просто C и C++, но и история вопроса. Которая начинается на заре Unix.C вдвое старше меня, и подозреваю, что гуй его красивше чем мой. Дак что я могу про него сказать с точки зрения истории? Цитата Ссылка на комментарий
0xDEADBEEF Опубликовано 2 марта, 2008 Жалоба Поделиться Опубликовано 2 марта, 2008 Коллеги! Сишники! Давайте обмениватся опытомВыкладывате сюда итересные статьи, ссылки, может у кого есть полезные библиотеки и библиотечки - расскажите всем о них. Всё что так или иначе относится к языку, кодированию и проектированию всё сюда. Цитата Ссылка на комментарий
popoff Опубликовано 3 марта, 2008 Жалоба Поделиться Опубликовано 3 марта, 2008 Инклуда MULTI 2.6Написано мной. Используется для быстрого руления тредами. Заточен под Builder. Тоесть использует VCL библиотеки и распараллеливает функции типов:void __fastcall ( __closure * )( );void __fastcall ( __closure * )( void * );void __fastcall ( __closure * )( bool * );void __fastcall ( __closure * )( void *, bool * );Для тех кто не вкурсе - __fastcall это расширения языка, указывающее компилятору на возможность передачи параметров функции не через стек а через регистры.__closure - это указатель на метод класса. В отличие от предусмотренного стандартом С++ указателя на метод класса, __closure кроме самого адреса метод, хранит еще и адрес экземпляра класса и физически представляет собой структуру, состоящую из двух указателей: на экземпляр класса и на метод класса. Таким образом , __closure практически является указателем не просто метод класса, а на метод объекта (экземпляра) класса. Тоесть __closure указатель может уазывать на метод любого класса.Так же обеспечена синхронизация с VCL объектами. Тоесть внутри тред-функции можно безопасно обращаться к свойствам и методам VCL классов.В инклуде имеется класс Multi, методами которого реализуются следующие возможности:- Запуск функции в треде- Запуск функции в треде после произвольного семафора- Запуск функции в треде и установка произвольного семафора после окончания функции- Запуск последовательности функций в треде- Собственно прерывание всего этогоинтересует? Цитата Ссылка на комментарий
0xDEADBEEF Опубликовано 3 марта, 2008 Жалоба Поделиться Опубликовано 3 марта, 2008 Ага выкладывай. И сразу вопрос вперед: можно ли с помощью этой тулзы в качестве функции потока использовать виртуальную функцию класса без потери полиморфизма и со всеми вытекающими из этого приемуществами? Цитата Ссылка на комментарий
popoff Опубликовано 3 марта, 2008 Жалоба Поделиться Опубликовано 3 марта, 2008 Ага выкладывай. И сразу вопрос вперед: можно ли с помощью этой тулзы в качестве функции потока использовать виртуальную функцию класса без потери полиморфизма и со всеми вытекающими из этого приемуществами?проверил. да можно. динамический полиморфизм сохраняется. лишь бы функция была помечена __fastcall и была членом класса.щас выложу на фтп, дам ссылку. а главное - напишу как пользоваться. Цитата Ссылка на комментарий
popoff Опубликовано 3 марта, 2008 Жалоба Поделиться Опубликовано 3 марта, 2008 ftp://ftp.burnet.ru/incoming/users/popoff/MULTI_2.6.rarинструкция в комплекте Цитата Ссылка на комментарий
-makos- Опубликовано 7 марта, 2008 Жалоба Поделиться Опубликовано 7 марта, 2008 popoffСпасибо Цитата Ссылка на комментарий
0xDEADBEEF Опубликовано 17 апреля, 2008 Жалоба Поделиться Опубликовано 17 апреля, 2008 В одном из многочисленных споров о том, что лучше Delphi или C++ возникла мысль, что в C++ нету propertys как в Delphi . Конечно же это далеко не минус, и миллионы сишников да джавистов по всему миру юзают функции-аксессоры и нисколько от этого не седеют. В последствии некто Albert Braga предложил некоторую идею по реализации этой фишки в виде шаблона.Итак, посмотрим что из этого вышло.Идея состоит в том, чтоб использовать шаблон класса, параметризуемый типом "свойства", а также хранящий в себе аксессоры.В последствии пришлось хранить ещё указатьель на класс, т.к. при вызове функции-члена его нада явно указывать.class property{public: //определение типов для аксессоров typedef Type (Cls::*getter_t) (); typedef void (Cls::*setter_t) (Type); //конструкторы property(Cls *c, getter_t g):get(g), cls(c) {} property(Cls *c, setter_t s):set(s), cls(c) {} property(Cls *c, getter_t g, setter_t s):cls(c), get(g), set(s) {} //копирующий конструктор property(const property& other) { get = other.get; set = other.set; } /* * оператор присваивания * используется в случае * SomeObject.someProperty = SomeValue; */ property& operator = (const Type& t) { (cls->*set)(t); return (*this); } /* * оператор копирующего присваивания * используется в случае * SomeObject.someProperty = OtherObject.otherProperty */ property& operator = (const property& o){ get = o.get; set = o.set; } /* * оператор неявного преобразования * используется в случае * someValue = SomeObject.someProperty */ operator Type(){ return ((cls->*get)()); }private: //конструкто по умолчанию сктрыт, т.к. не может быть свойства без аксессоров property(){ } Cls *cls; getter_t get; setter_t set;};template А использовать этот ухос так:#include using std::cout;using std::endl;class test{public: test(): val(property(this, &test::getVal, &test::setVal)), v(12) { }; property val;private: int getVal(){ return v; } void setVal(int i){ v = i; } int v;};int main(void) { test t; cout < t.val = 23; cout < return 0;}Всё хорошо, но вот только инициализация мягко говоря геморная. Есть идея использовать std::mem_fun_ptr или даже boost::bind вместо голых указателей, что теоретически должно упростить клиентам класса его использование.ЗЫ У кого какие идеи может, чтоб улучшить юзабельность? Цитата Ссылка на комментарий
0xDEADBEEF Опубликовано 5 мая, 2008 Жалоба Поделиться Опубликовано 5 мая, 2008 Народ, давайте качать С++ вместе! http://blogs.ulanovka.ru/0xDEADBEEF/ Цитата Ссылка на комментарий
M@K_Afferti Опубликовано 18 мая, 2008 Жалоба Поделиться Опубликовано 18 мая, 2008 Помогите пожалуйста решить лабы по с++ желательно в borland c++ for dosЗа помощь дам РЕПКИ. Пожалуйста *491.) (Алгоритмизация линейных вычислительных процессов) Определить прибыль от реализации определенного количества некоторого изделия, если известны себестоимость и цена единицы изделия.2.) (Условные операторы) Можно ли на прямоугольном участке застройки размером ab метров разместить два дома размером в плане pq, rs метров? Дома можно располагать только параллельно сторонам участка.3.) (Операторы цикла.) Поменять местами значения целых переменных x и y, не используя дополнительные переменные.4.) (Массивы целых чисел. Матрицы.) Написать программу транспонирования матрицы.5.) (Символьные массивы. Строки.) Дана последовательность, содержащая от 1 до 30 слов, в каждом из которых от 1 до 5 строчных латинских букв; между соседними словами - запятая, за последним словом - точка. Напечатать: а) эту же последовательность слов, но в обратном порядке; б) эту же последовательность слов, но удалив из нее повторные вхождения слов; Цитата Ссылка на комментарий
popoff Опубликовано 19 мая, 2008 Жалоба Поделиться Опубликовано 19 мая, 2008 Помогите пожалуйста решить лабы по с++ ...так и скажи "напишите за меня". а помогите - это когда что-то конкретно непонятно.делать чтото за когото неинтересно. помочь - можно. Цитата Ссылка на комментарий
M@K_Afferti Опубликовано 19 мая, 2008 Жалоба Поделиться Опубликовано 19 мая, 2008 Ладно popoff помоги пожалуйста ну если не просто так, то что могу предложить тебе за помощь?. . . Если что пиши в личку. Цитата Ссылка на комментарий
genemy Опубликовано 19 мая, 2008 Жалоба Поделиться Опубликовано 19 мая, 2008 3) не понятно при чем тут циклыx = 10;y = 15;x += y; // x == 25y = x - y; // y == 10;x -= y; // x == 15; Цитата Ссылка на комментарий
Rowdy Опубликовано 21 июля, 2008 Жалоба Поделиться Опубликовано 21 июля, 2008 Люди помогите дайте пжалуста ссылки на С++ и нада бы самообучалки к нему, спс заранее Цитата Ссылка на комментарий
CooDi Опубликовано 21 июля, 2008 Жалоба Поделиться Опубликовано 21 июля, 2008 Rowdyв раздачах посмотри - есть http://ulanovka.ru/forum/viewtopic.php?t=35547ps Самообучалки - это типа ты спишь, а они сами тебе в мозк всё вколачивают?? *60 Цитата Ссылка на комментарий
Rowdy Опубликовано 22 июля, 2008 Жалоба Поделиться Опубликовано 22 июля, 2008 Да не))...всмысле книжки наз-ся "самоучитель по С++" ну примерно с такими названиями видел книжки-обучалки Цитата Ссылка на комментарий
legion Опубликовано 21 августа, 2008 Жалоба Поделиться Опубликовано 21 августа, 2008 для начала обычный си изучи, для начала лучше найти литературу из какого-нибудь вуза, там все понятно, кратко, с примерами и задачами. Цитата Ссылка на комментарий
Lakers Опубликовано 27 сентября, 2008 Жалоба Поделиться Опубликовано 27 сентября, 2008 блин давно задача 3 была.но просто написать охота обмен местами двух переменных без использования третий так вот:x=x^y;y=x^y;x=x^y;мне такой алгоритм нравится пц. и работает быстро))) Цитата Ссылка на комментарий
The_Ice Опубликовано 28 сентября, 2008 Жалоба Поделиться Опубликовано 28 сентября, 2008 для начала обычный си изучи, для начала лучше найти литературу из какого-нибудь вуза, там все понятно, кратко, с примерами и задачами.зачем человеку, желающиму изучать Си++, изучать Си? Чтобы еще один человек писал смесью Си и Си++? Не забывайте, что языки разные.... Цитата Ссылка на комментарий
MustDie Опубликовано 28 сентября, 2008 Жалоба Поделиться Опубликовано 28 сентября, 2008 блин давно задача 3 была.но просто написать охота обмен местами двух переменных без использования третий так вот:x=x^y;y=x^y;x=x^y;мне такой алгоритм нравится пц. и работает быстро)))ну вот тогда тебе еще один способ: x=x+y; y=x-y; x=x-y;зачем человеку, желающиму изучать Си++, изучать Си? Чтобы еще один человек писал смесью Си и Си++? Не забывайте, что языки разные....Да кончено языки разные, но не вижу ничего плохого в изучении Си для начала. Думаю большинство именно так и поступает. Изучить Си, хотябы основы, а затем при переходе к Си++ почувствовать всю его мощь и гибкость. Цитата Ссылка на комментарий
Рекомендуемые сообщения
Присоединяйтесь к обсуждению
Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.