Автор Тема: прикладная монадология...  (Прочитано 28392 раз)

Илья Ермаков

  • Sr. Member
  • ****
  • Сообщений: 493
    • Просмотр профиля
Re: прикладная монадология...
« Ответ #30 : Сентябрь 06, 2012, 08:07:15 am »
По поводу того, как работаю с памятью, я кое-что писал - и меня тут уже даже цитировали где-то на этом форуме.
Не регионы. Не стек для объектов. Конечно, использование является как раз фишкой Оберона по сравнению с Java/C#, в том смысле, что массивы/строки и проч., нужные для того чтобы принять-передать части данных, можно держать полностью на стеке. Ясен хрен, что изменить Java, ввести всякие оптимизации можно, только вы сможете это сделать? И какую сложность и багонасыщенность имеют все новые рантаймы, даже от больших корпораций?

А какие ты инструменты делаешь? Насколько я вижу (то есть то что публично известно) компиляторы Оберона например ты не пишешь.
Библиотеки для серверных и веб-приложений и NoSQL. Для своих задач и, кроме того, держа в голове каждый раз то, насколько удобно я смогу на этом кого-нибудь научить.

Они просто для разного созданы. Совсем для разного. На уровне того что пишешь в момент изучения языка (пишешь сам с нуля) этого просто не видно.
Конечно. Эрланг создан как DSL для приложений массового обслуживания. Безусловно, ему в конкретной нише общий язык проиграет. Но применяться он там тоже сможет. И если ведётся разработка для разных ниш, то нецелесообразно использовать разные языки. Не будет накопления компонентов.




С++ выше уровнем чем Оберон. Ada, С# и даже Java - тоже выше. Ниже уровнем, если не ошибаюсь, Паскаль (обычный, не Object). А вот Modula-3 уже выше. Куда поставить Си я затрудняюсь сказать (по некоторым признакам он ниже уровнем, по некоторым выше).
Модула-3 - очень хороший, очень аккуратно спроектированный язычок. Но для меня крест поставило на нём то, что всё ООП там только на куче. Приехали :)

Илья Ермаков

  • Sr. Member
  • ****
  • Сообщений: 493
    • Просмотр профиля
Re: прикладная монадология...
« Ответ #31 : Сентябрь 06, 2012, 08:16:49 am »
Цитировать
Кстати, а что значит "подсаживает"? Ну вот кто конкретно подсаживает например на С++?
Не в смысле злонамеренности... Но в смысле общественного мнения, например.

Блин, Алексей, ну Борланд же оценивал, было дело, разработку компилятора С++ в 100 млн.$ Во сколько раз должен он увеличивать производительность и проч., что было оправдано применение его, а не того инструмента, который на порядок дешевле?
Это обманчивое впечатление, что "оно уже разработано - какая разница, сколько внутри человекочасов". Это зависимости от сложности, одна сложность тянет другую - всё это накапливается лавинообразно, ну блин, это же видно. Сколько технологий, отсосавших внимание, силы, деньги (ресурсы планеты, в конце концов :) ) было - CORBA, COM, COM+.... ? В Java и .NET научились, с горем пополам, удерживать громоздкость на тот уровне, чтобы это было не обузой, а реально доступным людям инструментом. Но, в принципе, что мешало сделать это раньше, не плутая по дебрям избыточной сложности предыдущих компонентных технологий? Не в последнюю очередь дух С++, кстати, в широком смысле :) Эйфория от сложности.
Давайте подумаем, сколько человек на планете именно сейчас тратит своё время на изучение новой модной мейнстримной технологии, вместо того, чтобы делать что-то нужное и/или что-то полезное.

Цитировать
Откровенно говоря, я не вижу смысла отказываться от сообщества.
А смысл в сообществе, продукты которого я не могу применять из-за того, что они недостаточно "рафинированы", если я вынужден проходить цепочку мысли по каждой задаче самостоятельно, чтобы найти более компактный и базовый вариант, потому что кто-то не потрудился этого сделать?

