Войти
ФлеймФорумРазработка игр

Паттерно-служители welcome to the hell (10 стр)

Страницы: 19 10 11 1216 Следующая »
#135
3:32, 14 июня 2021

Kartonagnick
> который даже не знает,
> ни что такое синглетон

синглетон это когда ООП-шники жидко обриставшись, делают вид что пишут не в процедурном стиле

#136
3:34, 14 июня 2021

Kartonagnick
> я предложил тебе:
> > создать два валидных экземпляра some.
> и ожидаю от тебя рабочий, корректный код.
Приведи рабочий, корректный getInstace.

#137
11:11, 14 июня 2021

totoro
> в питоне есть префикс _
  Который не несёт никакого семантического значения, а только является конвенцией именования. Можно и в Си сделать такое же - объявить все поля, которые начинаются на специальный префикс "приватными" и запретить программистам менять их напрямую.

> Соответственно подходы к решению задач там не такие как в ООП языках.
  Подходы определяются не языком, а задачами. Если для решения задачи хорошо подходит ООП, то его пытаются имитировать, а когда можно не париться и спокойно копаться в кишках структур, то так и поступают. В Си просто задачи второго типа более распространены, а что-то более сложное на нём писать уже более проблематично.

u960
> но в плюсах уже хеллоу ворлд без классов написать не могут.
  Это ты сейчас про std::out?

#138
11:20, 14 июня 2021

Zefick
> Который не несёт никакого семантического значения, а только является конвенцией
> именования.
Ну как так-то?
https://ideone.com/PEyoXl

> Подходы определяются не языком, а задачами. Если для решения задачи хорошо
> подходит ООП, то его пытаются имитировать, а когда можно не париться и спокойно
> копаться в кишках структур, то так и поступают. В Си просто задачи второго типа
> более распространены, а что-то более сложное на нём писать уже более
> проблематично.
Это все красивые слова, а на деле на си написано 80% софта, который окружает тебя в повседневной жизни.

#139
11:53, 14 июня 2021

Zefick
> Подходы определяются не языком, а задачами. Если для решения задачи хорошо
> подходит ООП, то его пытаются имитировать, а когда можно не париться и спокойно
> копаться в кишках структур, то так и поступают. В Си просто задачи второго типа
> более распространены, а что-то более сложное на нём писать уже более
> проблематично.
Ну тогда надо признать, что и C++ - лишь "попытка имитировать ООП", а "настоящее ООП" было возможно только на ОО-ориентированных процессорах машин пятого поколения.
И, да, язык Си оказался не по зубам кодерам, пришедшим на смену инженерам в программировании, и для для неосиляторов придумали упрощенную версию - Си++, где надо только запоминать "кнопочки калькулятора".

#140
11:56, 14 июня 2021

totoro
> Это все красивые слова, а на деле на си написано 80% софта, который окружает тебя в повседневной жизни.
  Я примерно такое же постоянно про С++ слышу. Так кто уже прав? Давайте устроим баттл.

А может быть это всё заговор и 80% софта на самом деле написано на Коболе.

#141
12:28, 14 июня 2021

totoro
> Это все красивые слова, а на деле на си написано 80% софта, который окружает
> тебя в повседневной жизни.
Употребить в одном предложении "красивые слова" и "софт, который окружает тебя в повседневной жизни", это надо суметь.

Zefick
> Давайте устроим баттл.
Тех, кто не умеет программировать, потому, что "язык неправильный", с теми, кто "умеет", потому что "все равно за это платят"?

#142
12:49, 14 июня 2021

NetSpider
> синглетон это когда ООП-шники жидко обриставшись, делают вид что пишут не в
> процедурном стиле

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

#143
12:54, 14 июня 2021

Kartonagnick
> которые в силу своего невежества,
> не способны сформулировать четкое определение.
Т.е. все IT-шники. Они не понимают, что "четкое определение" надо формулировать за пределами программирования.

#144
12:56, 14 июня 2021

Delfigamer
> Приведи рабочий, корректный getInstace.
представленный мной пример является и рабочим, и корректным.
ты код то смотрел?

+ Показать
#145
17:59, 14 июня 2021

Kartonagnick

+ Показать

