Этого треда уже нет.
Это копия, сохраненная 1 августа 2021 года.

Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее

Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.
xnAeFQWV3gc.jpg42 Кб, 401x402
Мой бесполезный дневничок # OP 369506 В конец треда | Веб
Тоже раньше заводил дневник, в основном в бумажном варианте, но из за того что у меня быстро уставала писать рука я забивал на это дело. Вот решил попробовать завести на двачах. До этого думал - а зачем? Все равно рано или поздно брошу, да и вдобавок я смогу вести ток с этого айпи, а трипкод мне делать не особо охото. Ну ладно, раз на то дело пошло, не зря же я столько текста в начале нафигачил? По сути в данный момент пиздострадаю по тне которую даже в жизни не видел возможно это даже к лучшему. Ну все по классике познакомились в интернете, разговорились и получили вк друг друга. Даже не знаю, у нее столько друзей парней с которыми она часто гуляет но при этом уделяет много внимания мне и даже пару раз намекала на отношач но скорее всего это шутка. Скорее всего после карантина я точно определюсь, нужна ли она мне как воздух или я поехал кукухой из за одиночества. Так же недавно начал делать свой текстовый квест на паскале, я не знаю зачем, возможно чисто размять мозги на этом злом и недобром карантине. Нафигачил 150 строчек кода, реализовал всего пару веток и то криво, часто бывают вылеты и неправильное срабатывание скриптов. даже не знаю зачем я программить на паскале начал если все равно знал что в один момент попаду в тупик. Ну ладно раз начал то наверн, криво, но доделать надо. Уже как полгода суицидальные мысли, я вот хз из за чего они, то ли из за расставания с тянкой то ли из за постоянного стресса в моей жизни. Думал сходить к психиатору но чет впадлу да и когда прям капец как интерес к жизни пропадет то тогда да. наверн стоит
# OP 2 369512
Хочу влиться в крипи стафф и делать всякую хрень, возможно просто фигачить что то в духе филти френка, хотя на второе у меня духу не хватит. А вот крипи стафф прикольная тема, пытался одно время в аннервинг но чет мои страшные ящерки походили больше на нпс из супер марио, не ну реально залил на какой то сабреддит а мне грят "лол у тебя милый динозаврик" какой нахрен динозаврик это порождение ктухлу прямиком из лавкрафтовских романов, ужас и страх в пикселях а нет это рельано милый динозаврик нарисованный в пеинте.
3 369706
Что то сегодня погода плохая, моему ежедневному катанию на велосипеде скорее всего не суждено сегодня быть. Эх, а я так хотел сегодня за сигаретами съездить, накопил более менее налички хотел взять парламент. Давно его не курил. Что то в нем есть, хотя по вкусу обычные сигареты на уровне винстона блю. Так же надо подумать насчет поступления или забить ли хуй на все и кайфовать от того что я, в отличии от многих своих знакомых в этот тяжелый для страны период, могу выходить из дома. Раз уж сегодня не собираюсь никуда не выходит надо позаниматься на фортепиано часика 2 или 1.5. Кроме этого надо решать проблему с линькой кота. Я не знаю, но отт него шерсть повсюду. В прошлом году такого не было, а в этом чет сильно. Конечно можно списать на условия проживания, но думаю проблема не в этом. Просто купил новый корм, почитал про него в инете, и говорят что с него коты сильно линяют лол. Надо покупать старый корм, либо поискать новый, зря я все такие этот в ашане брал. Хорошо что еще кот не сдох то него.
4 369803
прикол, тред уже не определяет меня как ОПа. Ну чтож, он похоже все равно никому не нуден так что просто продолжу писать как и изначально было задумано. Итак, исходя из поста выше, сегодня из за дерь мовой погоды я не покатался, НО я а то просто прогулялся, и скажу честно, насквозь промокшая куртка не испортила мое гуляние. Главное только не заболеть. Наверное зря я все таки сижу и пью холодную колу. Ну раз завтра умру то ладно. Итак, я пробовал не писать своей ЕОТ, она мне лишь ночью написал, сплю ли я и я это сообщение увидел лишь на утро.
Лан хуй с ней я лучше расскажу то, что я начал гамать в первый фолыч и я охуел реально.
JzBt70ptRAA.jpg51 Кб, 960x732
5 370010
блять, играя в первый фолыч я нашел водный чип, потом по приказу братства дошел до свечения, получил большую дозу радиации и потом умираю за два дня пути. Естесна решил прибегнуть к дюпу вещей, чтоб не ебаться с поиском радх, почитал на форумах и У МЕНЯ СЕЙВ СДОХ. СУКА 6 ЧАСОВ ПОДРЯД ИГРАЛ И ВСЕ РАДИ ДОХЛОГО СЕЙВА. ну похуй я зато понял во втором прохождении где то за пол часа получил водяной чип и теперь иду пиздить антирадин с радх у торговцев в хабе. Что насчет жизни не на пустоши то я опять сегодня погулял и попал под дождь, только я был умный и взял с собой зонтик. ТОлько вот ближайшую неделю не смогу кататься на велосипеде. Думаю зайти на велач и почитать про ТО, а то на велокомпьютере пробег велика 2K, а спазывать цепь надо раз в 100-200 км. Во я наверн долбаеб
6 370017
Еще решил забить на квест в паскале из за того что я хз как реализовать возврат. Типо если ты хочешь открыть дверь но у тебя нет ключа то ты возвращаешься на главный перекресток квеста назовем это так, но из за того что этот момент возвращения находится в жопе кода плюс куча операторов тип репит и кейс оф и я блядь столько там бегин и ендом наебнул что пиздец без сто грамм та нихуя не разберешься. Еще я ебал разрабов паскальАВС , даже ебаный рпг мейкер лучше блять и оптимизированее чем ваше говно для 9 классников. Еще в школе я знал что блять паскаль говно и эти массивы хуссивы непонадобятся мне кроме как сдачи ебаной контрольной. ух сука пригорело. ну ладно я попробую изучить другой язык на более менее любительском уровне ну или попробую гейммейкер лол
750216.jpg2,4 Мб, 1080x2160
7 370053
ебать у меня долгов по учебе а оценок вообще нет надо браться за дело а не сидеть на двачиках. Ну ладно завтра разберусь а сегодня по кайфую (надеюсь), ну чтож итоги дня - написал ЕОТ в духе "С ДНЕМ ХРУСТЯЩЕГО ОГУРЧИКА!", она мне ответила и спросила как у меня дела. Естесна рассказал ей все, она прочитала, но вообще ничего не ответила. Такие вот дела. Может вообще забить на социальное взаимодействие и просто жить в интернетах как хикка?
8 370151
>>69506 (OP)

