На счёт множеств поддерживаю. Ещё лет 100 назад Бертран Рассел показал, что с множествами не всё в порядке. И древние греки тоже приводили какие-то примеры про Сократа и смерть.
Очень интересная тема, я в своё время сломал об неё мозг.
2-ой вариант про роли. Вот, пара статей на эту тему: ceur-ws.org/Vol-179/eon2006kozakietal.pdf mp.binaervarianz.de/ijeis2010.pdf
Авторы достаточно глубоко рассматривают роли, варианты их представления в моделях, виды и т.п. Японцы в статье ссылаются на свой инструмент для создания онтологий, ориентированных на роли. Они разделяют просто роли (role concept) и носителей ролей (role-holder). Например, есть сущность «Человек». Человек может играть роль учителя. Причём, «учитель Иванов» — это role-holder, а просто «учитель» — это role concept. Такое разделение важно, потому что role concept могут существовать и без носителей, например, в штатном расписании может быть просто должность учителя или может быть вакансия на учителя (без привязки к конкретному человеку).
А 3-ий вариант — это ещё большая тема, которая является предметом мереологии. Вот, несколько статей: www.conradbock.org/compkind.html www.inf.ufes.br/~gguizzardi/CAISE2011-CR.pdf plato.stanford.edu/entries/mereology
Там рассматривается множество различных видов и классификаций отношений часть-целое. Приведу несколько примеров мереологических отношений:
1) Сотрудник — отдел
2) Палец — рука
3) Город — страна
4) Порция воды в стакане — вся вода в этом стакане
5) Акт — пьеса
Всё это отношения «часть-целое», но они обладают разными свойствами. Например, я — сотрудник (часть) отдела, отдел — часть организации, следовательно, я — часть организации. В данном случае отношение «часть-целое» является транзитивным. Но с другой стороны, мой палец — часть меня, я — часть организации, но это не значит, что мой палец — это часть организации. Т.е. мереологические отношения могут быть разными.
Оба этих вопроса (про роли и мереологические отношения) сейчас открыты. Есть разные работы на эту тему, какой-то единственно правильной классификации ролевых или мереологических отношений лично я не нашёл.
Столкнулся с тем, что OCL в Sirius ощутимо тормозит. Переписал все выражения на AQL (в основном это сводится к замене префикса «ocl:» на «aql:») и всё стало летать. Для AQL реализован собственный парсер, который примитивней парсера OCL, но зато и гораздо быстрее. Лучше использовать AQL.
Сейчас статьи выглядят немного разрозненными. Но, на самом деле, в них описывается создание разных кусочков одной утилиты. И в следующей статье, я надеюсь, соберу этот пазл и станет понятно зачем всё это делалось.
А заключительная статья будет про модельно-ориентированную разработку в целом (что это и зачем).
Видно, что там загораются лишние светодиоды, это связано с особенностями (если не багами) Arduino Mega 2560 и лечится стягивающими резисторами.
А ещё есть GuGaplexing, с помощью которого можно удвоить количество светодиодов. Т.е. с 6 контактов attiny управлять 60-ю светодиодами.
Конечно, у такого подхода есть недостатки. Светодиоды должны быть одинаковыми. И если одновременно зажигать много светодиодов, то яркость будет ощутимо ниже. Но для каких-то задач это может работать.
Или добавляем несколько кнопок и резисторов и получаем $24.95. 1900 рублей, Карл, практически из воздуха. Я пишу это не потому что мне нравится считать чужие деньги. А потому что у нас вечная проблема с «нефтяной иглой», «низкой производительностью труда» и т.п. Нужно делать такие же штуки и продавать буржуям за доллары. Например, матрешку, которая читает твиты или статусы вконтакте и мигает светодиодиками.
Но с другой, она показывает как люди получают на подобных проектах сверхприбыли. Он стоит $8.95 (680 руб.). При том, что самая дорогая вещь там attiny стоимостью 30-50, ну, 100 рублей, если покупать с накруткой в России. Ну, ещё копеешный стабилизатор напряжения, несколько резисторов, плата. Это никак не 680 рублей. Вот, китайцы продают их по адекватной цене ~100 руб.
Добавляем светодиодик, немного хлама и получаем уже $16.95 (1300 руб)! Наверное это выгодней, чем торговать оружием или наркотиками.
Это даже особенность не Digispark, а вообще в этой области это норма.
А как вы его [Digispark] прошиваете в Atmel Studio? Я тоже собираю штуку на attiny, но я прошиваю его через Arduino Mega 2560, в которую прошил ArduinoISP. Ну, короче, в качестве программатора использую мегу. Но это муторно и работает только в Arduino IDE. В Atmel Studio ничего прошить не могу.
Не правильным путем вы идёте, какой смысл изучать отдельные команды. В руководстве всё очень подробно и в правильном (а не случайном) порядке изложено.
Можете использовать «Ctrl-h a», как я описал ниже, там и описание, и кнопки, более детальное описание.
+ если вы вызываете команду по имени, то после вызова Emacs напомнит вам какой комбинацией клавиш можно её вызывать.
Я бы посоветовал начать с руководства. Или с русскоязычного, их достаточно много. Не обязательно прям вчитываться, хотя бы пролистать.
По командам… Как уже говорили, можно нажать «M-X [имя] TAB» и появится список команд.
Если хочется увидеть миниописание, то жмем «Ctrl-h a [имя] Enter» и появится список найденных команд (нижняя часть окна):
Если кликнуть по команде, то появится более детальное описание (верхняя часть окна).
Если вы начали что-то набирать в командной строке и передумали, то нажмите Ctrl-g.
Если вам мало такого описания команды, то вы можете найти эту команду в руководстве пользователя:
Нажимаете Ctrl-h F и пишите имя команды (автодополнение вызывается с помощью табуляции). При этом вы можете узнать и о аналогичных командах (sort-pages, sort-paragraphs).
Также, как видите, там ещё энное количество способов поиска по документации. Загляните ещё в меню Describe. Ни в одном другом редакторе нет такой детальной документации и такого количества способов поиска по ней.
Я почти не пользовался консольной версией. Зачем она вам? Файлы можно редактировать через SSH. Зачем запускать Emacs в консоли?
"Idea: Ctrl+Shift+A" — ну дык это то же самое что и в Emacs. Один в один поиск по имени команды. Причем, у меня ощущение, что в Emacs даже лучше… Если в IDEA написать «scr top» (сократив «scroll» и пропустив «to»), он найдёт команду? Emacs найдет.
У меня была точно такая же ситуация с Vim, как у вас с Emacs. Я потыкался в Vim, почитал документацию, но понял, что не смогу этим пользоваться.
Кстати, да, у меня, например, были такие причины пользоваться Emacs
1) интерес к лисп
2) возможность редактировать файлы через SSH
3) фичи, которых нет в других редакторах (например, сортировка строк или регулярные выражения, которые не поддерживаются из коробки в Far или блокноте)
4) желание пользоваться бесплатным ПО, а не крякнутым
5) я раньше активно пользовался линуксом, а для него это один из самых адекватных редакторов
6) стремление к изучению чего-то нового
7) им просто приятно пользоваться, по сравнению с другими редакторами он практически не потребляет память, очень быстро работает. По сравнению с современными глюкалами, которые сделаны тяп-ляп, Emacs — просто воплощение безглючности и оптимальности во всём
Но сейчас большая часть причин не актуальна и мне без разницы чем пользоваться. Хотя, блин, то что Word, Eclipse и Chrome сжирают 8 Гб оперативной памяти на пустом месте очень бесит. То что Word часто вылетает, то что очевидные команды в каждой версии в нём куда-то прячут, что фиг найдёшь. Что Eclipse тормозит на ровном месте и т.п. Outlook тоже бесит.
Добавить в этот список ещё Far — и в общем-то это всё чем я обычно пользуюсь. А, ведь, все эти программы может заменить один Emacs! К слову, в нём и психолог есть, с которым можно обсудить жизненные ситуации, и игры.
Тут люди немного утрируют, что нужно сначала прочитать тонны документации и только после этого пользоваться Emacs. Это верно для Vim, в котором без документации действительно ничего непонятно. Но в Emacs основные команды вынесены в меню (создание/открытие/сохранение файла, переключение между буферами (окнами) и т.п.), их не нужно искать.
Emacs уже 40 лет! Если за эти годы никому не понадобился поиск команды по описанию или регулярному выражению, значит он действительно не нужен. Честно говоря, я не видел редакторов, где это есть и никогда таким не пользовался. И как вы представляете себе такой поиск? Если команду нельзя найти по имени, очевидно, что она неправильно называется! Её нужно переименовать и нет проблемы. Более того, такой нечёткий поиск только всё усложнил бы. Выдавалась бы куча лишних команд, у которых в описании просто что-то упоминается.
Но если это всё-таки нужно, я думаю, это элементарно пишется на лиспе.
Можно искать по первым буквам слов в имени команды. Но это если уже знаешь как называется команда. Если не знаешь, ну вводишь в первые разы слово полностью. Если мне нужно отсортировать линии, очевидно я введу слово sort. Что ещё можно ввести? ) А для элементарных команд, повторюсь, есть меню.
Я не призываю пользоваться Emacs, более того, я сам редко им пользуюсь. Но не потому, что он плохой, а потому что мне просто не нужны все эти возможности. Большую часть времени я использую MS Word, Excel, Far, Eclipse. Ну, может иногда Visual Studio, SSMS, Sublime.
Я считаю, что Emacs очень user-friendly, очень удобный и очень мощный редактор. Но я думаю, что все люди не переходят на Emacs потому что:
1) У него имидж сложного редактора, многих это отпугивает
2) Он не рекламируется и не навязывается повсеместно как Sublime, IDEA или ещё что-нибудь «модное и современное»
3) В нём нет каких-то фишек, которые могут быть в некоторых коммерческих редакторах
4) Некоторые ниши заняли другие редакторы, например, Word. И не потому что они лучше, а потому что так сложилось
Очень давно не пользовался Емаксом. На сколько я помню, жмёшь Alt+X и можно вводить имя команды. Табуляция для автодополнения и показывает список подходящих по имени команд.
Дык, а собственно, в чём проблема? Сделать генератор флуктуаций, ведь, не очень сложно. Почему их не встраивают во все процессоры? Почему бы в арифметику для чисел с плавающей точкой не добавить немного случайности? Чтобы, скажем, последний разряд мог принимать действительно случайные значения.
Это конечно звучит безумно. У программистов всё должно быть абсолютно детерминировано. Но, по-моему, немного хаоса тут не помешало бы.
Хотел написать, что вы не правы, что хаос на то и хаос, что там нет никаких периодов. А человеку, который их найдёт дадут Нобелевскую премию. Но, блин, компьютеры, ведь, действительно дискретные. Если длина последовательности сравнима с точностью вычислений, то логистическое отображение однозначно начнёт повторяться. Например, если 64-битная точность вычислений, то на последовательности 2^64 однозначно будут периоды.
Кому интересно логистическое отображение, для теста нагенерил случайных чисел в Excel. Там две последовательности по 5000 значений. В них период, очевидно, не нашёл. Но на более длинных последовательностях он будет из-за ограниченной точности вычислений.
Хотя, если добавить в вычисления хотя бы текущее время, я думаю периодов можно избежать.
И вообще сейчас в моде всякие 4D-онтологии, ISO 15926, теория категорий и т.п.
www.brunel.ac.uk/~cssrcsp/BusObj.pdf
2-ой вариант про роли. Вот, пара статей на эту тему:
ceur-ws.org/Vol-179/eon2006kozakietal.pdf
mp.binaervarianz.de/ijeis2010.pdf
Авторы достаточно глубоко рассматривают роли, варианты их представления в моделях, виды и т.п. Японцы в статье ссылаются на свой инструмент для создания онтологий, ориентированных на роли. Они разделяют просто роли (role concept) и носителей ролей (role-holder). Например, есть сущность «Человек». Человек может играть роль учителя. Причём, «учитель Иванов» — это role-holder, а просто «учитель» — это role concept. Такое разделение важно, потому что role concept могут существовать и без носителей, например, в штатном расписании может быть просто должность учителя или может быть вакансия на учителя (без привязки к конкретному человеку).
А 3-ий вариант — это ещё большая тема, которая является предметом мереологии. Вот, несколько статей:
www.conradbock.org/compkind.html
www.inf.ufes.br/~gguizzardi/CAISE2011-CR.pdf
plato.stanford.edu/entries/mereology
Там рассматривается множество различных видов и классификаций отношений часть-целое. Приведу несколько примеров мереологических отношений:
1) Сотрудник — отдел
2) Палец — рука
3) Город — страна
4) Порция воды в стакане — вся вода в этом стакане
5) Акт — пьеса
Всё это отношения «часть-целое», но они обладают разными свойствами. Например, я — сотрудник (часть) отдела, отдел — часть организации, следовательно, я — часть организации. В данном случае отношение «часть-целое» является транзитивным. Но с другой стороны, мой палец — часть меня, я — часть организации, но это не значит, что мой палец — это часть организации. Т.е. мереологические отношения могут быть разными.
Оба этих вопроса (про роли и мереологические отношения) сейчас открыты. Есть разные работы на эту тему, какой-то единственно правильной классификации ролевых или мереологических отношений лично я не нашёл.
Сейчас статьи выглядят немного разрозненными. Но, на самом деле, в них описывается создание разных кусочков одной утилиты. И в следующей статье, я надеюсь, соберу этот пазл и станет понятно зачем всё это делалось.
А заключительная статья будет про модельно-ориентированную разработку в целом (что это и зачем).
Я делал панельку из 12 светодиодов, которая управляется 4 контактами: www.youtube.com/watch?v=uiaE7snxT3U
Видно, что там загораются лишние светодиоды, это связано с особенностями (если не багами) Arduino Mega 2560 и лечится стягивающими резисторами.
А ещё есть GuGaplexing, с помощью которого можно удвоить количество светодиодов. Т.е. с 6 контактов attiny управлять 60-ю светодиодами.
Конечно, у такого подхода есть недостатки. Светодиоды должны быть одинаковыми. И если одновременно зажигать много светодиодов, то яркость будет ощутимо ниже. Но для каких-то задач это может работать.
Я очень скептически относился к эмуляции и не знал про Proteus. А оказывается это такая клевая штука. Спасибо за статью.
А в Atmel Studio через отдельный программатор? А можно в Atmel Studio без программатора? Вроде люди как-то делают через это или avrdude.
Но с другой, она показывает как люди получают на подобных проектах сверхприбыли. Он стоит $8.95 (680 руб.). При том, что самая дорогая вещь там attiny стоимостью 30-50, ну, 100 рублей, если покупать с накруткой в России. Ну, ещё копеешный стабилизатор напряжения, несколько резисторов, плата. Это никак не 680 рублей. Вот, китайцы продают их по адекватной цене ~100 руб.
Добавляем светодиодик, немного хлама и получаем уже $16.95 (1300 руб)! Наверное это выгодней, чем торговать оружием или наркотиками.
Это даже особенность не Digispark, а вообще в этой области это норма.
Можете использовать «Ctrl-h a», как я описал ниже, там и описание, и кнопки, более детальное описание.
+ если вы вызываете команду по имени, то после вызова Emacs напомнит вам какой комбинацией клавиш можно её вызывать.
По командам… Как уже говорили, можно нажать «M-X [имя] TAB» и появится список команд.
Если хочется увидеть миниописание, то жмем «Ctrl-h a [имя] Enter» и появится список найденных команд (нижняя часть окна):
Если кликнуть по команде, то появится более детальное описание (верхняя часть окна).
Если вы начали что-то набирать в командной строке и передумали, то нажмите Ctrl-g.
Если вам мало такого описания команды, то вы можете найти эту команду в руководстве пользователя:
Нажимаете Ctrl-h F и пишите имя команды (автодополнение вызывается с помощью табуляции). При этом вы можете узнать и о аналогичных командах (sort-pages, sort-paragraphs).
Также, как видите, там ещё энное количество способов поиска по документации. Загляните ещё в меню Describe. Ни в одном другом редакторе нет такой детальной документации и такого количества способов поиска по ней.
"Idea: Ctrl+Shift+A" — ну дык это то же самое что и в Emacs. Один в один поиск по имени команды. Причем, у меня ощущение, что в Emacs даже лучше… Если в IDEA написать «scr top» (сократив «scroll» и пропустив «to»), он найдёт команду? Emacs найдет.
У меня была точно такая же ситуация с Vim, как у вас с Emacs. Я потыкался в Vim, почитал документацию, но понял, что не смогу этим пользоваться.
1) интерес к лисп
2) возможность редактировать файлы через SSH
3) фичи, которых нет в других редакторах (например, сортировка строк или регулярные выражения, которые не поддерживаются из коробки в Far или блокноте)
4) желание пользоваться бесплатным ПО, а не крякнутым
5) я раньше активно пользовался линуксом, а для него это один из самых адекватных редакторов
6) стремление к изучению чего-то нового
7) им просто приятно пользоваться, по сравнению с другими редакторами он практически не потребляет память, очень быстро работает. По сравнению с современными глюкалами, которые сделаны тяп-ляп, Emacs — просто воплощение безглючности и оптимальности во всём
Но сейчас большая часть причин не актуальна и мне без разницы чем пользоваться. Хотя, блин, то что Word, Eclipse и Chrome сжирают 8 Гб оперативной памяти на пустом месте очень бесит. То что Word часто вылетает, то что очевидные команды в каждой версии в нём куда-то прячут, что фиг найдёшь. Что Eclipse тормозит на ровном месте и т.п. Outlook тоже бесит.
Добавить в этот список ещё Far — и в общем-то это всё чем я обычно пользуюсь. А, ведь, все эти программы может заменить один Emacs! К слову, в нём и психолог есть, с которым можно обсудить жизненные ситуации, и игры.
Emacs уже 40 лет! Если за эти годы никому не понадобился поиск команды по описанию или регулярному выражению, значит он действительно не нужен. Честно говоря, я не видел редакторов, где это есть и никогда таким не пользовался. И как вы представляете себе такой поиск? Если команду нельзя найти по имени, очевидно, что она неправильно называется! Её нужно переименовать и нет проблемы. Более того, такой нечёткий поиск только всё усложнил бы. Выдавалась бы куча лишних команд, у которых в описании просто что-то упоминается.
Но если это всё-таки нужно, я думаю, это элементарно пишется на лиспе.
Можно искать по первым буквам слов в имени команды. Но это если уже знаешь как называется команда. Если не знаешь, ну вводишь в первые разы слово полностью. Если мне нужно отсортировать линии, очевидно я введу слово sort. Что ещё можно ввести? ) А для элементарных команд, повторюсь, есть меню.
Я не призываю пользоваться Emacs, более того, я сам редко им пользуюсь. Но не потому, что он плохой, а потому что мне просто не нужны все эти возможности. Большую часть времени я использую MS Word, Excel, Far, Eclipse. Ну, может иногда Visual Studio, SSMS, Sublime.
Я считаю, что Emacs очень user-friendly, очень удобный и очень мощный редактор. Но я думаю, что все люди не переходят на Emacs потому что:
1) У него имидж сложного редактора, многих это отпугивает
2) Он не рекламируется и не навязывается повсеместно как Sublime, IDEA или ещё что-нибудь «модное и современное»
3) В нём нет каких-то фишек, которые могут быть в некоторых коммерческих редакторах
4) Некоторые ниши заняли другие редакторы, например, Word. И не потому что они лучше, а потому что так сложилось
Это конечно звучит безумно. У программистов всё должно быть абсолютно детерминировано. Но, по-моему, немного хаоса тут не помешало бы.
Кому интересно логистическое отображение, для теста нагенерил случайных чисел в Excel. Там две последовательности по 5000 значений. В них период, очевидно, не нашёл. Но на более длинных последовательностях он будет из-за ограниченной точности вычислений.
Хотя, если добавить в вычисления хотя бы текущее время, я думаю периодов можно избежать.