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

    Я бы не сказал что редко. Смотря какая строка, смотря сколько раз ты это пишешь, смотря сколько параметров. С чего вдруг не делается? Например формирование какого нибудь XML'я вполне себе может содержать кучу параметров, в которых ты можешь запутаться. А если потом еще и местами поменяешь что то, то вообще голову сломаешь.

    Но ты, можешь и дальше продолжать показывать на белое и говорить что это черное.
    Может быть ты скажешь что и считать в обратной польской нотации - это норма, для любого среднестатистического человека, и ничего плохого тут нет, я не знаю. Я может быть какой то особенный человек, но для меня лично писать переменные в то место где они должны быть, вместо каких то странных знаков - довольно удобнее, чем писать странные знаки, в то место, где должны быть переменные, а потом список переменных.
    В любом случае в шапрпах можно и с помощью функции Format, отформатировать строку, вот так же как тут приводили, плюс есть еще вот такой метод форматирования, который на мой субъективный взгляд в разы лучше, того что предлагаешь ты. Ну а если ты привык писать аргументы списком в конце форматной строки и считать в обратной польской нотации, то флаг тебе, как говорится в руки :D

    Добавлено
    Да и к слову, всегда бесили Сишные функции prinft/sprintf и остальные, потому что это источник целого класса ошибок. Как при рефакторинге, так и при написании. Причем не важно - отслеживается там количество параметров или нет. Из за этого я всегда больше отдавал предпочтение потоковому вводу/выводу. Как, думаю, и многие другие. Именно потому, что потоковый ввод/ввывод имитирует как раз то, что я привел выше, а не вот эти ваши format("%d%s%%-s$=%s%d.2354%fa%f", a,bc,c,ds,sd,sd,wr).
    Сообщение отредактировано: Wound -
      Цитата Wound @
      Я бы не сказал что редко.

      Это теоретические рассуждения, или ты писал на языках, где форматная строка полностью проверяется на этапе компиляции?

      Цитата Wound @
      Да и к слову, всегда бесили Сишные функции prinft/sprintf и остальные, меня всегда они бесили, потому что это источник целого класса ошибок.

      Ну так это правильно - когда нет никаких проверок, и даже не факт, что упадёт в рантайме если что не так форматная строка действительно говно. Но, судя по всему, D-шный от него отстоит от сишного форматирования так же далеко (если не дальше), как и плюсовый.
        Цитата OpenGL @
        Это теоретические рассуждения, или ты писал на языках, где форматная строка полностью проверяется на этапе компиляции?

        Когда доходит до практики, то это превращается в практические рассуждения. Да и вообще, все что мы тут обсуждаем - теоретически рассуждения :D

        Цитата OpenGL @
        Ну так это правильно - когда нет никаких проверок, и даже не факт, что упадёт в рантайме если что не так форматная строка действительно говно. Но, судя по всему, D-шный от него отстоит от сишного форматирования так же далеко (если не дальше), как и плюсовый.

        Ты не понял, что тебе мешает написать в D?
        ExpandedWrap disabled
          string userJson = format("UserObject:{
           FirstName: %s,
           LastName: %s,
           City: %s,
           Street: %s,
           Phone: %s
           }", LastName, FirstName, Street, City, Phone);
        ??? Он это как то отследит?

        Добавлено
        Сравни это с этим:
        ExpandedWrap disabled
          string userJson = $"UserObject:\{
           FirstName: {LastName},
           LastName: {FirstName},
           City: {Street},
           Street: {City},
           Phone: {Phone}
          \}";

        Неужели разница не очевидна?
        Сообщение отредактировано: Wound -
          Цитата Wound @
          Ты не понял, что тебе мешает написать в D?

          Ничего не мешает, просто это мелочь из-за того, что ошибка порядка в форматной строке встречается куда реже, чем ошибка с типами. Ну т.е. я готов признать, что у шарпа тут преимущество (при условии, что он может парсить эту строку во время компиляции, конечно), но оно не настолько основополагающее, как ты тут хочешь это представить.
            Цитата OpenGL @
            Ничего не мешает, просто это мелочь из-за того, что ошибка порядка в форматной строке встречается куда реже, чем ошибка с типами. Ну т.е. я готов признать, что у шарпа тут преимущество (при условии, что он может парсить эту строку во время компиляции, конечно), но оно не настолько основополагающее, как ты тут хочешь это представить.

            Так я выше писал, это такая же мелочь, как отсутствие, на данный момент(уже в Net core 3.0 эта возможность появится), массива для аргументов командной строки. Ведь не часто приходится запускать процесс с какими то хитрыми параметрами. А когда приходится - можно ведь написать 1 раз нормальное экранирование, и забыть про это, тем более что язык представляет кучу средств для этого.
            И наличие какой то функции в D, принимающий список аргументов так же не настолько основополагающее, как тут мне хотели представить. Именно об этом и идет разговор. Перечитай.
            Сообщение отредактировано: Wound -
              Цитата Wound @
              И наличие какой то функции в D, принимающий список аргументов так же не настолько основополагающее, как тут мне хотели представить. Именно об этом и идет разговор. Перечитай.
              Где такое ты встретил? Противопоставлять C# и D начал ты. Изначально речь шла просто о недостатках C#. В D тонны своего говна в других местах. Так что утверждать, что D лучше C# в общем смысле было бы глупо.
              Сообщение отредактировано: applegame -
                Цитата JoeUser @
                Просто пойми, для знающих С++ идеология Раста немного иная, вернее - много много иная.

                О, что-то сразу не заметил это. Я как раз противоположной т.з. придерживаюсь - плюсовик в расте найдёт немало знакомых из плюсов концепций, таких как наследование в виде ссылки/указателя, в т.ч. умного, на "базовый класс", raii на детерминированно вызывающихся деструкторах, использование move семантики и т.п. Так что надо будет только привыкнуть к BC и научиться проектировать систему с учётом его наличия (что, по небольшому опыту, не слишком сложно), и выкинуть привычку всё писать максимально обобщённо на шаблонах, если таковая имеется.
                  Цитата applegame @
                  Где такое ты встретил? Противопоставлять C# и D начал ты. Изначально речь шла просто о недостатках C#. В D тонны своего говна в других местах. Так что утверждать, что D лучше C# в общем смысле было бы глупо.

                  What? :D
                  Щас я тебе покажу кто что начал чему противопоставлять и где я такое встретил.
                  Смотри:
                  Цитата applegame @
                  Последнее на что жаловался: https://stackoverflow.com/questions/5510343...ents-in-c-sharp
                  Такая простая вещь, а делается через адскую жопу.

                  Потом ты повторил еще и korvin'у:
                  Цитата applegame @
                  Ну вот есть у тебя список аргументов в виде массива строк, и надо вызвать стороннюю программу с этими аргументами. В аргументах ест пробелы и слеши/бэкслеши, функции для эскейпа нет, приходится городить свой кошмар.

                  Дальше я написал тебе разные варианты того, как это можно экранировать, на что ты ответил:
                  Цитата applegame @
                  Цитата
                  Например, из того что я понял, вот всякие разные варианты, и далеко не последние:
                  https://rextester.com/FQLFU35600

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

                  Цитата
                  String.Join("", cmd.Select(a => String.Format(" \"{0}\" ", a))).Replace(@"\", @"\\").Replace("\"", "\\\"").Trim();


                  А мы в своем D как-то привыкли к простому:

                  Т.е. ты привел какую то шнягу, которую твой друг не смог написать как в D вызовом одной функции, после чего противопоставил ему D, явно указывая на то, что вы там привыкли к простому, а не к говну. А теперь значит ты меня обвиняешь в том, что это я начал противопоставлять C# и D. Изначально да речь шла о недостатках C#, ты привел один сомнительный пример с командной строкой и начал раздувать на этом месте какой то непонятный спор. Я тебе привел варианты того как можно экранировать, пока нет функционала с массивом аргументов. Ты короче обосрал эти варианты и написал что вы делаете по простому, с помощью вызова специально предназначенной для этого функции. Ну вот я тоже привел пример, где ты будешь в своем D городить говно, а я буду писать по простому.

                  Вот так вот и подменяются понятия. И на Килю как обычно все валят.
                    Цитата Wound @
                    Вот так вот и подменяются понятия. И на Килю как обычно все валят.
                    Правда ты упустил свое вот это более раннее:
                    Цитата Wound @
                    Пусть покажет как он сделал бы такое на С++.
                    Так что да, ты первый противопоставил не D и шарп, а плюсы и шарп. А я заменил плюсы на D, потому что на самом деле недовольный друг на плюсах уже не пишет. Моя оплошность.

                    Добавлено
                    Цитата Wound @
                    ты привел один сомнительный пример с командной строкой и начал раздувать на этом месте какой то непонятный спор.
                    Ну вот если бы ты просто сказал, да есть такое неудобство есть решение. Писать надо вручную но вполне решаемо. На мой взглад, недостаток мелкий и незначительный. Но ты же так не можешь, нужно обязательно провокацию затеять:
                    Цитата Wound @
                    Так а в чем проблема вызвать, я вообще в упор не понимаю? Что он сделать хочет? Там у него написан треш какой то непонятный.
                    На провокацию, я ответил провокацией. А ты как хотел? :)
                    И да эту ветку спора с тобой я также закрываю.
                    Сообщение отредактировано: applegame -
                      Цитата applegame @
                      Правда ты упустил свое вот это более раннее:

                      Цитата applegame @
                      Так что да, ты первый противопоставил не D и шарп, а плюсы и шарп. А я заменил плюсы на D, потому что на самом деле недовольный друг на плюсах уже не пишет. Моя оплошность.

                      Вообще то, это было не противопоставление, а уточнение. Я просто не понял что он хотел сделать, и попросил реализацию на С++, чтоб понять что нужно сделать. Не более.

                      Цитата applegame @
                      Ну вот если бы ты просто сказал, да есть такое неудобство есть решение. Писать надо вручную но вполне решаемо. На мой взглад, недостаток мелкий и незначительный. Но ты же так не можешь, нужно обязательно провокацию затеять:

                      Не затевал я провокации, я просто не понял что требовалось сделать, и судя по всему не один я. Потом когда ты написал что нужно передать командную строку с пробелами и кавычками сформированную в коде, тогда стало понятно что он хочет сделать.


                      Цитата applegame @
                      На провокацию, я ответил провокацией. А ты как хотел?
                      И да эту ветку спора с тобой я также закрываю.

                      Да закрывай ради бога. Я ее что ли открывал? :D
                        Цитата OpenGL @
                        :lool:

                        Честно говоря не осознал коммента :-?

                        Ну вот что пишут, может врут:

                        Rust фокусируется на "абстракциях нулевой стоимости”, т.е. таких методах упрощения программирования, которые не требуют дополнительных затрат во время выполнения. Например, Rust управляет памятью во время компиляции и использует статическую диспетчеризацию для дженериков (по аналогии с шаблонами C++, но более безопасно по отношению к типам).
                          JoeUser, нулевая стоимость - это как раз принцип из C++.

                          Добавлено
                          Цитата JoeUser @
                          по аналогии с шаблонами C++, но более безопасно по отношению к типам).

                          А вот тут врут.
                            Цитата D_KEY @
                            JoeUser, нулевая стоимость - это как раз принцип из C++.

                            До С++11 этот принцип не совсем выполнялся, если я не ошибаюсь.

                            Добавлено
                            Цитата D_KEY @
                            А вот тут врут.

                            Пруф?
                              Цитата JoeUser @
                              До С++11 этот принцип не совсем выполнялся, если я не ошибаюсь.

                              Что ты имеешь в виду?

                              Цитата
                              Цитата D_KEY @
                              А вот тут врут.

                              Пруф?

                              Не, это ты приведи пруф большей типобезопасности ростовских дженериков по сравнению с шаблонами C++.
                                Цитата D_KEY @
                                Что ты имеешь в виду?

                                Наличие конструкторов только копирования до С++11 требовало определенных костылей, чтобы не было оверхеда. В Расте наоборот - перенос наоборот по-умолчанию, для создания копии сущности нужно писать дополнительно код.

                                Цитата D_KEY @
                                Не, это ты приведи пруф большей типобезопасности ростовских дженериков по сравнению с шаблонами C++.

                                Погоди :) Я привел чужую цитату, ты с ней несогласен - а я тут причем? Мне наоборот хотелось бы по ней ясности и пруфов ибо утверждение не мое.
                                0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
                                0 пользователей:
                                Страницы: (7) « Первая ... 3 4 [5] 6 7  все


                                Рейтинг@Mail.ru
                                [ Script execution time: 0,0503 ]   [ 15 queries used ]   [ Generated: 24.04.24, 06:54 GMT ]