>Скорее всего после карантина я точно определюсь, нужна ли она мне как воздух или я поехал кукухой из за одиночества


Да, чел, ты поехал кукухой от одиночества. Во избежании потенциальной травмы слейся с этой фигни и лучше развивай скиллы общения с тнусями в ирл. Бросай эту интернет-интрижку, если она сильно воздействует на твое сознание и чувства. Лучше так, чем потенциальная душевная рана. Это мое мнение.
9 370152
>>70053
Нет, долбаеб. Вылупляйся из кокона и извергайся в ирл. К психотерапевту сходи или хз, мб все само наладится к тебя.
2d7761a3b715317d6f170d9fe4d2e971.jpg3,3 Мб, 2508x3541
Рика !!gYmpHned/k 10 370342
>>70017
Слышь, попутал, паскаль охуенен.

Во-первых, PascalABC НЕ НУЖЕН: это (слегка) замаскированный C#, в котором от Паскаля часть синтаксиса и всё. Соответственно, нет абсолютно никакого смысла писать на нём вместо C#, даже для обучения: он НЕ ПРОЩЕ, в качестве синтаксиса имеет кашу из обоих языков и НЕ КОМПИЛИРУЕТСЯ В НАТИВНЫЙ КОД. New и сборка мусора в Паскале, охуеть просто, это полностью противоречит его философии, точь-в-точь те ебанутые .NET-надстройки над C++ с ref new и прочей неведомой дичью, на которых никто не пишет, потому что это ебланство. Единственный не ебланский язык для .NET — C# (на F# не уверен, что пишут не одни сойбои с целью сублимировать желание отсосать друг дружке), потому что он создан с нуля под возможности .NET, а встраивание другого языка/платформы поверх и без учёта того, что в языке уже есть, даёт заведомо мертворождённый результат; ну а единственный человеческий Паскаль на сегодняшний день — Free Pascal, в его контексте я и буду говорить.

Прежде чем вернуться к Паскалю, рассмотрим твой случай.
Твоя проблема — вернуться куда-то сквозь тонны репитов и кейсов-оф, говорит о том, что ты всё, всё сделал не так, и ровно ту же дичь написал бы на любом другом языке.
Попробуем сделать лучше.

У нас будет МИР (у меня TWorld) — штука, перманентно хранящая глобальное состояние, что там наш персонаж натворил и т. п.
У нас будет СЦЕНА (у меня TScene) — штука, отвечающая за конкретную локацию: за её отображение и обрабатываемые ей команды (пойти туда-то и т. п.).
(Плохие названия, мне похуй.)
Чтобы не усложнять, текущая СЦЕНА будет храниться в самом МИРЕ. Тогда у МИРА будет метод SwitchTo(TScene), который переключит его на новую сцену. Например, если текущая сцена — Комната А, и из неё есть проход в Комнату Б, то для выполнения перехода мы сделаем world.SwitchTo(RoomB.Create).

Кроме того, СЦЕНА будет сообщать свои команды специальной виртуальной функцией HandleCommands, чтобы можно было объединить называние и обработку команды в одном месте в коде (с анонимными функциями делать так бы не пришлось :):
procedure MyScene.HandleCommands;
begin
  if Command('1', 'вырастить крылья') then World.SwitchTo(Scene_GrowWings.Create);
  if Command('2', 'убежать') then World.SwitchTo(Scene_RunAway.Create);
end;
Где Command возвращает ложь, если сам факт вызова Command сказал супервизору достаточно (имя и описание) и больше ничего делать не нужно, и истину — если команду нужно выполнить.

Ну а точка входа нашей программы будет выглядеть просто как
begin
  world := TWorld.Create(FirstScene.Create);
  try
    while world.Alive do
    begin
      world.Display;
      readln(cmd);
      world.SendCommand(cmd);
    end;
  finally
    FreeAndNil(world);
  end;
