На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
! Правила раздела:
1. Название темы - краткое описание кто/что против кого/чего
2. В первом сообщении - список параметров, по которым идет сравнение.
3. Старайтесь аргументировать свои высказывания. Фразы типа "Венда/Слюникс - ацтой" считаются флудом.
4. Давайте жить дружно и не доводить обсуждение до маразма и личных оскорблений.
Модераторы: Модераторы, Комодераторы
Страницы: (495) « Первая ... 379 380 [381] 382 383 ...  494 495  ( Перейти к последнему сообщению )  
> Delphi vs C++ vs C# , ну и Java немножко, где-то ближе к старшему байту номеров страниц
    Цитата KILLER @
    код прошел ревью.

    Никакого ревью он не проходил :lol: Я вообще не смотрел, как ты инициализируешь строку.

    Цитата
    Проблема не в этом, проблема в том, что вектор так и просится чтобы его рассматривали именно как массив данных, а не строки. Понимаешь к чему я клоню?

    Так и С-строки ты будешь рассматривать точно так же.
    Моя твоя не понимать, ты рассуждаешь так, будь-то у тебя С и С++ в коде разбросаны произвольным образом и никаких подсистем разного уровня и, соответственно, стыков между ними...

    Цитата
    Ничего не напоминает?

    Я когда-то отрицал это? Или тебе напомнить "лисповые" холивары, где я был скорее против С++?

    Добавлено
    Цитата KILLER @
    Мы тут рассматриваем недостатки ЯП, или обсуждаем что мне стоит использовать, а что не стоит?

    Нельзя рассматривать "недостатки" без учета сферы применения :)
      Цитата MyNameIsIgor @
      Он хочет, чтобы плюсовые строки могли быть буферами в сишном API. Я не только не представляю как это сделать... я просто чушью считаю :)

      Я вообще то много чего хочу, это к теме отношения не имеет, так же как и WIN API, а ктому все это было, что при наличии кучи классов для работы со строками, с ними работать неудобно. Приходится извращатся в прямом смысле этого слова. То что выше понаписано - это костыли и извращения, которые приходится применять потому, что по другому никак :-?
        Цитата KILLER @
        с ними работать неудобно.

        Ты своими примерами пока этого не показал.
          Цитата D_KEY @
          Никакого ревью он не проходил :lol: Я вообще не смотрел, как ты инициализируешь строку.

          Цитата D_KEY @
          Цитата
          ?


          Можно и так, только
          ExpandedWrap disabled
                  std::string outStr(&vec[0]);

          М.б. ты и код не смотрел, который я привел?

          Цитата D_KEY @
          Так и С-строки ты будешь рассматривать точно так же.

          Ты понимаешь что работа в данном случае будет одностилевая? Т.е. я работаю с указателем char* как со строкой, принимая во внимае что у меня конец строки '\0'.
          Когда идут пляски с бубном и юзается std::string как строка, std::vector - как промежуточный костыль, для того чтобы изменить эту строку с помощью функции trim(char*); очень легко запутаца во всем этом бреде.

          Цитата D_KEY @
          Я когда-то отрицал это? Или тебе напомнить "лисповые" холивары, где я был скорее против С++?

          И ты считаешь это достоинством?

          Цитата D_KEY @
          Нельзя рассматривать "недостатки" без учета сферы применения :)

          Ну так сферу применения я привел, разве нет?
            Цитата KILLER @
            То что выше понаписано - это костыли и извращения

            Что именно? Использование векторов как буферов для низкоуровневого API?
            Это вообще один из его use-case'ов. Чтобы людям не приходилось юзать обычные массивы для динамических буферов, даже если им приходится работать с C-API.

            Цитата
            которые приходится применять потому, что по другому никак :-?

            Хорошо, я прошу по-другому. А как бы ты хотел организовать работу из С++ с C-API?
              Цитата D_KEY @
              Ты своими примерами пока этого не показал.

              Ну как же не показал? Ты мне сам привел кашу из std::string - чисто рассово С++ строки + std::vector<char> - вообще массив данных + char* - С-строки... Это три разных типа строк только в одном месте :o Это ли удобство?

              Добавлено
              Цитата D_KEY @
              Что именно? Использование векторов как буферов для низкоуровневого API?
              Это вообще один из его use-case'ов. Чтобы людям не приходилось юзать обычные массивы для динамических буферов, даже если им приходится работать с C-API.

              Да хотя бы.

              Цитата D_KEY @
              Хорошо, я прошу по-другому. А как бы ты хотел организовать работу из С++ с C-API?

              При текущей реализации, понятия не имею... Ну хотя бы как вариант, сделали бы std::string по подобию вектора, а также реализовали бы c_str() который давал бы доступ к С-строке для изменения(как например это делает std::vector), либо же по примеру метода release у auto_ptr ...
              Сообщение отредактировано: KILLER -
                KILLER, тебе никогда не приходило в голову, что системное API выставляет свои требования к типам безотносительно к таковым из любого языка программирования? Именно поэтому, на чём бы ты не писал -- первым делом надо локализировать все обращения к системе в обёртках, которые уже будут работать в системе типов и окружении языка. Блин, вообще проблем таких не бывает, что ты описываешь. API -- то ж библиотеки с высоким уровнем доверия. Блин, даже на встраиваемых системах, где общение с системой очень плотное, обёртки пишутся раз, тестятся и потом в них никто никогда не лезет.
                Сообщение отредактировано: Повстанець -
                  Цитата KILLER @
                  М.б. ты и код не смотрел, который я привел?

                  Я посмотрел, как ты передаешь вектор в функцию и как получаешь итоговую строку. Именно это относится к обсуждению.

                  Цитата
                  Ты понимаешь что работа в данном случае будет одностилевая? Т.е. я работаю с указателем char* как со строкой, принимая во внимае что у меня конец строки '\0'.
                  Когда идут пляски с бубном и юзается std::string как строка, std::vector - как промежуточный костыль, для того чтобы изменить эту строку с помощью функции trim(char*); очень легко запутаца во всем этом бреде.

                  Так ты используй буфер для связи с C API, а не в высокоуровневом коде.

                  Цитата
                  И ты считаешь это достоинством?

                  Я считаю, что совместимый с С системный язык другим вряд ли может быть :)
                    Цитата Повстанець @
                    KILLER, тебе никогда не приходило в голову, что системное API выставляет свои требования к типам безотносительно к таковым из любого языка программирования? Именно поэтому, на чём бы ты не писал -- первым делом надо локализировать все обращения к системе в обёртках, которые уже будут работать в системе типов и окружении языка. Блин, вообще проблем таких не бывает, что ты описываешь. API -- то ж библиотеки с высоким уровнем доверия. Блин, даже на встраиваемых системах, где на общение с системой очень плотное, обёртки пишутся раз, тестятся и потом в них никто никогда не лезет.

                    Одно дело когда это системное API, другое дело, когда это не системное API, и человек его писавший, не постиг дао STL, юзал обычные голые указатели...

                    Добавлено
                    Цитата D_KEY @
                    Я посмотрел, как ты передаешь вектор в функцию и как получаешь итоговую строку. Именно это относится к обсуждению.

                    научи меня из 4 строчек кода, видеть вторые две, и абсолютно не видеть первые две :D

                    Цитата D_KEY @
                    Так ты используй буфер для связи с C API, а не в высокоуровневом коде.

                    Иногда взападло писать голые указатели. особенно когда у меня работа идет с std::string, очень не хочеца создавать всякие вектора иил динамические голые массивы, для какой нибудь дряни, типа функции trim или им подобным. Вот не смотрица оно, ни с какой стороны.
                      Цитата KILLER @
                      Цитата D_KEY @
                      Ты своими примерами пока этого не показал.

                      Ну как же не показал? Ты мне сам привел кашу из std::string - чисто рассово С++ строки + std::vector<char> - вообще массив данных + char* - С-строки... Это три разных типа строк только в одном месте :o Это ли удобство?

                      В каком одном месте?
                      С++ строки не предназначены для того, чтобы в них писали из С-API, для этого есть vector'а. Читать же ты можешь на здоровье.
                      И чего же в этом страшного - понятия не имею.

                      Добавлено
                      Цитата KILLER @
                      Ну хотя бы как вариант, сделали бы std::string по подобию вектора, а также реализовали бы c_str() который давал бы доступ к С-строке для изменения(как например это делает std::vector)

                      Я тебя уже спрашивал, какие возможности строк, которые не предоставляет вектор тебе нужны при работе со строкой, заполненной из C-API?
                      А если очень нужно:
                      ExpandedWrap disabled
                        tstring some_wrapper_function()
                        {
                            // здесь работаем через tbuffer
                         
                            return tstring(&my_buf[0]);
                        }
                        Цитата D_KEY @
                        В каком одном месте?
                        С++ строки не предназначены для того, чтобы в них писали из С-API, для этого есть vector'а. Читать же ты можешь на здоровье.
                        И чего же в этом страшного - понятия не имею.


                        ну давай я тебе объясню по другому, псевдокодом:

                        ExpandedWrap disabled
                          функция СделатьКувшин(глина, количество глины)
                          {
                             делаем кувшин из глины.
                          }
                           
                          int main()
                          {
                             std::string_ГлиняныйСосуд сосуд("Я сосуд из глины");
                            
                             std::vector_БездоннаяБочка<глина> БочкаГлины(сосуд.ВерхСосуда(), сосуд.НизСосуда());
                             БочкаГлины.добавить(дно);
                           
                             СделатьКувшин( оператор_разжижения_глины_из_сосуда_из_глины(БочкаГлины) );
                           
                           
                          }

                        Вот примерно так и получается. Нет чтобы передать глину сразу, нет, нужно пройти этап извращений,.. :D

                        Добавлено
                        Цитата D_KEY @
                        Я тебя уже спрашивал, какие возможности строк, которые не предоставляет вектор тебе нужны при работе со строкой, заполненной из C-API?

                        Вектор - это не строки, не путай. В этом и проблема.
                          Цитата KILLER @
                          ну давай я тебе объясню по другому, псевдокодом:

                          Он у тебя не соответствует тому, что мы рассматривали :)

                          Цитата
                          Цитата D_KEY @
                          Я тебя уже спрашивал, какие возможности строк, которые не предоставляет вектор тебе нужны при работе со строкой, заполненной из C-API?

                          Вектор - это не строки, не путай. В этом и проблема.

                          Ты можешь ответить на вопрос?
                            Цитата D_KEY @
                            Он у тебя не соответствует тому, что мы рассматривали :)

                            Почему? Тоже самое.

                            Цитата D_KEY @
                            Ты можешь ответить на вопрос?

                            Нет не могу, т.к. вектор - к строкам отношения не имеет.
                              Цитата KILLER @
                              Нет не могу, т.к. вектор - к строкам отношения не имеет.
                              К WinAPIшным строкам -- ещё как имеет. Там строки -- соглашение о векторе с нулём в конце. :yes:
                                Цитата KILLER @
                                Цитата D_KEY @
                                Он у тебя не соответствует тому, что мы рассматривали :)

                                Почему? Тоже самое.

                                Не, там какое-то несоответствие и типов, и шаблонных параметров.
                                Кроме того, у тебя там ничего не изменяется.

                                Цитата
                                Нет не могу, т.к. вектор - к строкам отношения не имеет.

                                Чем он хуже массива char'ов?
                                0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
                                0 пользователей:
                                Страницы: (495) « Первая ... 379 380 [381] 382 383 ...  494 495


                                Рейтинг@Mail.ru
                                [ Script execution time: 0.5559 ]   [ 15 queries used ]   [ Generated: 30.07.26, 16:01 GMT ]