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инструкция в комплекте
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;зачем человеку, желающиму изучать Си++, изучать Си? Чтобы еще один человек писал смесью Си и Си++? Не забывайте, что языки разные....Да кончено языки разные, но не вижу ничего плохого в изучении Си для начала. Думаю большинство именно так и поступает. Изучить Си, хотябы основы, а затем при переходе к Си++ почувствовать всю его мощь и гибкость.
Рекомендуемые сообщения
Пожалуйста, войдите, чтобы комментировать
Вы сможете оставить комментарий после входа в
Войти