Berserker

  • Sr. Member
  • ****
  • Сообщений: 254
    • Просмотр профиля
Re: прикладная монадология...
« Ответ #32 : Сентябрь 06, 2012, 05:49:30 pm »
Цитировать
И почему какая-то там стопка (тарелок, видимо), а не стандартный для русскоязычной программистской терминологии магазин?
По трём причинам:
1) Один из прямых переводов.
2) Яркое соответствие смыслу структуры данных. Стопка книг или тарелок, сверху кладём, сверху забираем.
3) Близко к английскому варианту, так как тоже начинается на "ст".

То, что heap не хип, а куча, никого ведь не смущает.

Geniepro

  • Hero Member
  • *****
  • Сообщений: 1955
  • Знайте- истина в том, что повторено трижды подряд!
    • Просмотр профиля
Re: прикладная монадология...
« Ответ #33 : Сентябрь 06, 2012, 06:07:19 pm »
То, что heap не хип, а куча, никого ведь не смущает.
Скажите, а компьютер Вы называете "электронной вычислительной машиной" и никак иначе?
Трансляторы/интерпретаторы -- толмачами, переводчиками на машинный язык?
Вообще само "программирование" тоже надо перевести на русский, например как "планирование действий для вычислений"...

А может быть стоит всё же использовать устоявшиеся, общеупотребительные термины, ведь половина проблем непонимания возникает из-за несогласованности в терминологии...
to iterate is human, to recurse, divine

Салат «рекурсия»: помидоры, огурцы, салат…

Berserker

  • Sr. Member
  • ****
  • Сообщений: 254
    • Просмотр профиля
Re: прикладная монадология...
« Ответ #34 : Сентябрь 06, 2012, 07:35:35 pm »
Отсутствует механизм отсева, фильтрации мусора. Нет таких слов, как юзабилити и фреймворк, бенчмарк и сплайсинг. Наверное по той же причине, по которой нет слов nastrojka, karkas, razjom. В настоящее время появиться "термину" не сложно: берёте английское слово и делаете транскрипцию, начинаете употреблять. Не сразу, но подтянутся.

valexey

  • Administrator
  • Hero Member
  • *****
  • Сообщений: 1990
    • Просмотр профиля
Re: прикладная монадология...
« Ответ #35 : Сентябрь 06, 2012, 08:20:07 pm »
Отсутствует механизм отсева, фильтрации мусора. Нет таких слов, как юзабилити и фреймворк, бенчмарк и сплайсинг. Наверное по той же причине, по которой нет слов nastrojka, karkas, razjom.
Зато есть слово Sputnik.

Жаргонизмы следуют за лидером.
"но сейчас, чтобы компенсировать растущую мощность компьютеров, программисты используют фреймворки"

Berserker

  • Sr. Member
  • ****
  • Сообщений: 254
    • Просмотр профиля
Re: прикладная монадология...
« Ответ #36 : Сентябрь 06, 2012, 08:38:19 pm »
Русская интеллигенция всегда отдавала предпочтение иностранным языкам, использованию заимствованных слов в устной и письменной речи. Этот феномен жив и сейчас. В любом случае, думаю, вряд ли произойдёт что-то страшное, если будет употреблён именно перевод, пусть и непривычный, а если не употреблять, то альтернатив никогда и не появится.

valexey

  • Administrator
  • Hero Member
  • *****
  • Сообщений: 1990
    • Просмотр профиля
Re: прикладная монадология...
« Ответ #37 : Сентябрь 06, 2012, 08:45:34 pm »
Русская интеллигенция всегда отдавала предпочтение иностранным языкам, использованию заимствованных слов в устной и письменной речи. Этот феномен жив и сейчас. В любом случае, думаю, вряд ли произойдёт что-то страшное, если будет употреблён именно перевод, пусть и непривычный, а если не употреблять, то альтернатив никогда и не появится.
Да не, я то не против. Сам иногда стек называют стопкой (и да, с алкоголем у меня почему-то не ассоциируется).

