Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > C/C++: Программирование под Unix/Linux > Потоки в C/++ |
Автор: mad123 12.5.2011, 17:21 |
Добрый день, скажу сразу что потоки вижу в первые, а очень нужно. Приведение слов к общему виду по определенным условиям. lib - pthread.h 1) Выполнить индивидуальное задание последовательным алгоритмом; 2) Выполнить индивидуальное задание параллельным алгоритмом (обязательно использовать для разграничения общих ресурсов системные объекты синхронизации); 3) Сделать анализ быстродействия последовательного и параллельного алгоритмов. |
Автор: rsm 12.5.2011, 17:26 |
http://openthreads.sourceforge.net/ - хорошая, годная С++'ая обертка вокруг pthread. Юзаю во многих проектах, проблем не наблюдал ![]() |
Автор: mad123 12.5.2011, 17:33 | ||
мне сказали - что это нужно сделать используя только "pthread.h" |
Автор: rsm 12.5.2011, 17:49 |
Код открыт - сделай по образу и подобию ![]() |
Автор: Alca 12.5.2011, 17:50 |
http://www.linuxdocs.org/HOWTOs/C++Programming-HOWTO-24.html http://publib.boulder.ibm.com/iseries/v5r2/ic2928/index.htm?info/apis/rzah4mst.htm http://www.yolinux.com/TUTORIALS/LinuxTutorialPosixThreads.html http://sites.google.com/site/informationnetworking/Home/posix-thread-programming http://www.scribd.com/doc/7366904/POSIX-Threads-Programming http://books.google.ru/books?id=_xvnuFzo7q0C&pg=PA184&lpg=PA184&dq=set+thread+priority+posix&source=bl&ots=Km6TYV23Ug&sig=-xicTb4p08LjJKbzjDw5rlHn7no&hl=ru&ei=HU41TYmNKsWt8Ab2lMisCQ&sa=X&oi=book_result&ct=result&resnum=2&ved=0CBoQ6AEwATge#v=onepage&q=set%20thread%20priority%20posix&f=false http://cs.pub.ro/~apc/2003/resources/pthreads/uguide/document.htm http://www.media.osaka-cu.ac.jp/~k-abe/PTL/ ![]() |
Автор: mad123 12.5.2011, 17:55 |
Помогите хоть что в задании нужно сделать. "Приведение слов к общему виду по определенным условиям." |
Автор: Alca 12.5.2011, 18:06 |
Походу ты ошибся разделом )) |
Автор: mad123 12.5.2011, 18:15 |
А какой мне раздел нужен? |
Автор: boostcoder 12.5.2011, 18:23 |
фриланс тебе нужен ;) |
Автор: rsm 12.5.2011, 20:54 |
Юзаю Thread, Mutex, Condition. Собственно, классов всего четыре, последний это Barrier. Вот его не юзал, не было подходящей задачи. http://forum.vingrad.ru/forum/Vingrad-help-center.html |
Автор: boostcoder 12.5.2011, 21:05 | ||
полазал я по хранилищу.. и вы знаете, обнаружил, что самый "новый" файл, редактировался -
к тому же, либка, полностью антипаттерная ;) т.е. я не могу юзать ее трэд или кондишн и свой мьютекс ![]() вы ее и правда юзаете? если да - скажите, _во_имя_чего_?! |
Автор: rsm 12.5.2011, 22:11 |
А разве в ней есть что-нибудь, что ещё можно было бы удалить? ![]() Без комментариев, т.к. не пробовал делать ничего подобного. Истинно говорю ![]() а) она предельно "прозрачная" и лёгкая в использовании; б) объём кода минимален, что весьма удобно когда нужна статическая линковка; в) и, главное, она просто работает ![]() |
Автор: sergioK1 13.5.2011, 08:52 | ||
Что она дает в сравнении со стандартными функциями, ?(кросплатфоры не в счет ) кроме того что "руками не модно" ? |
Автор: borisbn 13.5.2011, 09:03 |
очень "конкретное" задание - по определенным условиям... а вообще-то над этой задачей бьются не худшие умы Google, Yandex, etc. |
Автор: rsm 13.5.2011, 16:33 |
Не требует затрат времени на изобретение и отладку своего велосипеда с "новыми, передовыми" ® © m$ треугольными колесами ![]() |
Автор: boostcoder 13.5.2011, 16:48 |
для этого есть boost.thread. теперь уже std.thread ;) |
Автор: sergioK1 13.5.2011, 18:58 | ||
Про велосипед слышу лет 10 конкретный пример можно , на чистом С vs framework , |
Автор: rsm 13.5.2011, 22:11 | ||
Я уже по нику догадался, что этим всё и кончится... ![]()
Не понял вопроса. Мне скопипастить сюда исходники OpenThreads? |
Автор: sergioK1 14.5.2011, 11:29 | ||||
Да нет , Я счас подошел к этапу когда начинаешь задумываться , может лучше всего писать руками? в командной строке без всяких там добавок , которые якобы бы сокращают время разработки , Суть вопроса в следуещем, если слева написать реализацию на родном C , а справа при помощи фрэйворка и сравнить , размер кода больше а где выгода ? любой фраймворк вызывает СreateThread() где велосипед , по этой логике printf, malloc и т,д - тоже велосипед ![]() на С пишут только пенсионеры ?? ![]() |
Автор: borisbn 14.5.2011, 11:53 |
со времён царя гороха известно, что чем больше кода, тем больше вероятность ошибки. в нормальном framework'е потоки сделаны классами с одной абстрактной виртуальной ф-цией run или Execute. В деструкторе своего наследника принято вызывать ф-цию wait или WaitFor этого класса. Есть ф-ции потокобезопасной передачи данных для отрисовки в GUI... Да много ещё чего. Если ты напишешь свой велосипед (при условии, что ты будешь делать его не только для себя, а и для людей), то ты получишь то же самое. Тогда вопрос: зачем тратить своё время/силы/деньги ? |
Автор: sergioK1 14.5.2011, 14:01 | ||
тогда почему ни Виндус ни Линукс не пишут на С++ ? по крайне мере ядро |
Автор: borisbn 14.5.2011, 14:09 | ||
Сорри, не знал, что ты пишешь ядро Линукса. В этом случае - да, нелогично писать на фреймворках. It was a sarcasm, если чо |
Автор: sergioK1 14.5.2011, 14:19 | ||||
Я пишу на limited resource. для PC лучше фреймворк, для limited resource - нет, Свой будет быстрее и занимать меньше кода , даже на PC, ты точно знаешь что там есть , это просто мода cравни код в обоих случаях и покажи разницу , в любом случае - фрэйворк должен быть стандартным, |
Автор: boostcoder 14.5.2011, 14:53 |
мдя.. буст пока не стандарт. но все к тому идет ![]() Добавлено через 2 минуты и 23 секунды тебе не очевидно что с++ код предоставляет больше возможностей и безопасности? ;) или возьмешься доказывать обратное? примеры сравнения показать? |
Автор: sergioK1 14.5.2011, 16:47 | ||
[QUOTE=boostcoder,14.5.2011, 13:53]
Да знаю Я про это все общие слова, это скорей защита от дураков ![]() Если взять с код и поменять на сpp, и положить в нутрь класса безопасности не будет, если в этом классе граммотно обработать кртические моменты плюс грамотная структура классов ,то да это С++ лучше , зачем тебе непонятно какой-то фрейворк, который так и делает ,и еще делают много чего, но тебе это не нужно, неделю убьешь не его изучение, потом выйдет новая версия не факт что совместимая, если Ты сам себе эту безопастность можешь обеспечить потратив час-два, пусть даже день работы , при этом сэкономив память ,скорость и размер бинарника. в С++ достаточно подвохов, с индусами не приходилось работать ? |
Автор: borisbn 14.5.2011, 17:06 |
sergioK1, IMHO что писать на Java в микроконтроллер гигабитного маршрутизатора, что ваять на чистом Си интерфейсную программу даже на КПК (я не говорю уж о ПиСи) - дело неблагодарное. Поэтому в каждом отдельном случае нужно выбирать между и |
Автор: sergioK1 14.5.2011, 18:02 | ||
так а разве утверждал что на С надо писать GUI или роутэр на Жаве? ты сам завел про фрэймворк , сказав что писать на native - велосипед, не приведя при этом аргуметов,а лишь эмоции , С моей точки зрения пользовать какие попало фрейворки - не хорошо, либо пользовать стандард, либо самому писать, и релизовывать только то что нужно, есть еще вариант наследовать и перегружать, но с умом, |
Автор: boostcoder 14.5.2011, 18:08 | ||||||
т.е. это в твоем понимание весь с++ ? оО
у меня последний вопрос: тебе гадков скока? 13-14?
ну да.. не больше 13ти. дискуссия закончена. Добавлено через 2 минуты и 32 секунды а "работа", это то, чем ты занимаешься в кружке "умелые ручки" ? |
Автор: bsa 16.5.2011, 13:33 | ||
Да да. Помню я этот этап у себя - он начался сразу после написания cout << "Hello world!" << endl; на первом курсе института. Так как читать кучу книжек надо было, а лень и денег не было (я был студентом), да и интернет тогда был совсем другой и стоил других денег (кстати, у меня его не было, а тот что в институте был - 20 бит (именно бит) в секунду). Ведь значительно проще написать все самому! Ну что же там такого сложного?!? В итоге я кучу лет занимался велосипедостроительством на билдере. А потом мне открыли глаза на С++. И я изучил и шаблоны, и стандартную библиотеку, и буст... И понял, что я кучу лет просто потерял. |
Автор: fish9370 16.5.2011, 15:40 |
http://thread.gmane.org/gmane.comp.version-control.git/57643/focus=57918 - здесь я с Линусом согласен С++ и фрейвоки, ускоряют процес разработки, но это происходит за счет качества. Тогда уж лучше писать на Java или C#. Какой смысл от С++? PS boostcoder ты бы все-таки выражения выбирал, когда с людьми общаешься. Ведешь себя как быдло. |
Автор: Alca 16.5.2011, 15:53 | ||
Ну ты даешь ![]() Добавлено через 33 секунды Если скорость не критична, то можно и на жабе ваять |
Автор: boostcoder 16.5.2011, 16:23 | ||
![]() ёу! на основании чего можно было сделать такие выводы? ![]() ты жжешь! |
Автор: fish9370 16.5.2011, 16:27 | ||
на основании этого и не только.. |
Автор: boostcoder 16.5.2011, 16:45 |
ты реально жжешь на ровном месте ![]() |
Автор: fish9370 16.5.2011, 16:48 |
т.е. для тебя это норма? |
Автор: boostcoder 16.5.2011, 16:53 |
fish9370, тут предложение поступило.. тебе нужно срочно спрятаться от мира сего, в котором обитают такие как я. дабы не быть травмированной твоей нежной психике и самолюбию. Добавлено через 59 секунд что? видеть как кто-то реально жжет? да. насмотрелся. ты не один такой. |
Автор: Sahab 16.5.2011, 16:56 |
эмокодыры отакэ? |
Автор: fish9370 16.5.2011, 16:59 |
boostcoder, ну ты и быдло.. аста ла виста бейби.. PS можете банить меня.. |
Автор: boostcoder 16.5.2011, 17:02 |
не, Модераторы, не надо(да и не за что)! это же весело! |
Автор: bsa 16.5.2011, 22:06 | ||||
Так вот, это я к тому, что код на С++ ничуть не менее качественный, чем аналогичный на другом языке программирования. Просто иногда люди лишь только думают, что пишут на С++. И именно они создают тот самый код, за который все так критикуют С++. |
Автор: bsa 16.5.2011, 22:32 | ||||||
Под limited resource ты понимаешь микроконтроллер? Я пишу код под МК, я попробовал использовать С++ и Си. Код получался абсолютно одинаковым (правда, я не использовал шаблоны и std:: - задача довольно специфичная, поэтому стандартные вещи не нужны), хотя я использовал классы и пр. Но в итоге я выбрал С. Мне показалось, что те преимущества, что мне дает С++, не так значительны, как простота кода.
Рассмотрим простой пример безопасного мьютекса. У мьютекса существует два обязательных метода - захватить и освободить. В начала критической секции мы захватываем мьютекс, а в конце освобождаем. Но в случае, если у нас внутри критической секции происходит ветвление и выход из нее в нескольких местах, то необходимо в этих нескольких местах проставить освобождение мьютекса. Когда пишешь код ты можешь и не забыть, но при поддержке года через 2, эту фигульку ты можешь случайно и не заметить. Теперь делаем как умные люди еще класс Locker, конструктор которого захватывает указанный мьютекс, а деструктор освобождает. Теперь нам необходимо только создать в начале критической секции объект класса Locker и передать ему мьютекс. Как только мы выйдем из блока, то объект будет автоматически уничтожен, а мьютекс разлочен. Усложнения на уровне результирующего машинного кода никакого - компилятор просто подставит необходимые библиотечные вызовы для захвата/освобождения мьютекса в местах создания/уничтожения Locker'а. Никакой безопасности внутри этих классов нет! Они дают тебе безопасность за счет того, что ты не должен заморачиваться там, где заморачиваться не должен.
час-два на создание, день-два на отладку, месяц-другой на поиск глюков и портирование на другую ОС... Кстати, прежде чем писать свое, рекомендуется изучить чужое, дабы знать подводные камни и не наступать на известные грабли. Я уже написал, за все надо платить. Если не чувствуешь себя готовым к изучению нескольких тысяч страниц книжек, постоянному слежению за новостями и тенденциями в области развития этого языка и непрерывному самообучению, то тебе лучше найти другой язык - С++ не для тебя. |
Автор: fish9370 17.5.2011, 10:06 | ||||
я не против, выражения мнения, будь это boostcoder или кто-либо еще, мне не понравилась сама форма. Давай не будем больше об этом. по теме:
впринципе, Линус не говорит, что он не мощный, он даже восхищается библиотекой boost, но он критикует С++ и в частности boost, как раз за сложность. Где взять множество таланливых программистов и как проверить их качество? Если в комерческой организации такая возможность есть, на этапе приема на работу, то как это сделать в открытом проекте? Наверно одной из причин этого является то что в линуксе все еще так популярен C. И не с проста, в крупных проектах на С++ в "code style" (тот же google), ограничивают некоторые возможности С++ (это касается шаблонов, обработки исключений и много чего еще). что касается меня, я долго искал себя пробовал разные языки программирования и к 27 годам я понял, что я никуда не сдвинулся.. и я жалею, что не пришел в линукс раньше и не познакомился с ядром и с великолепным кодом Asterisk (кстати, я считаю, структуру этой программы нужно преподавать в университетах, это поистине шедевр).. и вот уже три года как я наслаждаюсь тем, что делаю и тем, что у меня получается.. мой код перестал глючить и он делает именно то что задуманно.. но я не категоричен, иногда от С++ отказываться нельзя, наверно у него есть своя ниша.. единственное приемущество С++ над С это скорость разработки.. но если это открытый проект и ты никуда не торопишься, лучше это сделать на С. |
Автор: bsa 17.5.2011, 10:44 |
Это не главное преимущество. Если ты владеешь языком, то ты и на С будешь создавать код с не меньшей скоростью. Другое дело, что на С++ ты допустишь меньше глупых ошибок из-за невнимательности. Но, только при том условии, что ты знаешь С++ и владеешь им. В противном случае, ты наделаешь кучу более серьезных ошибок - ошибок проектирования.Имхо, совершенно не важно на каком языке ты это делаешь. В коде ядра Linux MAKCim демонстрировал цикл организованный через if ... goto. В тоже время, есть проект, именуемый Qt, который тоже открыт и в него принимают код сообщества. Он написан на C++. И ничего, код из-за этого не ухудшается. Просто при работе с сообществом нужно следить и проверять то, что тебе предлагают. Возможно, в случае С это несколько проще. Но, думается мне, не это главное... |
Автор: fish9370 17.5.2011, 14:10 | ||
а можно и мне показать этот участок кода? очень интересно.. |
Автор: sergioK1 17.5.2011, 15:40 | ||||
это когда весь RAM- 300K например, что в твоем понимании знать С++ ? |
Автор: bsa 17.5.2011, 16:20 |
fish9370, не помню. Но код был точно в ядре. Писал его кажется китаец. Добавлено через 3 минуты и 11 секунд У моего МК ее 16 КБ. ![]() К сожалению, сформулировать не могу. Но есть подозрение, что даже я знаю его недостаточно. ![]() |
Автор: sergioK1 17.5.2011, 16:43 | ||
чем компилируешь ? |
Автор: reversecode 17.5.2011, 16:48 | ||
fish9370, как вы смешно говорите про линуз про астериск про с++ итд)) жаль что к 27 годам вы так и не освоили даже гугл ну что ж начнем с основ работы с гуглом набираете в строке поиска гугла
жмете поиск первую ссылку осилите открыть? ps boostcoder еще тот человек)) но его позиция понятна, он фанат буста |
Автор: borisbn 17.5.2011, 19:42 |
>набираете в строке поиска гугла Чувак, есть же http://ru.lmgtfy.com ![]() |
Автор: bsa 17.5.2011, 23:01 |
gcc |
Автор: sergioK1 17.5.2011, 23:50 | ||
Не можешь ты так сделать, не всегда работает это , а если работает на С++ то на С тоже , либо не там ни там , Деструктор ты должен вызывать явно, если есть гарбич коллектор то можно нет, но лучше да Обьест не уничтожиться - толька ссылка пропадет не важно С++ это или нет, Ты понятия не имеешь твоим процессом ситема сейчас займется или нет , P.S. выход из критической секции - признак плохого дизайна, читай Джешуа Блох, |
Автор: boostcoder 18.5.2011, 00:00 | ||
истеричный ![]() еще доказательства нужны? |
Автор: kemiisto 18.5.2011, 00:13 |
Мммм... Pure C vs True C++. Пойду-ка я, это, ![]() |
Автор: sergioK1 18.5.2011, 00:24 |
а С++ тоже gcc ??? ![]() |
Автор: svlary 18.5.2011, 05:35 |
Это утверждение вызывает у меня очень большие сомнения.... В самом деле, давайте вспомним, ради чего, собственно была затеяна вся эта суета с ООП вообще и С++ в частности ? Дело в том. что язык С (главным требованием при проектировании которого была ЭФФЕКТИВНОСТЬ реализации) обладает кучей принципиально неустранимых недостатков с точки зрения НАДЕЖНОСТИ. К примеру :
![]()
Я уж не говорю, что если в языке С, для выяснения назначения функции sin() достаточно набрать man 3 sin, то в языке С++, для выяснения назначения метода x.sin() необходимо перерыть ВЕСЬ ИСХОДНЫЙ КОД программы, что бы высянить, какого класса объект x и в каком именно уровне дерева классjв реализован метод sin()!!! За одно это следовало бы просто запретить использование языка С++ под страхом программирования всю оставшуюся жизнь на BASIC !!! ![]() Ну и так далее ... Я понимаю, что далеко не все со мной согласятся, но (IMHO) С++ - на редкость неудачная реализация на редкость неудачной идеи. Поясняю :
|
Автор: kemiisto 18.5.2011, 09:41 | ||||||
Тут надо всё же оговорить, что главным требованием была потенциальная возможность писать системное программное обеспечение под конкретное аппаратное обеспечение. То есть эффективность на конкретной аппаратной платформе.
Нет, так а такой задачи и не стояло.
Не было такой идеи. Была идея просто встроить ООП в сишечку для собственных нужд. А так, да, люто-бешено плюсую! ![]() |
Автор: fish9370 18.5.2011, 11:19 |
я не знаю сколько тебе лет, но ты читаешь не внимательно, не осилил даже мой пост.. из него ясно, что мне 30.. ![]() |
Автор: bsa 18.5.2011, 11:44 | ||||||||||||||
![]() ![]() Прежде чем читать про "дизайн", почитай про язык С++. Судя по твоим высказываниям ты его совершенно не знаешь. Типа "не читал, но осуждаю".
![]() |
Автор: xvr 18.5.2011, 12:08 | ||
Я тихо фигею над глубиной познаний предмета спора некоторыми его участниками ![]() |
Автор: sergioK1 18.5.2011, 12:26 | ||||||
[QUOTE=bsa,18.5.2011, 10:44]
АAAAA Я то понял про про new без delete. ![]() |
Автор: kemiisto 18.5.2011, 12:37 |
Что, правда? ![]() |
Автор: fish9370 18.5.2011, 12:43 | ||
1) Это конечно правда, но проблема решается локализацией. Есть API, есть отлаженое ядро программы, есть модули. Все разграничивается на довольно небольшие составные части.. Этот подход мне кажется наиболее удачным.. Этот подход используется в проектах Asterisk, Apache, PHP, всех не перечислишь.. В Си выходит довольно прозрачно, и в "user mode" отлаживается довольно быстро (субъективно).. Если добавить в критических местах некую функцию по типу ast_log(LOG_ERROR, "poll failed: %s\n", strerror(errno)), то поиски бага сокращаются многократно.. (вопросы синхранизации потоков не рассматриваю - это отдельный вопрос) 2) Использование 'c' и 'h' файлов оговаривается на уровне проекта. Т.е. еще на входе в проект первым делом вас тыкают в "Coding Style, Coding Guideline", где все четко прописано. Если ты сам инициатор проекта, то думаю начать нужно с этого. 3) Это я бы неряшливостью не назвал, скорее ньюансы. Из-за пары ньюансов списывать весь язык? А в каком языке их нет? 4) Это приводит к ошибочному использованию, только при плохой архитектуре.. Все нужно делать с умом.. Часто память выделяется локально, в стеке.. Cтандартные вызовы malloc, calloc, редко вызываются непосредственно, обычно их заворачивают в более умные структуры/функции.. |
Автор: reversecode 18.5.2011, 13:39 |
fish9370, ну простите великодушно) я не знал что к своим 30 годам вы кроме гугла еще и красоту С++ не поняли и рассказываете про какойто быдло код линукса и астериска, это просто смешно)) с++ замечательно можно использовать и в ядре, с оговорками но можно и яркие примеры это та же самая виндовс ос, в которой как минимум win32k.sys GUI многие части писаны на С++ некоторые драйвера в винде тоже на С++, и ничего)) а торвальдс видимо как и вы, с++ не очень понял так же удачный проект с++ в ядре есть пример отладчика syser ну итд я просто пролагаю вы вообще не поняли как и где правильно использовать с++ и отчаявшись к своим 27 или 30? годам сползли на быдло код С, и теперь рассказываете как это хорошо С в открытых проектах пойдите это расскажите тогда KDEешникам или Кутешникам, что им стоит переписать их проекты на чистый С ;))) kemiisto, ))) и не говори... как уже утомили эти холивары |
Автор: fish9370 18.5.2011, 14:10 |
ты не достоин моего прощения.. гений детектед ![]() |
Автор: maint 18.5.2011, 14:28 | ||
кретин научился писать две строчки да плюсах. И уже считает себя выше всех. Это бывает. Торговать в магазин менеджером пойдет. Дурь в уши людям сливать |
Автор: MAKCim 18.5.2011, 22:19 |
какой замечательный спор ни о чем ![]() сейчас работаю в команде над громадной системой, написанной на С++ кроме нас разработку ведут и другие команды, т. е. процесс разработки распределенный если бы там был С, воцарил бы хаос ![]() не в плане того, что С плох, а в том, что С++ более строг и заставляет придерживаться определенных правил склоняюсь к мнению, что для очень больших систем, разрабатываемых распределенно, С++ подходит больше |
Автор: fish9370 18.5.2011, 23:15 |
больше чем asterisk? |
Автор: reversecode 18.5.2011, 23:39 |
maint, еще! еще! больше жару! поругайте меня)) укажите мне какой я плохой разработчик или еще чего нибудь, а то скучно ) fish9370, хватит разводить здесь башогр))) астериск это проект выходнго дня если для вас астериск это большой проект, тогда вам еще лет 30 это как минимум надо работать в сфере программирования |
Автор: sergioK1 18.5.2011, 23:53 | ||
Java еще более строг , так что большие системы лучше писать на Java? Для больших систем нужна архитектура , а язык выбирают в зависимости от задачи , и вкусов програмистов, Есть вещи которые мне проще сделать на С чем на Java , или С++ есть наоборот, Кто-то может сказать все с тосностью наоборот, не потому что он лучше меня или хуже ,а потому что у каждого свой опыт ,привычки, видение и понимание системы и т,д, That's it, разговор ушел в никуда, что нормально для форумов, ![]() |
Автор: svlary 19.5.2011, 05:49 |
Разумеется! Чем и замечательна наша работа (программирование), что решить можно любую проблему ! Вопрос только - какой ценой... К примеру, по поводу 'c' и 'h' файлов.... Можно написать стандарт предприятия на предмет того, как и что и где писать, можно подробнейшим образом инструктировать всех принимаемых на работу, можно возложить на тестеров обязанность проверять соблюдение кодерами этого стандарта... Но, сравните это с тем, как данная проблема решается, к примеру, в языке Modula-2 : Любой программный модуль состоит из двух частей :
Аналогично можно сказать и про другие проблемы С, которые с радостным помахиванием хвостиком "обратная совместимость" дружно влились в С++. ![]() |
Автор: fish9370 19.5.2011, 10:20 |
svlary, к 30 годам, я четко определился, чем я хочу заниматься.. конечно же я не отступлюсь.. я безгранично верю в силу Си.. но мне интересно посмотреть на Modula-2, я обязательно ознакомлюсь с ним.. если он тебе так нравится, наверно в нем что-то есть.. |
Автор: sergioK1 19.5.2011, 10:28 | ||||
Я тоже , когда виже такое
очень легко читаемый код ![]() |
Автор: xvr 19.5.2011, 10:55 |
А я такого почему то не видел ![]() ![]() |
Автор: MAKCim 19.5.2011, 11:27 | ||
да
речь про С vs. C++ причем не про низкоуровневые системы типа ядра ОС |
Автор: fish9370 19.5.2011, 12:03 |
в астере, есть модуль chan_sip.c, в нем более 30 тысяч строк кода, у вас тоже есть такие файлы? или у вас проект растет в ширь, а не в глубину? так же было бы интересно узнать какую систему контроля версий вы используете? и какая среда разработки? так же интересно, что у вас получается на выходе, один большой файл или куча маленьких? какие вы используете библиотеки? и само-собой интересно на какую платформу вы ориентируетесь? |
Автор: MAKCim 19.5.2011, 14:51 | ||||||
за 30 тысяч убил бы ;) самый большой файл, который я видел у нас порядка 13к строк
IBM clearcase/clearquest eclipse в основном
много и не маленьких qt для gui linux |
Автор: fish9370 19.5.2011, 15:33 |
MAKCim, спасибо за ответы в астере таких модулей несколько, я сам их боюсь.. ) |
Автор: bsa 22.5.2011, 22:33 | ||
Паскаль видел? По сути тоже самое, да и автор тот же. На сколько я понял, есть еще более продвинутый язык - Oberon. Его в свое время активно kemiisto продвигал. Добавлено @ 22:33 И правильно делаешь. Имхо, гигантские файлы это признак дурного тона. Так как читать их ну просто нереально. Особенно, не имея возможностей мощных сред разработки по поиску функций |
Автор: fish9370 22.5.2011, 23:14 |
doxygen в астере в качестве документации.. |
Автор: bsa 23.5.2011, 16:17 |
плохой вариант. Если я хочу найти и исправить багу, то мне дока по хорошему не нужна. |
Автор: igsilya 23.5.2011, 19:38 |
Я в принципе не новичок, но сталкиваюсь с подобным впервые. Есть большой модуль в котором есть много глобальных переменных, чтоб от них избавится потребуется очень много времени и сил. Нужно использовать функцию из этого модуля в другой программе. Эта программа многопоточная (использую pthread) => глобальные переменные того модуля будут использоваться всеми потоками сразу(что нас не устраивает). Требуется, не отказываясь от потоков в пользу процессов, локализовать глобальные переменные того модуля для каждого потока.(каждому потоку по своему экземпляру). Надеюсь получилось описать проблему. Может кто сталкивался с подобным? Заранее спасибо. |
Автор: boostcoder 23.5.2011, 21:24 |
а чё вы тут столько мусолите? уже 6 страниц оО |
Автор: kemiisto 23.5.2011, 21:27 |
За что?! ![]() |
Автор: bsa 24.5.2011, 23:47 |
kemiisto, за то, что прочел первый раз неправильно. теперь всегда буду ошибки делать. Исправил. |