LINUX.ORG.RU

Избранные сообщения unsigned

Страуструп о будущем семантических средств разработки с комментариями

Новости — Документация
Группа Документация

У Страуструпа имеется книжка о развитии и о будущем средств разработки для языка C++, "Дизайн и эволюция языка C++", в частности о поддержке семантического программирования. Интерес представляют комментарии к книге данные Евгением Зуевым, одним из известных советских программистов и разработчика компилятора C++.

Отредактировано anonymous_incognito

>>> Подробности

 ,

anonymous
()

Allegro CL 9.0 Free Express Edition стал доступен для загрузки

Новости — Проприетарное ПО
Группа Проприетарное ПО

Для загрузки на попробовать стала доступна версия коммерческой реализации языка программирования Common Lisp — Allegro CL 9.0 Express Edition.

Доступны пакеты для:

  • Linux (glibc 2.11 или позже);
  • Mac OS X (10.6 или позже), включает поддержку Lion;
  • FreeBSD (8.2 или позже);
  • Windows (XP, Vista, 7, 8, Server).

Основные новшества и изменения в этой версии:

  • полная поддержка SMP;
  • 820 исправлений и улучшений с последнего релиза;
  • полностью обновлен AllegroServe — вебсервер Franz Inc., написанный на лиспе: автоматическая компрессия/декомпрессия файлов, поддержка chunking, новый выбор опций безопасности, включая TLS v1.0 (также известный как SSL v3.1) протокол для защищенных соединений;
  • улучшена интеграция с Java через модуль jLinker, улучшен протокол, стал проще API;
  • новая и значительно упрощенная инсталляция для графических утилит на Mac 64-бит.

>>> Загрузка

 ,

gensym
()

Ядро на ООП

Форум — Development

А как вам идея написать ядро ОС, по сложности и возможностям сопоставимой с Linux, с применением ООП (например, на C++) Каждый драйвер, сервис и др. сделать классом (ну группой классов).

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

Минус - необходимость поддержки ООП в ядре влечёт за собой некоторый overhead (вот насколько он будет заметен - тоже интересный вопрос).

Высказывайтесь.

 ,

hobbit
()

vim для C и C++

Форум — Development

А кто-нибудь здесь пишет на C или C++ в vim? Что у Вас интересного в конфигах? Не поделитесь своими .vimrc?

 ,

em1LL
()

Прошу совет у бывалых лисперов

Форум — Development

Доброго времени суток! Недавний мой пост о smalltalk натолкнул меня на мысль, что надо заниматься тем, что больше нравится. В итоге я пришел к выводу, что лиспо-семество мне ближе. Поэтому прошу многоуважаемых спецов по лиспу посоветовать: 1. Какую реализацию Lisp выбрать? В чем ее преимущество перед другими? Есть ли возможность заводить под оффтопик? 2. Какой графический тулкит лучше всего вяжется с данной реализацией? 3. Какой быстрый туториал можно почитать по данной реализации лиспа? (классические труды в over9000 страниц не советовать, их я найду в LispFAQ и через поиск лора, интересуют именно туториалы после которых я могу начать писать код через пару вечеров неспешного чтения).

З.Ы.: Если найдутся противники лиспа и/или сторонники C# - отговорите меня реализовывать ERP на лиспе (работаю на C# сейчас, поэтому с ним будет легче). еще раз хочу заметить, что «ерпа» будет домашней поделкой, «для себя» и в целях саморазвития.

 , , , домашний проект,

i_overdose
()

мануал по внутреннему устройству OpenJDK

Форум — Development

Сабж

Есть ли в интернетах хорошее описание внутренностей OpenJDK, особенно - компилятора? Где, что, почему, зачем, итп

Гуглил, не нагуглил

stevejobs
()

[вброс]Почему объектно-ориентированное программирование провалилось?

Форум — Development

http://citforum.ru/gazeta/165/

по линку многабукаф, немного для Ъ:

факт остаётся фактом: сторона, представлявшая объектно-ориентированное программирование, во время открытой дискуссии с противниками под смех зала даже запуталась в своих же концепциях. Люди вспоминают, что у всех создалось стойкое впечатление, что аргументация Lisp’еров была куда убедительней и последовательней, чем сторонников ООП.