А феномен потому имеет место, что русский язык отлично впитывает (обвязывая приставками/суфиксами) корни иностранных слов. И я не вижу в этом ничего плохого - больше корней, однозначней фразы. Англоговорящих мне даже жалко. У них очень контекстно зависимые предложения получаются.

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

Geniepro

  • Hero Member
  • *****
  • Сообщений: 1955
  • Знайте- истина в том, что повторено трижды подряд!
    • Просмотр профиля
Re: прикладная монадология...
« Ответ #38 : Сентябрь 07, 2012, 05:02:15 am »
В любом случае, думаю, вряд ли произойдёт что-то страшное, если будет употреблён именно перевод, пусть и непривычный, а если не употреблять, то альтернатив никогда и не появится.
Да, в худшем случае Вас просто не поймут и Вам придётся объяснять, что Вы имеете в виду, иначе из-за непонимания обсуждение будет развиваться неизвестно как...
to iterate is human, to recurse, divine

Салат «рекурсия»: помидоры, огурцы, салат…

Губанов Сергей Юрьевич

  • Hero Member
  • *****
  • Сообщений: 590
    • Просмотр профиля
    • Домашняя страница
Re: прикладная монадология...
« Ответ #39 : Сентябрь 07, 2012, 11:14:44 am »
Я ими периодически делился. Например, про возможность сочетать герметичность и валидность ссылок с работой без GC. Это невозможно и в Java, ни в C#.
Зато это возможно как минимум в Аде (от 83 года) и в С++ (через свои типы). Как минимум. Также, если мне склероз не изменяет, в одном из фортранов. То есть ничего нового.
Вы так хорошо друг друга поняли, а я нет. Что такое "сочетать герметичность и валидность ссылок с работой без GC. Это невозможно и в Java, ни в C#" ? ? ?
Насколько я понял, речь идет о полиморфных объектах на стеке с невозможностью утекания ссылок на них куда-то во вне и без рукопашного управления памятью. Собственно ровно то, из за чего ты ковыряешь тему Оберона под .net.
Так у меня не стек, у меня куча управляемая врукопашную, но безопасно (без порчи памяти). Мой тезис состоит в том, что при больших объёмах оперативной памяти (гораздо больших чем даст 32 разрядный Блэкбокс) использование сборщика мусора становится нежелательным из-за слишком длинных пауз: Паузы в работе программы вызываемые GC. Например, на уборку мусора всего лишь на 8 Гб в дотнете может уйти до 20 секунд на Core i7 2600K, что же будет если программа займёт 32-64 Гб оперативки? А если несколько сотен гигабайтов??? Моё ковыряние -- поиск безопасных способов организации работы с очень большой памятью, на которой никакой GC эффективно работать не сможет. Размещение объектов на массивах структур и обращение к ним по индексам прокатывает. Порча памяти невозможна так как всё сэйфное. Работает за О(1). Правда с индексами массива встаёт проблема подобная проблеме "повисших указателей". Вот такая фигня. Как мне кажется её можно на 95% победить сделав оператор присваивания "умных индексов" приватным. Почти как в плюсах. Но только в плюсах пошли уж слишком далеко -- разрешили его переопределять, по моему достаточно всего лишь делать его приватным.

Geniepro

  • Hero Member
  • *****
  • Сообщений: 1955
  • Знайте- истина в том, что повторено трижды подряд!
    • Просмотр профиля
Re: прикладная монадология...
« Ответ #40 : Сентябрь 07, 2012, 11:34:00 am »
Размещение объектов на массивах структур и обращение к ним по индексам прокатывает. Порча памяти невозможна так как всё сэйфное. Работает за О(1). Правда с индексами массива встаёт проблема подобная проблеме "повисших указателей". Вот такая фигня.
Может стоит эти массивы организовать по принципу регионов памяти?
Как стал ненужным какой-то кусок такого массива (группа объектов в нём) -- так и освобождать его целиком, не заботясь об объектах по отдельности...
to iterate is human, to recurse, divine

