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