end.
Ну и будем делать конкретные сцены (для разных комнат и т. п.) наследниками TScene, переопределяющими методы HandleDisplay и HandleCommands, хотя это не промышленный способ. Промышленным будет сделать единственный класс TScene и выражать различия между разными комнатами не кодом наследников, а данными, хранящимися в полях TScene — это может быть текст экрана, действия, условия для появления всего этого и всё такое. Представь, как просто будет во втором способе вынести описания разных комнат во внешние файлы, и как геморройно в первом. Или, например, в другой раз 100500 монстров могут быть реализованы не 100500 классами, а единственным классом TMonster, хранящим портрет, характеристики, умения, флаги поведения и всё такое, что, опять же, позволит отделить данные — описание монстров — от логики приложения.

В итоге у нас получается что-то такое: https://ideone.com/aO1H4z.

Теперь вернёмся к Паскалю. Чем Паскаль охуенен? А ровно одной вещью, и имя ей —
ЭНУМЫ.
Бля, энумы в Паскале — лучшее, что там было и, боюсь, будет.
В реальном мире часто возникает выбор из нескольких дискретных вариантов, и энумы замечательно это моделируют.
Например, мы можем сделать энум-тип местности (трава, грязь и т. п.), создать константный (или обычный) массив записей-характеристик этой местности и индексировать его этим энумом: https://ideone.com/8CjFSb.

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

Чем же Паскаль плох?
— Паскаль сравнительно непопулярен. По причине непопулярности проблемы с утилитами, библиотеками, багами и недоработками компилятора, оболочки Lazarus и т. д. могут возникать чаще, чем в более массовых языках, это заколдованный круг.

— ОЧЕНЬ МЕДЛЕННЫЕ СТРОКИ (динамических массивов в меньшей степени тоже касается). Ходят слухи, что даже в JavaScript, если постараться, быстрее (я в это не верю, но мне лень проверять). Проблема отчасти в их copy-on-write'ности и счётчиках ссылок (первая часть доклада https://www.youtube.com/watch?v=rJWSSWYL83U — 2:30–24:22 — этому посвящена). Так что, например, если ты разделяешь какой-то текст по словам, каждое слово вырезаешь и куда-то передаёшь — тобi пизда, во всяком случае, ручная работа через PChar будет быстрее на порядок, если не два. Я специально в пока не обнародованной переделке своего движка сделал тип StringView (см. стандартный класс string_view в C++) и другие обходные пути, чтобы не работать с честными строками, когда возможно (StringView позволяет сослаться на фрагмент существующей строки без создания новой, без подсчёта ссылок и проч., например, чтобы передать его куда-нибудь для обработки, и при этом с ним можно работать во многом как с обычной строкой — сравнить с другой, пройтись по символам, вырезать подстроку...). Впрочем, это касается абсолютно всех языков... и вообще-то без счётчиков ссылок (или с иммутабельными строками, как в .NET), как правило, всё ЕЩЁ хуже :).

(К строкам же: разделены «юникодные» (unicodestring, UTF-16) и однобайтовые (【ansi】string) строки, мне приходится использовать хак, чтобы забить на «юникодные» и хранить в «однобайтовых» строках UTF-8, потому что я ненавижу UTF-16.)

— НЕТ (человеческого) RAII. Для неуправляемого языка это полное дно. Управляемые типы, такие как array of и string, уничтожаются автоматически, но пользовательские классы (и другие динамически выделенные структуры) нужно освобождать вручную. Для классов, которые существуют в рамках функции (как world выше) — это означает постоянно повторять бойлерплейт с Create-try-finally Free. (В Free Pascal утечки памяти отслеживаются модулем heaptrc.)

— НЕТ ШАБЛОНОВ. Дженерики — немощная, а то и забагованная, хуита, хотя в Delphi вроде чуть лучше. В Free Pascal нет вывода типов для generic-функций, что убивает половину идеи: если у тебя есть generic-функция Max<T>(const a, b: T): T, то её нельзя вызвать как Max(2, 3) — только как Max<integer>(2, 3), а в исконном Free Pascal-синтаксисе и вовсе specialize Max<integer>(2, 3).

— НЕТ АНОНИМНЫХ ФУНКЦИЙ. В Delphi есть, но медленные, и вообще Delphi для пидоров.

Но для любого языка любой пишущий на нём достаточное время набросает тебе такой же список проблем.
А энумы останутся!
2d7761a3b715317d6f170d9fe4d2e971.jpg3,3 Мб, 2508x3541
Рика !!gYmpHned/k 10 370342
>>70017
Слышь, попутал, паскаль охуенен.

Во-первых, PascalABC НЕ НУЖЕН: это (слегка) замаскированный C#, в котором от Паскаля часть синтаксиса и всё. Соответственно, нет абсолютно никакого смысла писать на нём вместо C#, даже для обучения: он НЕ ПРОЩЕ, в качестве синтаксиса имеет кашу из обоих языков и НЕ КОМПИЛИРУЕТСЯ В НАТИВНЫЙ КОД. New и сборка мусора в Паскале, охуеть просто, это полностью противоречит его философии, точь-в-точь те ебанутые .NET-надстройки над C++ с ref new и прочей неведомой дичью, на которых никто не пишет, потому что это ебланство. Единственный не ебланский язык для .NET — C# (на F# не уверен, что пишут не одни сойбои с целью сублимировать желание отсосать друг дружке), потому что он создан с нуля под возможности .NET, а встраивание другого языка/платформы поверх и без учёта того, что в языке уже есть, даёт заведомо мертворождённый результат; ну а единственный человеческий Паскаль на сегодняшний день — Free Pascal, в его контексте я и буду говорить.

