Просмотр сообщений

В этом разделе можно просмотреть все сообщения, сделанные этим пользователем.


Темы - ilovb

Страницы: [1] 2 3 ... 8
1
Общий раздел / Simit
« : Октябрь 02, 2016, 10:06:34 pm »
https://github.com/simit-lang/simit

Товарищи, никто не пробовал собирать это?

Я уже задолбался. Пробовал в винде с помощью TDM-GCC.
Cmake ни в какую не хочет видеть Glut и Eigen (хотя есть подозрение, что cmake с Евгеном глючно отработал).
Также пробовал через баш в винде. В этом случае застопорился уже на компиляции LLVM.


3
Урочище Флуда / WTF?
« : Март 02, 2015, 01:11:14 pm »
Что за юродивый тут свирепствует?
Филиппов который...
Может это... удалить нахуй все его темы вместе с аккаунтом?

4
Цитировать
С введением замыкаций и анонимных функций в версии 3.1 (июль 1998) мы решили использовать для итераций функции высшего порядка. (На самом деле, необходимость в for была одной из основных причин введения анонимных функций в Lua). Lua 3.1 вышла с двумя предопределенными функциями для итерирования:
foreach(table, f)
foreachi(table, f)

Функция foreach применяет f для всех пар ключ-значение, выбранных в произвольном порядке из заданной таблицы. Функция foreachi похожа, но рассматривает таблицу как список (или массив): она перебирает только элементы с числовыми ключами в порядке возрастания значений ключей. Хоть мы и предоставили только эти два способа обхода, было легко создать новые итераторы.
Но хоть и просто было создавать новые, но за более чем два года практически никто их не делал. Первой причиной был дискомфорт для многих программистов использовать анонимные функции и функции высших порядков в процедурном языке. А второй и, на наш взгляд, значительно более важной причиной было отсутствие необходимости для большинства разработчиков в других итераторах. Это означает, что многие годы мы пытались добиться того, что не нужно реальному пользователю. С пониманием этого, мы быстро разработали два формата цикла for: для числовой итерации и для обхода таблиц.

http://habrahabr.ru/post/229269/

5
Общий раздел / ANDIF aka and then
« : Июнь 29, 2014, 02:34:25 pm »
Есть такая плюшка в аде (в выражениях). Еще была тема на oberoncore (искать лень), где Илья Ермаков возжелал такой механизьм для последовательности действий.

В обсчем я тут покодил на Go, прочуйствовал обработку ошибок, и задался вопросом:
А что мешает добавить ANDIF по аналогии с ELSIF?

IF cond1 THEN

ANDIF cond2 THEN

ANDIF cond3 THEN

ELSIF cond4 THEN

ANDIF cond5 THEN

ELSE

END;

ветка ANDIF выполняется тогда и только тогда, когда истинно условие предыдущей ветки (IF, ANDIF или ELSIF)

Структурно это замена вложенного IF:

IF cond1 THEN

  IF cond2 THEN (* это ANDIF *)
   
    IF cond3 THEN (* еще ANDIF *)

    END;
  END;
ELSE

  IF cond4 THEN (* это ELSIF *)
    IF cond6 THEN (* следующий ANDIF *)

    END;
  ELSE 
    IF cond5 THEN (* еще ELSIF *)

    END;
  END;
END;

Этот код транслируется в:

IF cond1 THEN

ANDIF cond2 THEN
   
ANDIF cond3 THEN

ELSEIF cond4 THEN

ANDIF cond6 THEN
 
ELSIF cond5 THEN

END;

Мне кажется, что это совершенно естественный сахарок как и ELSIF. Какие тут могут быть проблемы? (Укажите если кто видит)

С другой стороны можно сделать более явную конструкцию:

CHAIN cond1 :

| cond2 :

| cond3 :

END;

Смысл в том, что цепочка прерывается, как только не выполнится очередное условие.

6
Цитата: bigfatbrowncat
Я начинал с бейсика. С того самого Quick Basic. Потом был паскаль года до 1997, затем — Delphi, долго собирался с силами, чтобы выучить C — уж очень его синтаксис казался замудрёным после паскалевского. Пересел на C/C++ уже в институте, освоил C# потому, что он показался мне близким и похожим на Delphi. Сейчас занимаюсь Java и Android.

И вот, что я вам скажу. Наблюдая сегодняшнее состояние индустрии, в особенности ее отношение к новичкам, я не перестаю радоваться, как же мне повезло родиться на заре IBM PC.

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

Вопрос считаю не риторическим (во всяком случае, надеюсь, что ответ существует, хотя я его еще не нашел). И где вы сейчас найдете:

1. Простой язык, позволяющий постепенно понять, что такое циклы и условные переходы, операторные скобки, функции и внешние модули
2. Надёжную и элементарную IDE, заточенную строго под этот язык, рассчитанную на написание среднего размера программ, но которая при этом способна, например, вытаскивать одну функцию в рабочую область и скрывать остальные, чтобы большой объем кода не пугал неокрепший мозг

Для всех, кто начнет рассказывать мне про простые и понятные языки для начинающих, которые легко и быстро запускаются из консоли или, прости господи, из какого-нибудь emacs, уточню: второй пункт в этом списке даже важнее первого, потому что человек делает первые шаги за руку.

В каком-то приближении годился бы C# и VS Express, но, вспоминая, сколько всего мне пришлось изучить, чтобы разобраться в Delphi (а ведь я уже в тот момент умел что-то кодить), я понимаю, что он сгодится только как второй шаг, но никак не первый.

В QBasic была даже валидация вводимого кода при его наборе (!) немыслимая по крутизне в те времена фича. Если не помните — валидный оператор превращался в Caps (print -> PRINT), а невалидный оставался как есть, намекая на ошибку.

