Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
||
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[18.116.63.174] |
|
Страницы: (7) « Первая ... 3 4 [5] 6 7 все ( Перейти к последнему сообщению ) |
Сообщ.
#61
,
|
|
|
Цитата OpenGL @ И что? На практике порядок путается крайне редко, а формат длинной строки как в твоём примере вообще не делается. Я бы не сказал что редко. Смотря какая строка, смотря сколько раз ты это пишешь, смотря сколько параметров. С чего вдруг не делается? Например формирование какого нибудь XML'я вполне себе может содержать кучу параметров, в которых ты можешь запутаться. А если потом еще и местами поменяешь что то, то вообще голову сломаешь. Но ты, можешь и дальше продолжать показывать на белое и говорить что это черное. Может быть ты скажешь что и считать в обратной польской нотации - это норма, для любого среднестатистического человека, и ничего плохого тут нет, я не знаю. Я может быть какой то особенный человек, но для меня лично писать переменные в то место где они должны быть, вместо каких то странных знаков - довольно удобнее, чем писать странные знаки, в то место, где должны быть переменные, а потом список переменных. В любом случае в шапрпах можно и с помощью функции Format, отформатировать строку, вот так же как тут приводили, плюс есть еще вот такой метод форматирования, который на мой субъективный взгляд в разы лучше, того что предлагаешь ты. Ну а если ты привык писать аргументы списком в конце форматной строки и считать в обратной польской нотации, то флаг тебе, как говорится в руки Добавлено Да и к слову, всегда бесили Сишные функции prinft/sprintf и остальные, потому что это источник целого класса ошибок. Как при рефакторинге, так и при написании. Причем не важно - отслеживается там количество параметров или нет. Из за этого я всегда больше отдавал предпочтение потоковому вводу/выводу. Как, думаю, и многие другие. Именно потому, что потоковый ввод/ввывод имитирует как раз то, что я привел выше, а не вот эти ваши format("%d%s%%-s$=%s%d.2354%fa%f", a,bc,c,ds,sd,sd,wr). |
Сообщ.
#62
,
|
|
|
Цитата Wound @ Я бы не сказал что редко. Это теоретические рассуждения, или ты писал на языках, где форматная строка полностью проверяется на этапе компиляции? Цитата Wound @ Да и к слову, всегда бесили Сишные функции prinft/sprintf и остальные, меня всегда они бесили, потому что это источник целого класса ошибок. Ну так это правильно - когда нет никаких проверок, и даже не факт, что упадёт в рантайме если что не так форматная строка действительно говно. Но, судя по всему, D-шный от него отстоит от сишного форматирования так же далеко (если не дальше), как и плюсовый. |
Сообщ.
#63
,
|
|
|
Цитата OpenGL @ Это теоретические рассуждения, или ты писал на языках, где форматная строка полностью проверяется на этапе компиляции? Когда доходит до практики, то это превращается в практические рассуждения. Да и вообще, все что мы тут обсуждаем - теоретически рассуждения Цитата OpenGL @ Ну так это правильно - когда нет никаких проверок, и даже не факт, что упадёт в рантайме если что не так форматная строка действительно говно. Но, судя по всему, D-шный от него отстоит от сишного форматирования так же далеко (если не дальше), как и плюсовый. Ты не понял, что тебе мешает написать в D? string userJson = format("UserObject:{ FirstName: %s, LastName: %s, City: %s, Street: %s, Phone: %s }", LastName, FirstName, Street, City, Phone); Добавлено Сравни это с этим: string userJson = $"UserObject:\{ FirstName: {LastName}, LastName: {FirstName}, City: {Street}, Street: {City}, Phone: {Phone} \}"; Неужели разница не очевидна? |
Сообщ.
#64
,
|
|
|
Цитата Wound @ Ты не понял, что тебе мешает написать в D? Ничего не мешает, просто это мелочь из-за того, что ошибка порядка в форматной строке встречается куда реже, чем ошибка с типами. Ну т.е. я готов признать, что у шарпа тут преимущество (при условии, что он может парсить эту строку во время компиляции, конечно), но оно не настолько основополагающее, как ты тут хочешь это представить. |
Сообщ.
#65
,
|
|
|
Цитата OpenGL @ Ничего не мешает, просто это мелочь из-за того, что ошибка порядка в форматной строке встречается куда реже, чем ошибка с типами. Ну т.е. я готов признать, что у шарпа тут преимущество (при условии, что он может парсить эту строку во время компиляции, конечно), но оно не настолько основополагающее, как ты тут хочешь это представить. Так я выше писал, это такая же мелочь, как отсутствие, на данный момент(уже в Net core 3.0 эта возможность появится), массива для аргументов командной строки. Ведь не часто приходится запускать процесс с какими то хитрыми параметрами. А когда приходится - можно ведь написать 1 раз нормальное экранирование, и забыть про это, тем более что язык представляет кучу средств для этого. И наличие какой то функции в D, принимающий список аргументов так же не настолько основополагающее, как тут мне хотели представить. Именно об этом и идет разговор. Перечитай. |
Сообщ.
#66
,
|
|
|
Цитата Wound @ Где такое ты встретил? Противопоставлять C# и D начал ты. Изначально речь шла просто о недостатках C#. В D тонны своего говна в других местах. Так что утверждать, что D лучше C# в общем смысле было бы глупо. И наличие какой то функции в D, принимающий список аргументов так же не настолько основополагающее, как тут мне хотели представить. Именно об этом и идет разговор. Перечитай. |
Сообщ.
#67
,
|
|
|
Цитата JoeUser @ Просто пойми, для знающих С++ идеология Раста немного иная, вернее - много много иная. О, что-то сразу не заметил это. Я как раз противоположной т.з. придерживаюсь - плюсовик в расте найдёт немало знакомых из плюсов концепций, таких как наследование в виде ссылки/указателя, в т.ч. умного, на "базовый класс", raii на детерминированно вызывающихся деструкторах, использование move семантики и т.п. Так что надо будет только привыкнуть к BC и научиться проектировать систему с учётом его наличия (что, по небольшому опыту, не слишком сложно), и выкинуть привычку всё писать максимально обобщённо на шаблонах, если таковая имеется. |
Сообщ.
#68
,
|
|
|
Цитата applegame @ Где такое ты встретил? Противопоставлять C# и D начал ты. Изначально речь шла просто о недостатках C#. В D тонны своего говна в других местах. Так что утверждать, что D лучше C# в общем смысле было бы глупо. What? Щас я тебе покажу кто что начал чему противопоставлять и где я такое встретил. Смотри: Цитата 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 городить говно, а я буду писать по простому. Вот так вот и подменяются понятия. И на Килю как обычно все валят. |
Сообщ.
#69
,
|
|
|
Цитата Wound @ Правда ты упустил свое вот это более раннее:Вот так вот и подменяются понятия. И на Килю как обычно все валят. Так что да, ты первый противопоставил не D и шарп, а плюсы и шарп. А я заменил плюсы на D, потому что на самом деле недовольный друг на плюсах уже не пишет. Моя оплошность. Добавлено Цитата Wound @ Ну вот если бы ты просто сказал, да есть такое неудобство есть решение. Писать надо вручную но вполне решаемо. На мой взглад, недостаток мелкий и незначительный. Но ты же так не можешь, нужно обязательно провокацию затеять: ты привел один сомнительный пример с командной строкой и начал раздувать на этом месте какой то непонятный спор. Цитата Wound @ На провокацию, я ответил провокацией. А ты как хотел? Так а в чем проблема вызвать, я вообще в упор не понимаю? Что он сделать хочет? Там у него написан треш какой то непонятный. И да эту ветку спора с тобой я также закрываю. |
Сообщ.
#70
,
|
|
|
Цитата applegame @ Правда ты упустил свое вот это более раннее: Цитата applegame @ Так что да, ты первый противопоставил не D и шарп, а плюсы и шарп. А я заменил плюсы на D, потому что на самом деле недовольный друг на плюсах уже не пишет. Моя оплошность. Вообще то, это было не противопоставление, а уточнение. Я просто не понял что он хотел сделать, и попросил реализацию на С++, чтоб понять что нужно сделать. Не более. Цитата applegame @ Ну вот если бы ты просто сказал, да есть такое неудобство есть решение. Писать надо вручную но вполне решаемо. На мой взглад, недостаток мелкий и незначительный. Но ты же так не можешь, нужно обязательно провокацию затеять: Не затевал я провокации, я просто не понял что требовалось сделать, и судя по всему не один я. Потом когда ты написал что нужно передать командную строку с пробелами и кавычками сформированную в коде, тогда стало понятно что он хочет сделать. Цитата applegame @ На провокацию, я ответил провокацией. А ты как хотел? И да эту ветку спора с тобой я также закрываю. Да закрывай ради бога. Я ее что ли открывал? |
Сообщ.
#71
,
|
|
|
Цитата OpenGL @ Честно говоря не осознал коммента Ну вот что пишут, может врут: Rust фокусируется на "абстракциях нулевой стоимости”, т.е. таких методах упрощения программирования, которые не требуют дополнительных затрат во время выполнения. Например, Rust управляет памятью во время компиляции и использует статическую диспетчеризацию для дженериков (по аналогии с шаблонами C++, но более безопасно по отношению к типам). |
Сообщ.
#72
,
|
|
|
JoeUser, нулевая стоимость - это как раз принцип из C++.
Добавлено Цитата JoeUser @ по аналогии с шаблонами C++, но более безопасно по отношению к типам). А вот тут врут. |
Сообщ.
#73
,
|
|
|
Цитата D_KEY @ JoeUser, нулевая стоимость - это как раз принцип из C++. До С++11 этот принцип не совсем выполнялся, если я не ошибаюсь. Добавлено Цитата D_KEY @ А вот тут врут. Пруф? |
Сообщ.
#74
,
|
|
|
Цитата JoeUser @ До С++11 этот принцип не совсем выполнялся, если я не ошибаюсь. Что ты имеешь в виду? Цитата Цитата D_KEY @ А вот тут врут. Пруф? Не, это ты приведи пруф большей типобезопасности ростовских дженериков по сравнению с шаблонами C++. |
Сообщ.
#75
,
|
|
|
Цитата D_KEY @ Что ты имеешь в виду? Наличие конструкторов только копирования до С++11 требовало определенных костылей, чтобы не было оверхеда. В Расте наоборот - перенос наоборот по-умолчанию, для создания копии сущности нужно писать дополнительно код. Цитата D_KEY @ Не, это ты приведи пруф большей типобезопасности ростовских дженериков по сравнению с шаблонами C++. Погоди Я привел чужую цитату, ты с ней несогласен - а я тут причем? Мне наоборот хотелось бы по ней ясности и пруфов ибо утверждение не мое. |