Прежде чем вернуться к Паскалю, рассмотрим твой случай.
Твоя проблема — вернуться куда-то сквозь тонны репитов и кейсов-оф, говорит о том, что ты всё, всё сделал не так, и ровно ту же дичь написал бы на любом другом языке.
Попробуем сделать лучше.

У нас будет МИР (у меня TWorld) — штука, перманентно хранящая глобальное состояние, что там наш персонаж натворил и т. п.
У нас будет СЦЕНА (у меня TScene) — штука, отвечающая за конкретную локацию: за её отображение и обрабатываемые ей команды (пойти туда-то и т. п.).
(Плохие названия, мне похуй.)
Чтобы не усложнять, текущая СЦЕНА будет храниться в самом МИРЕ. Тогда у МИРА будет метод SwitchTo(TScene), который переключит его на новую сцену. Например, если текущая сцена — Комната А, и из неё есть проход в Комнату Б, то для выполнения перехода мы сделаем world.SwitchTo(RoomB.Create).

Кроме того, СЦЕНА будет сообщать свои команды специальной виртуальной функцией HandleCommands, чтобы можно было объединить называние и обработку команды в одном месте в коде (с анонимными функциями делать так бы не пришлось :):
procedure MyScene.HandleCommands;
begin
  if Command('1', 'вырастить крылья') then World.SwitchTo(Scene_GrowWings.Create);
  if Command('2', 'убежать') then World.SwitchTo(Scene_RunAway.Create);
end;
Где Command возвращает ложь, если сам факт вызова Command сказал супервизору достаточно (имя и описание) и больше ничего делать не нужно, и истину — если команду нужно выполнить.

Ну а точка входа нашей программы будет выглядеть просто как
begin
  world := TWorld.Create(FirstScene.Create);
  try
    while world.Alive do
    begin
      world.Display;
      readln(cmd);
      world.SendCommand(cmd);
    end;
  finally
    FreeAndNil(world);
  end;
end.
Ну и будем делать конкретные сцены (для разных комнат и т. п.) наследниками TScene, переопределяющими методы HandleDisplay и HandleCommands, хотя это не промышленный способ. Промышленным будет сделать единственный класс TScene и выражать различия между разными комнатами не кодом наследников, а данными, хранящимися в полях TScene — это может быть текст экрана, действия, условия для появления всего этого и всё такое. Представь, как просто будет во втором способе вынести описания разных комнат во внешние файлы, и как геморройно в первом. Или, например, в другой раз 100500 монстров могут быть реализованы не 100500 классами, а единственным классом TMonster, хранящим портрет, характеристики, умения, флаги поведения и всё такое, что, опять же, позволит отделить данные — описание монстров — от логики приложения.

В итоге у нас получается что-то такое: https://ideone.com/aO1H4z.

Теперь вернёмся к Паскалю. Чем Паскаль охуенен? А ровно одной вещью, и имя ей —
ЭНУМЫ.
Бля, энумы в Паскале — лучшее, что там было и, боюсь, будет.
В реальном мире часто возникает выбор из нескольких дискретных вариантов, и энумы замечательно это моделируют.
Например, мы можем сделать энум-тип местности (трава, грязь и т. п.), создать константный (или обычный) массив записей-характеристик этой местности и индексировать его этим энумом: https://ideone.com/8CjFSb.

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

Чем же Паскаль плох?
— Паскаль сравнительно непопулярен. По причине непопулярности проблемы с утилитами, библиотеками, багами и недоработками компилятора, оболочки Lazarus и т. д. могут возникать чаще, чем в более массовых языках, это заколдованный круг.

— ОЧЕНЬ МЕДЛЕННЫЕ СТРОКИ (динамических массивов в меньшей степени тоже касается). Ходят слухи, что даже в JavaScript, если постараться, быстрее (я в это не верю, но мне лень проверять). Проблема отчасти в их copy-on-write'ности и счётчиках ссылок (первая часть доклада https://www.youtube.com/watch?v=rJWSSWYL83U — 2:30–24:22 — этому посвящена). Так что, например, если ты разделяешь какой-то текст по словам, каждое слово вырезаешь и куда-то передаёшь — тобi пизда, во всяком случае, ручная работа через PChar будет быстрее на порядок, если не два. Я специально в пока не обнародованной переделке своего движка сделал тип StringView (см. стандартный класс string_view в C++) и другие обходные пути, чтобы не работать с честными строками, когда возможно (StringView позволяет сослаться на фрагмент существующей строки без создания новой, без подсчёта ссылок и проч., например, чтобы передать его куда-нибудь для обработки, и при этом с ним можно работать во многом как с обычной строкой — сравнить с другой, пройтись по символам, вырезать подстроку...). Впрочем, это касается абсолютно всех языков... и вообще-то без счётчиков ссылок (или с иммутабельными строками, как в .NET), как правило, всё ЕЩЁ хуже :).

(К строкам же: разделены «юникодные» (unicodestring, UTF-16) и однобайтовые (【ansi】string) строки, мне приходится использовать хак, чтобы забить на «юникодные» и хранить в «однобайтовых» строках UTF-8, потому что я ненавижу UTF-16.)

— НЕТ (человеческого) RAII. Для неуправляемого языка это полное дно. Управляемые типы, такие как array of и string, уничтожаются автоматически, но пользовательские классы (и другие динамически выделенные структуры) нужно освобождать вручную. Для классов, которые существуют в рамках функции (как world выше) — это означает постоянно повторять бойлерплейт с Create-try-finally Free. (В Free Pascal утечки памяти отслеживаются модулем heaptrc.)