Но на самом деле всё это нихрена не важно, потому что самая главная мысль вообще не в синглетонах.
Ничто не даёт никаких гарантий, если программист не приложит волевых усилий к соблюдению соответствующих правил.
Твой синглетон работает только при условии, если программист не полезет ему в кишки и не поломает. Ты можешь сделать это сложнее - понаписать приватов и статиков, спрятать исходный код подальше и поставлять только скомпилированные бинарники - но в конечном итоге ты никогда не сможешь запретить ему открыть дебаггер, раздизасмить весь твой код, залезть в память через void* и опять же сломать все твои гарантии.
Единственный способ защититься по-настоящему - это поставить свою логику на уровень выше, как это делают кернелы ОС и гипервизоры виртуальных машин.
А твой getInstance - это точно такая же табличка "мамка не входи", как и предшествовавший вариант - он точно так же будет иногда помогать против назойливых мамок, но бухой вооружённый вдвшник точно так же наплюёт на все твои гарантии, выломает дверь гранатой и сделает столько экземпляров, сколько ему захочется - хоть два, хоть двести, хоть сто тысяч пятьсот, и ничего ты ему не сделаешь, хоть заинкапсулируйся.

totoro
> Нету в си никакой инкапсуляции, я могу залезть во внутренние поля структуры и
> сделать с данными все что угодно, например перенаправиить вывод в другой файл.
И тебя это тоже касается, если оперировать твоей логикой "если я могу залезть в поля значит инкапсуляции нет", то инкапсуляции нет нигде. Но это бред, потому что термин "инкапсуляция", как и любой другой паттерн - это идея, а не криптографическая система, и описывает правила поведения для добросовестных агентов, а не защищает от злоумышленников.

#146
18:19, 14 июня 2021

Delfigamer
> И тебя это тоже касается, если оперировать твоей логикой "если я могу залезть в
> поля значит инкапсуляции нет", то инкапсуляции нет нигде.
Откуда это из моей логики такое следует, ты с цефиком меня не путаешь? Это он пытался убеждать, что инкапсуляция в си присутствует, потому что в языках, в которых она есть, можно открыть публичный доступ к полям класса. Но в си нет классов, и инкапсуляции стало быть нет. Там структура с приватными полями не имела бы смысла, потому что к ним невозможно было бы получить доступ вообще.

#147
18:29, 14 июня 2021

totoro
> Там структура с приватными полями не имела бы смысла, потому что к ним
> невозможно было бы получить доступ вообще.
Да ну, а это тогда что?

/* The complete definition of png_info has, as of libpng-1.5.0,
 * been moved into a separate header file that is not accessible to
 * applications.  Read libpng-manual.txt or libpng.3 for more info.
 */
typedef struct png_info_def png_info;
typedef png_info FAR * png_infop;
typedef PNG_CONST png_info FAR * png_const_infop;
typedef png_info FAR * FAR * png_infopp;

/* <...> */

/* Returns image width in pixels. */
PNG_EXPORT(115, png_uint_32, png_get_image_width, (png_const_structp png_ptr,
    png_const_infop info_ptr));

/* Returns image height in pixels. */
PNG_EXPORT(116, png_uint_32, png_get_image_height, (png_const_structp png_ptr,
    png_const_infop info_ptr));

Если это не инкапсуляция, то что? Корм для собак?

#148
18:40, 14 июня 2021

Delfigamer
> Да ну, а это тогда что?
Ну не знаю, макросня какая-то.

> PNG_EXPORT

  • The PNG_EXPORT() and PNG_EXPORTA() macros used below are defined in
  • * pngconf.h and in the *.dfn files in the scripts directory.

    Я что, по твоему должен все исходники libpng перелопатить, чтобы понять, что именно ты хотел донести?

    > Если это не инкапсуляция, то что?
    Ты точно знаешь, что означает этот термин?

    Инкапсуляция (англ. encapsulation, от лат. in capsula) — в информатике размещение в одном компоненте данных и методов, которые с ними работают. Также может означать скрытие внутренней реализации от других компонентов. Например, доступ к скрытой переменной может предоставляться не напрямую, а с помощью методов для чтения (геттер) и изменения (сеттер) её значения.

    https://ru.wikipedia.org/wiki/Инкапсуляция_(программирование)

    Вот теперь, когда ты узнал, ты все еще будешь утверждать что инкапсуляция полей и методов есть в процедурных языках?

    > Корм для собак?
    Да, какая-то хрень собачья.

    #149
    19:19, 14 июня 2021

    Kartonagnick
    >NetSpider
    >> синглетон это когда ООП-шники жидко обриставшись, делают вид что пишут не в
    >> процедурном стиле

    > "это когда" - так пишут гуманитарии неграмотные люди,
    > которые в силу своего невежества,
    > не способны сформулировать четкое определение.

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

    Страницы: 19 10 11 1216 Следующая »
    ФлеймФорумРазработка игр

    Тема в архиве.