Другой крупный критик ООП – это известный специалист по программированию Александр Степанов, который, работая в Bell Labs, участвовал в создании C++ вместе c Бьерном Страуструпом (Bjarne Stroustrup), а впоследствии, уже после приглашения в HP Labs, написал Standard Template Library (STL). Александр Александрович полностью разочаровался в парадигме ООП; в частности, он пишет: “Я уверен, что парадигма ООП методологически неверна. Она начинает с построения классов. Это как если бы математики начинали бы с аксиом. Но реально никто не начинает с аксиом, все начинают с доказательств. Только когда найден набор подходящих доказательств, только тогда на этой основе выводится аксиома. Т.е. в математике вы заканчиваете аксиомой. Тоже самое и с программированием: сначала вы должны начинать развивать алгоритмы, и только в конце этой работы вы приходите к тому, что оказываетесь в состоянии сформулировать четкие и непротиворечивые интерфейсы. Именно из-за этой неразберихи в ООП так популярен рефакторинг – из-за ущербности парадигмы вы просто обречены на переписывание программы, уже в тот самый момент, когда только задумали её спроектировать в ООП-стиле”.

Ричард Столлман (Richard Stallman) также известен своим критическим отношением к ООП, особенно он любит шутить насчет того мифа объектников, что ООП “ускоряет разработку программ”: “Как только ты сказал слово «объект», можешь сразу забыть о модульности”.

Ричард Гэбриел неожиданно сравнивает нынешнюю ситуацию с ООП с провалом эфиродинамики в физике начала 20 века, когда, в сущности, произошла “тихая революция”.

 

Rastafarra
()

Советую всем посмотреть лекции А. Степанова в Yandex.

Форум — Development

Он там прочёл 2 большие лекции. Первая часть первой лекции: http://video.yandex.ru/users/ya-events/view/129/

Смотрели многие, но многие и не заметили.

Это автор STL для C++. Давно занимается вопросами обобщённого программирования. Вопросами отделения типов от алгоритмов. Вопросами унификации библиотек для всех языков без проседания производительности. Сравнивает программистов и электронщиков - первые постоянно собирают всё из транзисторов, а вторые уже давно юзают готовые микросхемы (намёк на хорошие библиотеки). Оч. интересные и вдохновляющие лекции. Советует выкинуть Александреску на помойку, не заниматься изучением питонов и хаскелей и их отличий, а сначала осилить базовые вопросы построения и анализа алгоритмов и читать Кнута или хотя-бы купить и поставить на полку, чтобы он оттуда говорил: «прочитай, прочитай...»

mriadus
()

[C][pool based memory allocator]

Форум — Development

Подскажите какую-нибудь приличную сишную библиотеку для работы с памятью через пул объектов. Года 4 назад что-то находил, но название вылетело из головы совершенно.

Лицензия LGPL, BSD, etc...

 

mv
()

[C++?] Серьезный вопрос.

Форум — Development

Просьба ответит серьезно, желательно с аргументами за или против.

Предистория:
Когда то давным давно (я тогда еще только закончил 9-ый класс) я увидел в газете объявление о наборе в летнюю группу по изучению классического программирования. В тот момент я был с компьютером на ты и "очень" хорошо в них разбирался (переустанавливал Windows каждый месяц, хаял Microsoft просто потому, что после моих настроек W приходилось постоянно переустанавливать). Группа по классическому программированию так и не набралась, но набралось 1 человек на Visual Basik for Applications. Я соглсился быть вторым и начались занятия.
Все, что мне там объясняли я схватывал быстро. Меня пригласили продолжить обучение в сентябре на курсе "моделирование".
Там уже был Pascal, который я тогда совсем не знал. Сам курс был очень разношорстный: мы изучали и использование мыши через прерывание, готовились к различным олимпиадам. Параллельно я изучил Pascal.
Потом был Delphi. К концу 10-го класса я уже неплохо владел приемами программирования и вовсю клепал бесполезные программулины. Потом поступил в универ на программиста. Там тоже был Delphi, и я особо не напрягаясь писал все лабы (к моменту поступления я уже был знаком с логикой указателей, самописные стеки и графы, etc).
На 2-ом курсе в гостях у знакомого я разобщался с человеком, который уже насколько лет работал в нерезиновой программистом. Он мне и открыл глаза на мир: "Delphi здох. Его уже похоронили и забыли. Сейчас необходимо знание C++, C#. Необходимо занание паттернов проектирование". Вобщем много чего он мне наговорил. Книжек умных насоветовал, подкинул MSVS 2008, кучу электронных книжек. Я изучил C# по книжке Шилдта. Читал "Идеальный кол" (автора уже не помню). Потом купил(!) себе книжку Шилдта про С++. Мне понравился язык. Тем более что мне казалось, что именно он и есть общепринятый стандарт. Наиболее удобный язык для программиста.

А недавно в соседней теме за упоминание это С++ меня чуть было не съели со всем чем можно. Так-то.

Собственно вопрос: Так стоит ли изучать дальше С++ (а я уже достаточно углубился в книжку Страуструпа, подробно изучая все подводные течения)? Какой язык стоит изучать? Какие из них более востребованны?

Спасибо всем, кто осилил это многобукаф.

trex6
()

Планы по выпуску GTK+ версии 3