— НЕТ ШАБЛОНОВ. Дженерики — немощная, а то и забагованная, хуита, хотя в Delphi вроде чуть лучше. В Free Pascal нет вывода типов для generic-функций, что убивает половину идеи: если у тебя есть generic-функция Max<T>(const a, b: T): T, то её нельзя вызвать как Max(2, 3) — только как Max<integer>(2, 3), а в исконном Free Pascal-синтаксисе и вовсе specialize Max<integer>(2, 3).

— НЕТ АНОНИМНЫХ ФУНКЦИЙ. В Delphi есть, но медленные, и вообще Delphi для пидоров.

Но для любого языка любой пишущий на нём достаточное время набросает тебе такой же список проблем.
А энумы останутся!
xnAeFQWV3gc.jpg42 Кб, 401x402
11 370463
>>70342
ЕБАТЬ, ЧЕЛ ДА ТЫ ГЛАЗА ОТКРЫЛ не реально я вот блять почитал форумы каких чуваков из 2006 и составил на них свое "ОБЪЕКТИВНОЕ" мнение а вот ты мне щас все по полочкам разложил и теперь я снова с огромным энтузиазмом иду качать фри паскаль и ебашить игру века. Все таки да будучи пиздюком недооценивал такой яп
12 370464
>>70463

>ДА ТЫ МНЕ ГЛАЗА ОТКРЫЛ


быстрофикс
13 370466
>>70151
Бля скилл пикапить тян у меня по наследству от старшего брата достался, так что в ирл проблем нет и это не просто слова а реально, пару стори есть как я тян, не зная этого сам, привлек к себе внимание (один раз даже перепало, не ебу как) . Просто у меня похоже маняфантазии насчет того какой будет моя будущая тня и из за этого я просто при любой не удовлетворяющей меня детали сразу отбрасываю тян. Я уверен на 100% что если я увижу ЕОТ после ирл я сразу подумаю:

>И я пиздострадал по ней?


Так шо тут тока в этом загвостка и её мне как то решить, а я не ебу как
14 370493
>>70152
Да вот тоже считаю, что сила в ирл и я могу спокойно существовать и общаться с людьми (что я собсна до карантина спокойно делал и никто не подозревал что я сижу на двачах) Проблема в том что я психологически не могу открыться людям, показываю им то что они ожидают увидеть, обычного парня без загонов, а на самом деле я хочу ананасовое мороженное
треш.jpg1,3 Мб, 3000x3000
15 370789
итак, собсна говоря подвожу итоги сегодняшнего дня. На ЕОТ мне чет стало похуй стал с другими тнями базарить и все сразу ушло, так шо вопрос с пиздостраданием закрыт. Теперь насчет квеста, я пока фри паскаль не ставил, но пока пишу этот пост он качается. Еще меня как электро музыканта преимущественно делаю хаус и чилл всякий, мой первый трек выйдет в эту субботу. Если честно я поражен,что кто то хочет меня, такого долбаеба, выпускать на лейбле. Дали отсрочку и уже в начале июня буду делать свой первый в жизни лонгплей. Вот ток чет ссусь насчет сингла, вкатит аудитории или нет. Ну ладно, время покажет. Так же хочу заметить что я уже половину от всех долгов по учебе закрыл, так шо что если завтра еще напрягусь то можно опять чиллить.
Думаю еще бросить курить, хотя хз насчет этой идеи. Да, плохо, не спорю, но я не ощущаю последствии на своем организме может потому что я курю одну сигу в два дня да и еще катаюсь на велосипеде 24/7 ну похуй через месяц подумаю.
16 370790
>>70789

>Еще меня как электро музыканта приняли в лейбл


фикс
17 370825
Чел, ты брокенчелюсть?
18 370875
19 370930
СЕЗОН ФОТООХОТЫ ОТКРЫТ, ДАМЫ И ГОСПОДА
да решил фоткать всяких зверюшек
20 370932
>>70930
бля а почему на дваче фотки в одной плоскости а когда открываю само изображение то оно нормальное?
21 370938
>>70930
довольно кстати хороший улов за сегодня. Пик 1 я сегодня спас от личинусов и в благодарность он последовал за мной и вякал на всяких мимособак, но пришлось рассаться с ним на одном из перекрестков. Пик 2 это просто кот в траве. Пик 3 вообще самый смешной. Он тяфкал на меня и даже пытался укусить, но когда я попытался достать телефон чтоб сфоткать, то он сразу начал от меня убегать. пришлось фоткать на расстоянии пяти а то и больше метров. Пик 4 это козел лол
MpnTg8-WrU0waifu2xartnoise3tta1.png1,3 Мб, 1125x2001
Рируру !!gYmpHned/k 22 370984
>>70342
Ещё такая тема. Я сказал, что человеческого RAII нет, но контрчеловечный таки есть, и его стоит использовать.
Сразу квестик, переделанный без ручного уничтожения объектов: https://ideone.com/SRWpVw. Сейчас объясню по порядку.

Переменные-объекты классов — это голые указатели, работа с одними ними не подразумевает никакой магии компилятора, кроме разве что неявного разыменования при обращении через «.». В том числе, как уже говорилось ранее, они не освобождаются автоматически. Так что
type
  PMyRecord = ^TMyRecord;
  TMyRecord = record
    x: integer;
  end;

  TMyClass = class
    x: integer;
  end;

