На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
! Правила раздела:
1. Название темы - краткое описание кто/что против кого/чего
2. В первом сообщении - список параметров, по которым идет сравнение.
3. Старайтесь аргументировать свои высказывания. Фразы типа "Венда/Слюникс - ацтой" считаются флудом.
4. Давайте жить дружно и не доводить обсуждение до маразма и личных оскорблений.
Модераторы: Модераторы, Комодераторы
Страницы: (50) « Первая ... 47 48 [49] 50   ( Перейти к последнему сообщению )  
> Холивар вокруг C/C++ кода
    Цитата Катенька @
    Очередная защита переносимости кода в с++ от наших с тобой друзей ;)

    Кать, от кого защищаться то? :) Еще раз говорю (для тех, кто в танке) - я своими собственными глазами видел репозитории кроссплатформенного (как в плане аппаратуры, так и ОС) кода на много-много тысяч строк на С++. И сам такой код писал и поддерживал. По этому мне ни от кого защищаться нет необходимости. А вот от вас с AndNot пока слышим только заявления либо о невозможности написания переносимого кода, либо о существовании неких HLA, которые такую переносимость якобы обеспечивают. По поводу последнего - покажите мне хотя бы один более-менее объемный (ну хобя-бы 100-200 килосрток) кроссплатформенный проект, писанный полностью на HLA.

    На счет производительности - оптимизация (если в этом есть необходимость) выполняется для каждой платформы в отдельности. Такое тоже возможно.

    Добавлено
    Цитата Катенька @
    Windows vs Linux - Как десктоп

    Кать, а что именно мы там должны были увидеть?
      Цитата
      По поводу последнего - покажите мне хотя бы один более-менее объемный (ну хобя-бы 100-200 килосрток) кроссплатформенный проект, писанный полностью на HLA.


      Вы первый для мака мне покажите :)

      Добавлено
      Покажите мне код, который будет компилироваться для мака и для виндовс не изменяя ни одной строчки, тогда поверю в кроссплатформенность на с++.
        Цитата Катенька @
        Покажите мне код, который будет компилироваться для мака и для виндовс не изменяя ни одной строчки, тогда поверю в кроссплатформенность на с++.

        Меняю кросплатформенный код на МАК :)
        Вмысле ты мне МАК, а я тебе код 8-)
          Цитата Катенька @
          Покажите мне код, который будет компилироваться для мака и для виндовс не изменяя ни одной строчки, тогда поверю в кроссплатформенность на с++.

          Trolltech QT
            Flex Ferrum, а можно по прямее ссылку :) , а то что-то своей архитектуры там не нахожу :blink:
              Цитата Катенька @
              Flex Ferrum, а можно по прямее ссылку :) , а то что-то своей архитектуры там не нахожу :blink:

              http://trolltech.com/developer/downloads/qt/mac

              Добавлено
              Выбираешь любое из зеркал.
                как будет писюк под рукой, попробую.

                Добавлено
                Flex Ferrum, спасибо :)

                Добавлено
                wind
                Цитата
                Там речь о реализации локального обмена данными через сокеты в unix, к теме обсуждения имеющая весьма опосредованное отношение.
                почему :unsure:
                  Цитата Катенька @
                  Цитата
                  Там речь о реализации локального обмена данными через сокеты в unix, к теме обсуждения имеющая весьма опосредованное отношение.
                  почему :unsure:

                  А потому что к АПИ как таковому это не имеет отношение. Это детали реализации самого стека.
                    Цитата archimed7592 @
                    Используя в качестве абстракции драйвер самого ps/2 порта можно написать абсолютно кроссплатформенный драйвер мыши.
                    Не уверен, что получится. Прямое взаимодействие с драйверами в разных системах реализовано по разному, так что абстрагироваться не получится ;) Можно через прослойку: драйвер->система->системо-зависимая библиотека->программа. Но это уже куча посредников, простейший вызов функции драйвера будет происходить через тонны кода. Простой пример: даже используя АПИ винды, простейшее чтение данных с СОМ-порта обходится в несколько тысяч тактов, при том, что собственно драйвер затрачивает несколько тактов, остальное - накладки посредников. А абстрагируясь от АПИ, с помощью либ, ты увеличиваешь длительность затрат еще на несколько тысяч тактов. Да, на современных тачках это не заметно, пока комп не загружен до предела, но после - начинаешь поминать создателей этой системы нехорошими словами.
                    Цитата archimed7592 @
                    Ладно, под ps/2 бывают только мыши с клавами
                    Кстати портировал я дрова PS/2, от винды, в ДОС. Точнее взял от туда саму работу с железом, поскольку больше негде было узнать, как работать с wheel-мышками(они только появились). Так могу только выругаться, сколько там кода лишнего <_< А все потому, что Си не очень удачно подходит для низкоуровневых дров, хотя тот драйвер можно было переделать под другую систему, но только теоретически, поскольку взаимодействие драйвера и системы везде разное, а в нем оно было прошито довольно жестко, разбросано по всему коду(особенности ЯВУ). Так стоит ли из-за мнимой портабельности писать такой ужас?
                    Цитата archimed7592 @
                    Как же это библиотекам QtNetwork, wxNet, Boost.Asio, libcurl, libwww и многим другим удаётся работать под несколькими платформами
                    archimed7592, это не язык С++, это сторонние либы. А небыло бы их? Тогда как выкручивался бы? Но опять же, у тебя прямая зависимость от этих либ. Ну не посчитают их создатели нужным включить поддержку линукса, и ты хоть застрелись - ну ничего не поделаешь :tong: И опять же. А сами то либы как пишутся? Отдельно, под каждую систему. В них присутствует код для каждой поддерживаемой системы. И это и есть кроссплатформенность? А что бы ты делал без них?
                    Цитата archimed7592 @
                    Вот скажи мне, в чём принципиальная разница между сокетом под виндой и сокетом под линухом?
                    В методах работы с ними. Они очень сильно отличаются. Винда изначально поддерживала юниксовскую модель взаимодействия с сокетами. Но в силу внутренних различий эта модель оказалась очень неудачной, для винды. Поэтому были внедрены свои, чисто виндозные модели (WSAEvent Select, Overlapped (events), Overlapped (completion port)), которые наиболее удобны и производительны именно под виндой, особенно Overlapped (completion port). Но в никсах все осталось как и прежде, та же простенькая модель взаимодействия, довольно эффективная для них.
                    Цитата Flex Ferrum @
                    Ну, наверное - сихронно. Либо через WSASelect... На событиях свет клином не сошелся...
                    А это и есть плата за кроссплатформенность. Данные модели, по пропускной способности, под виндой, отстают от Overlapped (completion port) в десятки, если не сотни, раз. К тому же синхронная модель - мягко говоря немного неудобна.
                    Цитата Flex Ferrum @
                    По поводу последнего - покажите мне хотя бы один более-менее объемный (ну хобя-бы 100-200 килосрток) кроссплатформенный проект, писанный полностью на HLA.
                    Во первых, я им не пользуюсь, это был лишь пример. А во вторых, чисто ради интереса, а ты всегда очениваешь код по количеству строк? :whistle:
                      Цитата AndNot @
                      А это и есть плата за кроссплатформенность. Данные модели, по пропускной способности, под виндой, отстают от Overlapped (completion port) в десятки, если не сотни, раз. К тому же синхронная модель - мягко говоря немного неудобна.

                      AndNot, вот если примененное кроссплатформенное решение не будет устраивать по производительности - тогда (и только тогда) будут применены средства, специфичные для конкретной платформы. Но не раньше. Предварительная оптимизация - корень всех зол.

                      Цитата AndNot @
                      Во первых, я им не пользуюсь, это был лишь пример. А во вторых, чисто ради интереса, а ты всегда очениваешь код по количеству строк? :whistle:

                      Нет не всегда. Но в ряде случаев (и в этом - тоже) это вполне допустимая оценка.

                      Цитата AndNot @
                      archimed7592, это не язык С++, это сторонние либы. А небыло бы их? Тогда как выкручивался бы?

                      Три-четыре класса на С++, и всех делов то... :)
                        Цитата Flex Ferrum @
                        Нет не всегда. Но в ряде случаев (и в этом - тоже) это вполне допустимая оценка.
                        А как подобное оченивать? Тоже по количеству строк? ;)

                        Добавлено
                        Цитата Flex Ferrum @
                        Три-четыре класса на С++, и всех делов то...
                        Но для этого тебе придется знать те платформы, под которые ты пишешь ;)
                        Прикреплённый файлПрикреплённый файлemulmmx.rar (9.09 Кбайт, скачиваний: 107)
                          Цитата AndNot @
                          А небыло бы их?

                          А не было бы API, как бы ты пикселы на экране рисовал? ;)
                          Не аргумент, короче :).


                          Цитата AndNot @
                          Не уверен, что получится.

                          Ассемблерщик, ты когда-нибудь пробовал фантазировать? :)


                          Цитата AndNot @
                          В методах работы с ними.

                          Вот они, золотые слова :). А ты не задумывался, что разные методы распития алкогольных нпитков не делают из них(напитков) что-то принципиально другое?


                          Цитата AndNot @
                          А во вторых, чисто ради интереса, а ты всегда очениваешь код по количеству строк? :whistle:

                          Видишь ли, когда кол-во строк "немного" возрастает, то для его поддержки нужны львиные усилия, а когда он ещё и на ассемблере - лучше застрелиться(IMHO).

                          Добавлено
                          Цитата Катенька @
                          Покажите мне код, который будет компилироваться для мака и для виндовс не изменяя ни одной строчки, тогда поверю в кроссплатформенность на с++.

                          ExpandedWrap disabled
                            #include <ostream>
                            #include <iostream>
                             
                            int main()
                            {
                                std::cout << "Hello world!" << std::endl;
                            }
                            Цитата Flex Ferrum @
                            AndNot, вот если примененное кроссплатформенное решение не будет устраивать по производительности - тогда (и только тогда) будут применены средства, специфичные для конкретной платформы. Но не раньше.
                            А как же "запас прочности"? Или профи этим пренебрегают? :whistle: Так что важнее, заложить в программу максимум оптимального кода, чтобы в дальнейшем сократить модификацию, или побыстрее сдать проект, рискуя в скором времени капитально его переделывать(если окажется не таким каким планировали)?
                            Не спорю. Порой теряю много времени, стараясь создать такой модуль, чтобы больше никогда не изменять его, а это далеко не всегда легко, угробишь уйму времени, пока продумаешь его интерфейс, задачи и собственно реализацию :)
                            Цитата archimed7592 @
                            А ты не задумывался, что разные методы распития алкогольных нпитков не делают из них(напитков) что-то принципиально другое?
                            Еще как делают ;) В зависимости от способов потребления, порядка очередности, набора, etc. можно получать очень разнообразные эффекты :D А уж результате тем более будут разными - начиная от катаний, по асфальту, на коньках и заканчивая походом в ментовку(впрочем чаще откупаешься) ;)
                            Цитата archimed7592 @
                            Цитата (AndNot @ Сегодня, 15:03)
                            А небыло бы их?

                            А не было бы API, как бы ты пикселы на экране рисовал?
                            Рисовал ;) Или ты думаешь, что это невозможно? :blink: Но я вообще то про либы говорил ;) АПИ никаким боком не тянет на кроссплатформенность.
                            Вообще я все это клоню к тому, что кроссплатформенность языков очень ограничена (в пределах 'Hello World'). Ее обеспечивают либы, которые, зачастую, не входят в стандартный набор языка. Именно они позволяют абстрагироваться от конкретной платформы. Но сами они строятся из набора одинаковых функций, по одной на поддерживаемую платформу. Естественно я все упростил, но в общих чертах так оно и есть. Так о какой кроссплатформенности языка идет речь, если под каждую платформу нужны свои функции, не входящие в стандарт языка? Или под ней понимается возможность компилятора собирать код под любые платформы?
                              Цитата AndNot @
                              А как же "запас прочности"?

                              Запас прочности можно получить и на высокоуровневых оптимизациях(и те делать нужно только после того, когда в них появилась острая необходимость).

                              Цитата AndNot @
                              Так что важнее

                              Важнее затратить на проект минимум ресурсов. Ресуры бывают(в порядке убывания "ценности" ресурса):
                              1. Время
                              2. Деньги

                              Цитата AndNot @
                              Еще как делают ;)

                              Госоподи боже. Ладно, что такое сокет? Двунаправленная труба по которой течёт информация. Что ещё нужно для сетевой программы?

                              Цитата AndNot @
                              Или ты думаешь, что это невозможно? :blink:

                              Ни в коем случае.

                              Цитата AndNot @
                              Но я вообще то про либы говорил ;) АПИ никаким боком не тянет на кроссплатформенность.

                              Я лишь хотел обратить внимание на то, что без готовых либ/АПИ/чего-нибудь прикладные программы соответствующего уровня не пишут(вне зависимости от языка).

                              Цитата AndNot @
                              Или под ней понимается возможность компилятора собирать код под любые платформы?

                              Под ней понимается возможность написать программу, работающую везде("много где") и одинакого. На ассемблере такое невозможно в принципе(я говорю именно про язык ассемблера).
                                Цитата AndNot @
                                А как же "запас прочности"? Или профи этим пренебрегают? :whistle:

                                Профи еще при проектировании системы определяют такие параметры, как "рабочая" и "пиковая" нагрузка на систему. И исходя из этого проектируют и разрабатывают.

                                Цитата AndNot @
                                Вообще я все это клоню к тому, что кроссплатформенность языков очень ограничена (в пределах 'Hello World'). Ее обеспечивают либы, которые, зачастую, не входят в стандартный набор языка.

                                Ты никогда не задумывался о смысле словосочетания "стандартная библиотека"? :) Она, видимо, на то и стандартная, чтобы платформы, соответствующие этому стандарту, эту библиотеку предоставляли. Это касается как CRTL, так и, например, POSIX. По этому говорить "а вдруг ее там не будет" - это, гм... Не будет - ну и нафиг такую платформу. Либо заказчик выкладывает очень круглую сумму за то, чтобы программа на такой "специфической" платформе заработала. Но это уже совсем другая история.
                                0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
                                0 пользователей:
                                Страницы: (50) « Первая ... 47 48 [49] 50 


                                Рейтинг@Mail.ru
                                [ Script execution time: 0,0958 ]   [ 15 queries used ]   [ Generated: 8.05.24, 15:00 GMT ]