Новости — GNOME
Группа GNOME

В списке рассылки gtk-devel-list обсуждаются планы выпуска GTK+ версии 3. Основные подготовительные действия, которые необходимо предпринять в текущей ветке:

  • Спрятать все открытые поля структур с помощью макроса GSEAL(). В случае необходимости предоставить новые методы доступа к этим полям. Также должны быть скрыты поля-указатели "priv" на структуры, содержащие закрытые данные. Эти действия уже практически полностью проведены в репозитории git://git.imendio.com/projects/gtk+.git
  • Реализовать закрытые члены класса, что включает изменения в коде GType.
  • Объявить как deprecated публичные данные класса с помощью макроса GSEAL().
  • Поскольку не останется простого способа для доступа к полям класса, а использование g_object_[sg]et() утомительно, необходимо ввести новые методы доступа, вроде g_object_get_int(), *double(), *string() и т.д.
  • Существует множество макросов, таких как GTK_WIDGET_GET_FLAGS(), которые всегда были причиной многочисленных проблем (см. bug #69872). Необходимо реализовать нормальные методы доступа (в виде функций) и избавиться от этих макросов.
  • GtkStyle, без сомнений, самый сложный тип, нуждающийся в скрытии публичных полей, и до релиза должно быть проведено множество исследований.
  • Избавиться от всего кода, объявленного deprecated в 2.x. Это подразумевает все соответствующие виджеты и функции.
  • Удалить все поля структур из публичного API. Есть два способа достичь этого:
    a) переместить все структуры в закрытые заголовки;
    b) переместить структуры в C-файл реализации, но тогда всей библиотеке придётся использовать соответствующие методы доступа.
    Эти варианты ещё обсуждаются.
  • Отключить deprecated-код по умолчанию во флагах компиляции.
Таким образом, версия 3.0 будет готова к релизу. Все приложения, которые собираются для ветки 2.x с макросом GSEAL() и не используют deprecated-кода, будут без проблем собираться для ветки 3.x. Наверное, таким образом разработчики пытаются избежать кошмара миграции, который можно видеть на примере библиотеки Qt.

>>> Подробности

 

Bohtvaroh
()

[@] GC

Форум — Development

а давайте поговорим о сборщиках мусора

используете ли языки с GC, и какими их преимуществами при этом пользуетесь? если не используете, то как автоматизируете работу с памятью (и автоматизируете ли)? знаете ли современные алгоритмы сборки мусора, оцениваете ли их производительность при выборе механизмов работы с памятью?

в общем, жажду конструктивной дискуссии

jtootf
()

корутины и продолжения

Форум — Development

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

tensai_cirno
()

Приходилось ли вам писать на Лиспе?

Форум — Development

Ну, что ж, в Development так в Development, хотя Лисп давно перестал быть мемом одного лишь Development'а (и даже одного ЛОРа). Итак, сабж!

[ ] Да, профессионально и за деньги
[ ] Да, just for fun и для самообразования
[ ] Да, участвовал в opensource-проекте
[ ] Да, пилил скрипты Emacs/GIMP/AutoCAD/Lilypond etc.
[ ] Да, в рамках образовательной работы (лаба, курсовик, диплом)
[ ] Да, в рамках академической работы (диссертация, статья, монография)
[ ] Да, мне сказали, что лисперов любят девушки
[ ] Нет, но собираюсь
[ ] Нет, и не собираюсь
[ ] Вообще-то я Джон МакКарти, а вы кто такие?
[ ] в Советской России Лисп пишет на тебе!

Приветствуются развернутые ответы и верифицируемые пруфлинки. Например, на какую фирму работали, в каком конкретно opensource-проекте участвовали, какая была тема научной работы, помогло ли с девушками, и тому подобное. INB4 буквоедов: под «лиспом» подразумеваются все языки семейства: Scheme, CL, Clojure и прочие.

Kuka
()

Какашки в Common Lisp

Форум — Development

Предлагаю учёным мужам в этом топике собрать и обсудить проблемы в языке Common Lisp. Кому что не нравится?

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

Не нравится неполная интеграция CLOS в язык: распознавание класса в CLOS для стандартных лисповских типов ещё работает, но не для своих типов, объявленных через deftype.

Ну и вообще CLOS жирноват для 90% задач. Не говоря уж про MOP, который почти никем не используется, а если и используется, то для решения проблем с кривостями CLOS, либо просто книжку AMOP обчитался и повредился умом.

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

Не нравится отсутствие стандартных средств рефлексии/интроспекции лексического окружения. Лексэнвы эти есть во всех реализациях, но стандартного способа работы с ними нету. Нужда в этой фенечке шкурная, и широкими массами не востребована, но всё же.

loop - какашка. Это не лисп. Точка.

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