var
  rec: PMyRecord;
  cls: TMyClass;

begin
  new(rec);
  rec^.x := 5;
  writeln(rec^.x);
  dispose(rec); rec := nil;

  cls := TMyClass.Create;
  cls.x := 5;
  writeln(cls.x);
  FreeAndNil(cls);
end.
— это принципиально одно и то же (ну, с точностью до фич class, которые здесь не важны).

Но в Паскале есть интерфейсы. Они изначально введены для совместимости с Microsoft'овской технологией COM — понятия не имею, что это такое, но сама она нас не интересует, и это не привяжет нас к Microsoft-платформам — на рассматриваемом уровне это просто тоненький бинарный стандарт. Важны только некоторые следствия.

COM как раз предполагает общение объектов через ~интерфейсы~, наследуемые от общего предка — IUnknown, которому полагается иметь 3 метода:
— QueryInterface — спрашивает у объекта его интерфейс по уникальному идентификатору (GUID). Это позволяет языку реализовать операции is и as для интерфейсов. Нам это не нужно, и GUID нашим интерфейсам можно вообще не указывать.
— AddRef — сообщает, что ты удерживаешь новую ссылку на объект.
— Release — сообщает, что ссылку ты больше не удерживаешь.

Так что IUnknown предполагает управление временем жизни объекта через подсчёт ссылок. Чтобы упростить работу с ним, интерфейсы сделаны управляемыми типами (как и string и array of), при работе с которыми компилятор автоматически дёргает AddRef/Release в нужные моменты. Например:

var
  a, b: IMyInterface;
begin
  a := b;
end;

— как и с присваиваниями string'ов, невидимо распишется в b.AddRef; a.Release; pointer(a) := pointer(b). А когда переменная интерфейсного типа выходит из области видимости, или когда уничтожается структура (класс, массив), элементом которой она была — автоматически вызывается Release.

В Паскале стандартный класс TInterfacedObject реализует IUnknown, ведёт счётчик ссылок для него, и при Release'нии последней ссылки уничтожает сам себя.

Отсюда идея — отнаследовать все классы от TInterfacedObject, ввести к каждому классу зеркалящий его интерфейс, и после создания объекта работать с ним (только) через интерфейсы.
Сделаем ГРЯДКУ с ОВОЩАМИ на интерфейсах.
ГРЯДКА будет хранить список ОВОЩЕЙ, а каждый ОВОЩ — ссылку назад на ГРЯДКУ, с искусственной целью получить её имя.
https://ideone.com/XfM8ZG
Память при этом утекает — видно, что деструкторы объектов не выполнились. В отличие от полноценной сборки мусора, счётчики ссылок обманываются циклически связанными структурами.
Этого, однако, легко избежать. Разорвём циклическую зависимость, сделав ссылку из ОВОЩА назад на ГРЯДКУ слабой, т. е. неподсчитываемой — TVegetableGarden вместо IVegetableGarden.
https://ideone.com/TqMVTj
Теперь всё работает, и объекты освобождаются автоматически.

Это вполне промышленное решение (я видел свежий, в пределах года, пример проекта на хабре, в котором ВСЕ классы так сделаны, но, блин, потерял ссылку :|). И, наоборот, неиспользование подсчёта ссылок сильно усложняет жизнь. Представь, что ты высадил на грядку 3 овоща, про 2 из которых хочешь забыть (доверить грядке самой уничтожить их в своём деструкторе), а ссылку на третий, наоборот, планируешь оставить себе, чтобы впоследствии, уже после уничтожения грядки, спросить у него, как ему рослось. Счётчики ссылок разруливают вопросы с владением автоматически. Без них тебе пришлось бы придумывать способ явно указать грядке, что она должна уничтожать, а что — нет, и так в каждом новом случае.

Но всё равно это как-то не очень здорово в плане адского бойлерплейта и форсированной работы через интерфейсы. Можно поступить хитрее.
Будем всё так же наследовать наши объекты от TInterfacedObject ради подсчёта ссылок.
Но парные интерфейсы мы создавать не будем и вообще работать через интерфейсы не будем. Вместо этого объявим единственный тип Reference — псевдоним для IInterface (= IUnknown).

Удержание Reference будет символизировать удержание сильной ссылки.
Всем, кто логически ~владеет~ объектом, нужно удерживать Reference на него.
Когда в такую Reference присваивается объект, она автоматически инкрементирует его счётчик ссылок, а когда Reference выходит из скоупа или переприсваивается — декрементирует.
Нужно хранить их рядом и аккуратно следить, чтобы, когда мы заменяем объект другим — переприсваивать связанную Reference. Поэтому такие переменные разумно делать приватными полями классов, работа с которыми скрыта за вызовами методов.
Если нужна слабая ссылка — просто работаем без Reference.

Получается так: https://ideone.com/F31c7M.

Ну и вот, похоже, это лучшее, что можно предложить.

Это решение хорошо тем, что оно так-то вообще не завязано на интерфейсы, а просто эксплуатирует факт их управляемости. Так, в транке Free Pascal сделаны https://wiki.freepascal.org/management_operators — возможность превратить свой record в управляемый тип, с пользовательскими инициализацией, финализацией и копированием (НАКАНЕЦТА БЛЯТЬ), и вместо интерфейсной переменной Reference может быть реализован и таким record'ом с перегруженным operator :=.
MpnTg8-WrU0waifu2xartnoise3tta1.png1,3 Мб, 1125x2001
Рируру !!gYmpHned/k 22 370984
>>70342
Ещё такая тема. Я сказал, что человеческого RAII нет, но контрчеловечный таки есть, и его стоит использовать.
Сразу квестик, переделанный без ручного уничтожения объектов: https://ideone.com/SRWpVw. Сейчас объясню по порядку.