От себя скажу — если бы я не нашел тогда этот язык и среду, возможно, одним программистом было бы меньше. Убежден, что многие со мной согласятся.

Цитата: TimeCoder
Ого, меня сначала прошиб холодный пот: словно это я написал комментарий и забыл про это. Прошел в точности такой же путь, даже годы совпадают! Кроме Java в итоге.

Вот и у меня мурашки.

Это реально была удобнейшая среда. Даже осмелюсь заявить, что это была лучшая IDE из всех, что я видел.
У меня, возможно, синдром утенка, но я до сих пор мечтаю о столь же удобном инструменте.

QBasic - это пример гениального ПО.

ps Я все сказал и мне не стыдно.

8
Общий раздел / ARM Linux Oberon
« : Апрель 17, 2014, 11:04:40 pm »
Цитировать
Hi all,

I put the current state of ARM Linux Oberon public. Only the modules
needed for development are included. More information here:
http://matthias.dnsdynamic.com/oberon/doku.php?id=alo (it's my Desktop,
so it might have downtimes)

Regards,
   Peter
https://lists.inf.ethz.ch/pipermail/oberon/2014/007404.html

9
Общий раздел / Niklaus Wirth Birthday Symposium
« : Февраль 26, 2014, 06:16:22 am »
Цитировать
Slides and video recordings of the talks
http://wirth-symposium.ethz.ch/programme.html

10
Общий раздел / Всех с двойным праздником!
« : Февраль 23, 2014, 12:22:24 pm »
С Днем Защитника Отечества!
С победой на Олимпийских Играх!

11
Общий раздел / Физика и бухучет
« : Январь 12, 2014, 09:37:43 am »
http://habrahabr.ru/post/208712/
гы гы  ;D
Оказывается вселенная устроена по правилам бухучета.

12
Общий раздел / Vishap Project
« : Декабрь 07, 2013, 10:59:22 pm »
Цитировать
Vishap Oberon Compiler (voc) is a free (GPLv3) non-commercial oberon-2 compiler.
http://oberon.vishap.am/

13
Общий раздел / Горячая замена кода
« : Декабрь 04, 2013, 09:17:18 am »
В конфе в очередной раз зашел разговор за горячую замену кода в ББ. У народа оказывается с этим есть проблемы. И более того говорят что ее там нет!

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

MODULE A;
IMPORT StdLog;
 
TYPE
T0* = EXTENSIBLE RECORD END;
PT* = POINTER TO T0;
 
VAR
r* : PT;

PROCEDURE (ob : PT) Some*(), NEW, EXTENSIBLE;
BEGIN
StdLog.Int(42);
END Some;

PROCEDURE Test*(); BEGIN
r.Some()
END Test;
 
BEGIN
END A.
 
MODULE B;
IMPORT A, StdLog;
 
TYPE
T1* = RECORD (A.T0) END;
PT* = POINTER TO T1;
VAR
r : PT;

PROCEDURE (ob : PT) Some*();
BEGIN
StdLog.Int(13)
END Some;
 
PROCEDURE Test*();
BEGIN
NEW(r);
A.r := r;
A.Test();
END Test;

END B.
 
(!) B.Test
Unload B
(!) A.Test
Trap
https://gist.github.com/valexey/7777367

Вах! Вот ведь неразрешимый трабл! Если модуль-владелец отдает свой объект в другой модуль, то ББ не отслеживает при вызове методов, что модуль-владелец может быть выгружен. То что мы в данном случае получаем штатный трап народ не впечатлило. Тот факт, что эта ошибка уровня разыменования NIL (что как бэ намекает) никого тоже не колышит:
Цитировать
[01:44:23] <vlad2> boris_ilov: это хреновый трап и принципиально не такой как в случа NIL
Хотя лично я разницы не вижу (и ББ тоже не видит, в чем легко убедиться заглянув в исходники)

Теперь по обсуждаемому коду.
Совершенно очевидно, что этот код не будет работать. Что автор хотел получить от ББ для меня загадка. ББ не подгружает модуль если его прямо или косвенно не импортировать. Неявный импорт средой не отслеживается очевидно по соображениям производительности. НО! Даже если бы ББ это делал, то это не помогло бы автору. Ибо проблема рук и лени средствами среды не лечится.
Если автор хотел горячую замену реализации в реальном времени, то очевидно, что это делается не так. И это известно любому, кто читал документацию.
Уже неоднократно говорилось о паттерне Dir (который собсна и описан в доке). Народ упрямо игнорит сию информацию.
Горячая замена с паттерном Dir делается элементарно и безопасно.

Почему-то я делал такое ни один раз и никаких AV не получал. Более того я даже не знал что ББ не отслеживает выгрузку модуля. И все потому, что мне в голову не приходило изобразить такой код. Паттерн Dir - это первое, что я вспомню если мне нужно подменить реализацию в реальном времени.

Так в чем же проблема? В ББ? Или в нежелании использовать ООП, в ООП-языке?

14
Общий раздел / Project Oberon (New Edition 2013)
« : Ноябрь 30, 2013, 03:50:11 pm »

15
vlad высказывался, что VAR - это моветон. С чем я не согласен, ибо не могу представить себе процедурное программирование без параметров, передаваемых по ссылке. С другой стороны есть проблема при чтении кода, если VAR параметры никак не выделяются.
Т.е. хочется чтобы синтаксис помогал видеть эти самые VAR параметры.

Какие есть варианты? И какой из них лучше?
1. Оставить как есть, но явно помечать при вызове как в C#
2. Запретить передачу по ссылке, но разрешить процедуре возвращать несколько значений как в Lua
3. ???

Страницы: [1] 2 3 ... 8