unwind-protect - хорошо, но от попыток человеком сэмулировать продолжения для CL хочется икать. Такие trade-off вполне понятны, но лучше бы unwind-protect ограничили.

Ну и более мелкие ляпы в стандарте, типа (elt sequence index), но (nth index list).

Да, этот пост написан в Емаксе, запущенно под лисповым оконным менеджером человеком, получающем деньги за написание лиспокода :)

mv
()

Создатель Python разочарован в Scala

Новости — Java
Группа Java

Гвидо ван Россум, создатель Python, в своем блоге делится впечатлениями от изучения языка Scala: "К сожалению, я полностью разочарован в этом языке". Причиной является слишком сложная система типов Scala: "Если такая система необходима для корректной обработки разных типов данных во время компиляции, я однозначно предпочту динамическую типизацию".

>>> пост

 , ,

anonymous
()

Oracle анонсирует бесплатную и Premium версии Java VM

Новости — Java
Группа Java

Адам Мессингер (Adam Messinger), вице-президент Oracle по разработке, заявил на конференции QCon, что Oracle будет разрабатывать две версии JVM на основе OpenJDK: платную и бесплатную.

Мессингер не объяснил, чем Premium будет отличаться от бесплатной, но, похоже, она будет работать быстрее и поддерживать дополнительные способы взаимодействия с Java-библиотеками, разрабатываемыми самой Oracle.

>>> Подробности

 , ,

grim
()

Что круче: Лисп или Хаскелль?

Форум — Development

А так же почему гуглевый тренд показывает стабильный рост интереса к Хаскеллю и, как минимум, стабильное отсутствие роста интереса к лиспам.

mv
()

Линус Торвальдс выступил с критикой дизайна файловых систем

Новости — Open Source
Группа Open Source

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

Линус Торвальдс в списке рассылки ядра жестоко раскритиковал эти предложения и заявил, что большинство программистов никогда не будут этими новыми системными вызовами пользоваться, что они будут нестабильными и плохо оттестированными.

Цитата: "Поэтому вместо того, чтобы придумывать новые системные вызовы, которые никто не будет использовать, разработчики файловых систем должны стараться обеспечить нормальную работу даже плохого кода. Потому что, хотите вы этого или нет, 99% программ именно так и написаны.

Тот неоспоримый факт, что люди не проверяют ошибки, которые возвращает системный вызов close() (закрытие файла и сброс "грязных" данных из кэша на диск) должен означать, что, например, при отложенной записи на диск нужно обязательно проверять ситуацию переполнения диска. Если ваша файловая система возвращает ENOSPC при закрытии файла через вызов close(), а не при записи в него через write(), значит, что вы потеряли обработку ошибок переполнения диска у 90% приложений. Вот так всё просто.

Жаловаться на то, что ошибка в приложении - это всё равно, что жаловаться на скорость света: вы должны иметь дело с реальным миром, а не с тем, каким бы вы хотели его видеть. То же самое относится к идее, что "люди должны писать во временный файл, вызывать функцию fsync для него и переименовывать его вместо оригинала". Вы думаете, что так должно быть, но в реалии программисты пишут open(filename, O_TRUNC | O_CREAT, 0666). Это неправильно, я знаю. Но в конечном итоге, даже разработчики хорошо написанного приложения могут решить, что fsync() не стоит тех потерь в производительности. В git, например, где мы обычно пытаемся быть очень, очень и очень аккуратными, fsync() в объектных файлах по умолчанию выключен.

Почему? Потому что его включение вызывает неприемлемое поведение ext3. Сейчас, надо сказать, дизайн git'a рассчитан на то, что потеря нового БД файла не фатальна, но потенциально это очень беспокоит и смущает - вам, возможно, придётся откатить изменения назад и переделать некоторые операции вручную.

К чему я всё это говорю ? Иногда те разработчики файловых систем, которые говорят "вы должны использовать fsync(), чтобы получить предсказуемые результаты" - это те же люди, которые испортили всё это до такого безобразия, что fsync'ом абсолютно нереально пользоваться.

Теория и практика иногда сталкиваются. Когда это случается, теория проигрывает. Всегда."

Взято с opennet.

>>> Подробности

 

totalinux
()

Как оптимизировали программу на Ocaml

Новости — Документация
Группа Документация

По ссылке приведены примеры программ с соревнований на ICFPC'09 (кстати, самим по себе интересными тем, что участники соревновались в управлении космическими аппаратами) которые демонстрируют как оптимизационные возможности, свойственные функциональным языкам (в частности хвостовая рекурсия), позволяют написанной на нём программе-интерпретатору некоего языка управления двигателем космического аппарата обогнать по скорости работы аналогичную на C/C++.

>>> Подробности

 , , ,

anonymous_incognito
()