Переменные-объекты классов — это голые указатели, работа с одними ними не подразумевает никакой магии компилятора, кроме разве что неявного разыменования при обращении через «.». В том числе, как уже говорилось ранее, они не освобождаются автоматически. Так что
type
  PMyRecord = ^TMyRecord;
  TMyRecord = record
    x: integer;
  end;

  TMyClass = class
    x: integer;
  end;

var
  rec: PMyRecord;
  cls: TMyClass;

begin
  new(rec);
  rec^.x := 5;
  writeln(rec^.x);
  dispose(rec); rec := nil;

  cls := TMyClass.Create;
  cls.x := 5;
  writeln(cls.x);
  FreeAndNil(cls);
end.
— это принципиально одно и то же (ну, с точностью до фич class, которые здесь не важны).

Но в Паскале есть интерфейсы. Они изначально введены для совместимости с Microsoft'овской технологией COM — понятия не имею, что это такое, но сама она нас не интересует, и это не привяжет нас к Microsoft-платформам — на рассматриваемом уровне это просто тоненький бинарный стандарт. Важны только некоторые следствия.

COM как раз предполагает общение объектов через ~интерфейсы~, наследуемые от общего предка — IUnknown, которому полагается иметь 3 метода:
— QueryInterface — спрашивает у объекта его интерфейс по уникальному идентификатору (GUID). Это позволяет языку реализовать операции is и as для интерфейсов. Нам это не нужно, и GUID нашим интерфейсам можно вообще не указывать.
— AddRef — сообщает, что ты удерживаешь новую ссылку на объект.
— Release — сообщает, что ссылку ты больше не удерживаешь.

Так что IUnknown предполагает управление временем жизни объекта через подсчёт ссылок. Чтобы упростить работу с ним, интерфейсы сделаны управляемыми типами (как и string и array of), при работе с которыми компилятор автоматически дёргает AddRef/Release в нужные моменты. Например:

var
  a, b: IMyInterface;
begin
  a := b;
end;

— как и с присваиваниями string'ов, невидимо распишется в b.AddRef; a.Release; pointer(a) := pointer(b). А когда переменная интерфейсного типа выходит из области видимости, или когда уничтожается структура (класс, массив), элементом которой она была — автоматически вызывается Release.

В Паскале стандартный класс TInterfacedObject реализует IUnknown, ведёт счётчик ссылок для него, и при Release'нии последней ссылки уничтожает сам себя.

Отсюда идея — отнаследовать все классы от TInterfacedObject, ввести к каждому классу зеркалящий его интерфейс, и после создания объекта работать с ним (только) через интерфейсы.
Сделаем ГРЯДКУ с ОВОЩАМИ на интерфейсах.
ГРЯДКА будет хранить список ОВОЩЕЙ, а каждый ОВОЩ — ссылку назад на ГРЯДКУ, с искусственной целью получить её имя.
https://ideone.com/XfM8ZG
Память при этом утекает — видно, что деструкторы объектов не выполнились. В отличие от полноценной сборки мусора, счётчики ссылок обманываются циклически связанными структурами.
Этого, однако, легко избежать. Разорвём циклическую зависимость, сделав ссылку из ОВОЩА назад на ГРЯДКУ слабой, т. е. неподсчитываемой — TVegetableGarden вместо IVegetableGarden.
https://ideone.com/TqMVTj
Теперь всё работает, и объекты освобождаются автоматически.

Это вполне промышленное решение (я видел свежий, в пределах года, пример проекта на хабре, в котором ВСЕ классы так сделаны, но, блин, потерял ссылку :|). И, наоборот, неиспользование подсчёта ссылок сильно усложняет жизнь. Представь, что ты высадил на грядку 3 овоща, про 2 из которых хочешь забыть (доверить грядке самой уничтожить их в своём деструкторе), а ссылку на третий, наоборот, планируешь оставить себе, чтобы впоследствии, уже после уничтожения грядки, спросить у него, как ему рослось. Счётчики ссылок разруливают вопросы с владением автоматически. Без них тебе пришлось бы придумывать способ явно указать грядке, что она должна уничтожать, а что — нет, и так в каждом новом случае.

Но всё равно это как-то не очень здорово в плане адского бойлерплейта и форсированной работы через интерфейсы. Можно поступить хитрее.
Будем всё так же наследовать наши объекты от TInterfacedObject ради подсчёта ссылок.
Но парные интерфейсы мы создавать не будем и вообще работать через интерфейсы не будем. Вместо этого объявим единственный тип Reference — псевдоним для IInterface (= IUnknown).

Удержание Reference будет символизировать удержание сильной ссылки.
Всем, кто логически ~владеет~ объектом, нужно удерживать Reference на него.
Когда в такую Reference присваивается объект, она автоматически инкрементирует его счётчик ссылок, а когда Reference выходит из скоупа или переприсваивается — декрементирует.
Нужно хранить их рядом и аккуратно следить, чтобы, когда мы заменяем объект другим — переприсваивать связанную Reference. Поэтому такие переменные разумно делать приватными полями классов, работа с которыми скрыта за вызовами методов.
Если нужна слабая ссылка — просто работаем без Reference.