Салат «рекурсия»: помидоры, огурцы, салат…

Губанов Сергей Юрьевич

  • Hero Member
  • *****
  • Сообщений: 590
    • Просмотр профиля
    • Домашняя страница
Re: прикладная монадология...
« Ответ #41 : Сентябрь 07, 2012, 12:33:08 pm »
Может стоит эти массивы организовать по принципу регионов памяти? Как стал ненужным какой-то кусок такого массива (группа объектов в нём) -- так и освобождать его целиком, не заботясь об объектах по отдельности...
Тут парится не из-за чего, так как взять или освободить объект на массиве - это O(1). Просто держится список (точнее стек) свободных элементов. Свободить объект означает поместить в этот стек индекс элемента массива. Создать объект означает взять из стека индекс свободного элемента, а если стек пуст, то запросить у ОС ещё одну "страницу". "Страничную" организацию (массив указателей на массивы вместо одномерного массива) я использую чтобы у операционной системы слишком много памяти с самого начала не брать: новую "страницу" запрашиваю по мере надобности. Если на какой-то "странице" объекты перестали использоваться, то её можно было бы и вернуть обратно в операционную систему, но иногда это делать противопоказано. Я имею дело с программами которые работают, скажем так, циклически 365/7/24. Изо дня в день программа выполняет практически одно и тоже (телефонная станция), а значит если ей один раз понадобилось сколько-то памяти под объекты определённого сорта, то через некоторое время она понадобится ещё раз. Через несколько дней работы программа отъест сколько-то памяти и практически перестанет запрашивать новую память. Расход памяти такой "циклической" программой в зависимости от времени очень похож на логарифмический. Для программ общего назначения конечно память обратно в систему отдавать надо.

Geniepro

  • Hero Member
  • *****
  • Сообщений: 1955
  • Знайте- истина в том, что повторено трижды подряд!
    • Просмотр профиля
Re: прикладная монадология...
« Ответ #42 : Сентябрь 07, 2012, 12:42:09 pm »
Свободить объект означает поместить в этот стек индекс элемента массива.
Но эту операцию (по сути аналог оператора delete) приходится делать вручную? И, так же как с delete, её можно забыть сделать и вызвать "утечку памяти"?
Регионы могли бы автоматизировать этот процесс...
to iterate is human, to recurse, divine

Салат «рекурсия»: помидоры, огурцы, салат…

Губанов Сергей Юрьевич

  • Hero Member
  • *****
  • Сообщений: 590
    • Просмотр профиля
    • Домашняя страница
Re: прикладная монадология...
« Ответ #43 : Сентябрь 07, 2012, 12:48:17 pm »
Регионы могли бы автоматизировать этот процесс...
Как?

Geniepro

  • Hero Member
  • *****
  • Сообщений: 1955
  • Знайте- истина в том, что повторено трижды подряд!
    • Просмотр профиля
Re: прикладная монадология...
« Ответ #44 : Сентябрь 07, 2012, 01:02:43 pm »
Регионы могли бы автоматизировать этот процесс...
Как?
Ну как вариант, придётся сделать некий класс -- аллокатор в этом массиве, знающий про тот стек, и работать через него.
Сам этот класс должен реализовать интерфейс IDisposable, и затем его использование оформить внутри оператора using -- тогда при выходе действия программы за пределы жизни этого региона (выход за пределы оператора using) автоматически освободит (вернёт в стек) ненужные уже элементы того массива (их индексы).

Хотя, возможно, там придётся повозиться с многопоточностью, и, видимо, как-то разрулить вложенные регионы...
to iterate is human, to recurse, divine

Салат «рекурсия»: помидоры, огурцы, салат…