Получается так: https://ideone.com/F31c7M.

Ну и вот, похоже, это лучшее, что можно предложить.

Это решение хорошо тем, что оно так-то вообще не завязано на интерфейсы, а просто эксплуатирует факт их управляемости. Так, в транке Free Pascal сделаны https://wiki.freepascal.org/management_operators — возможность превратить свой record в управляемый тип, с пользовательскими инициализацией, финализацией и копированием (НАКАНЕЦТА БЛЯТЬ), и вместо интерфейсной переменной Reference может быть реализован и таким record'ом с перегруженным operator :=.
23 370986
Хуя прогрессирующие шизики итт сидят
24 370994
>>70875
В смысле ты и Азербайджана?
25 370998
Хороший клип запилил brokenchelust, ты использовал в оп пике оттуда кадр, вот и спросил, подумал может это ты.
26 371025
>>70994
неа
27 371027
>>70998
так это же shaye saint jonh, мой любимый авангардный сценарист 21 века. Мужик на себя части манекена напялил и фрика играл. Любимый интернет персонаж наряду с филти френком.
вот ссылка на вики https://en.wikipedia.org/wiki/Shaye_Saint_John ток на инглише
изображение.png324 Кб, 276x380
28 371029
>>70986
добро пожаловать, здесь тебе всегда рады
изображение.png1,4 Мб, 1280x720
29 371031
>>70984
Бля чел спасибо за инфу, но знаешь я пиздец какой зеленый в программировании, я в основном им занимаюсь чисто для того чтобы мозги сохраняли математическую логику а квест я решил замутить потому что переиграл во всякие первые фолауты да пленскейпы. Я даже до конца не разобрал твой первый пост лол
15896033497220.jpg37 Кб, 588x538
30 371645
По сути за последние пару дней нихуя не произошло, вот реально, ничего хорошего и ничего плохого. Максимум могу только рассказать про сон который мне приснился сегодня ночью.
Итак, судя по антуражу сна я находился что то среднее между стандартным детским лагерем и американским колледжем а если точнее, то колледж выглядел так же как его показывают во всяких фильмах, ну вот первое что помню это свой кампус. Стандартный двухэтажный дом, справа находится будка зав кампусом, рядом комната со всяким грязным бельем лень вспоминать как оно называется. Помню комнату в который я "спал" - 4 койки 4 тумбы, решетчатая дверь и железная дверь, как в тюрьме. Я был в обычной рубашке и грязных джинсах. Не помню почему, но я был очень зол на руководство сие лагеря или концлагеря, такие я выводы сделал после того как проснулся. После этого помню как я украл кухонный нож, затем провал сюжета, а потом помню как рублю бабку топором в военной форме Раскольников сука, после пробуждения я сделал вывод что это и есть то самое руководство. Таки все
31 371648
ну еще в ближайшую неделю будут холодные дожди, так что я буду заточен в 4 стенах не особо хорошо, но такова жизнь
32 371781
>>71648
чет сегодня нихуя не холодно, а может даже более менее тепло, похуй покатаюсь
p5pZfOTOFYA.jpg31 Кб, 640x480
33 372201
эх, устал чет уже учиться и вообще заниматься умственной деятельностью. Хочу купить себе синтезатор, пока какой еще не решил либо аналоговый корг волка кейс, лиюо цифровой корг волка фм да я знаю что норм синт как корг минилог стоит в районе 50к, но я не смогу позволить себе такую роскошь , поэтому буду искать подработку летом. думал найти работу в каком нибудь музыкальном магазине, так что закончу на этой неделе со всеми долгами и экзами и буду звонить в конторки насчет работы
Lё Baguette !9Qb2wH9JlU 34 372443
>>71645
Хороший сон, и сюжеты интересные
35 372655
>>72443
спасибо старался
36 372657
попробовал трипкод замутить, чисто тест там все дела блять
37 372659
бля а хули трипкод не сработал
38 372661
похуй
39 372662
итак, вот если честно, я не забил на дневник, просто в данный момент просто сил нет что то делать, руки уже опускаются при любом действии и я не ебу почему. мое состояние че то между бесконечной апатии и безудержной истерикой
1 (2).jpg569 Кб, 1280x960
40 374296
итак дырач, я вернулся из запоя и с новыми силами готов дальше вести дневничок, и так за прошедшую неделю я окончательно понял что я симпатизирую еот, так же я стал гулять по городу свободно разговаривать с людьми хожу в маске, я че долбаеб без маски ходить, я исправил все долги и со спокойной душой могу направляться к бесконечной лени и сидение за аблетоном 24/7. попробовал поискать всяких ебнутых людей всяких разных мастей, но чет они все меня ебанутым посчитали ironic. Насчет программирования забил,так как мне нужны знания, а мне их лень доставать и лень читать всякую литру по этой теме, а вот насчет музяки я начал потихоньку делать свой альбом. он будет таким хаусавым и танцевальным, связан с темой сна. примерно 12 без бонус трека композиций.
41 375860
>>74296

>исправил все долги


Ужасно, последний фактор, сдерживающий тебя от утопания в бесконечной лени и мастурбации иссяк.
42 381765
>>74296
Ты как?
Тред утонул или удален.
Это копия, сохраненная 1 августа 2021 года.

Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее

Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.
« /dr/В начало тредаВеб-версияНастройки
/a//b//mu//s//vg/Все доски