OberonCore https://forum.oberoncore.ru/ |
|
Free Oberon официально выпущен https://forum.oberoncore.ru/viewtopic.php?f=35&t=6086 |
Страница 4 из 5 |
Автор: | Валерий Лаптев [ Вторник, 13 Ноябрь, 2018 06:39 ] |
Заголовок сообщения: | Re: Free Oberon официально выпущен |
Тут важно не то, что чайниками, а другое. С самого начала они ориентировались на Delphi + NET Framework. То есть, делали среду НЕ для обучения начинающих, а просто более удобную (с их точки зрения) для программирования. И , конечно, стали использовать ее у себя. Распространилась она после того, как сделан был сайт, на котором можно было писать проги. И там же документация. Для школ - удобно. Просто имей выход в инет - и все у тебя есть. Добавлю, что Абрамян делал задачник. На мой взгляд, путь он выбрал тупиковый, но это единственный автоматизированный задачник по программированию. Наш пацан мгновенно продемонстрировал, как его легко обмануть. Да и новую задачу подключить - не для рядового учителя. |
Автор: | Kemet [ Вторник, 13 Ноябрь, 2018 14:35 ] |
Заголовок сообщения: | Re: Free Oberon официально выпущен |
PSV100 писал(а): Бросается в глаза использование операции ":=" вместо "=" в декларациях элементов, прежде всего, при объявлении начальных значений переменных (если таковы предусматриваются) в виде: Потому что это и есть присваивание, только совмещенное с объявлением. Так в Модуле-3, Активном Обероне ... А вот форма "=" концептуально не верна. Там, где переменная, там ":=", там, где константа, там "=" - потому что мы не можем значению присвоить другое значение, именованная константа простой алиас для значения.var переменная: тип := значение; ..... В PascalABC c использованием ":=" при новых определениях, вроде как, нет криминала (хотя, может быть, возникает некое "масло масляное"). Но, всё-таки, не понятно, почему всё же нет единой универсальной формы, и константы с типами декларируются по-прежнему через "=" как обычно аля: "const c = <значение>;" Так что, в этом плане там всё верно. |
Автор: | Kemet [ Вторник, 13 Ноябрь, 2018 14:38 ] |
Заголовок сообщения: | Re: Free Oberon официально выпущен |
Info21 писал(а): Большое спасибо. Паскаль.АБС лепится чайниками -- знать детали важно. ну что за бред
|
Автор: | kekc_leader [ Вторник, 13 Ноябрь, 2018 16:11 ] |
Заголовок сообщения: | Re: Free Oberon официально выпущен |
Товарищи, это венец мировой дилетантской мысли! Цитата: Поскольку присваивание в типовой программе встречается примерно в два раза чаще, чем сравнение на равенство, уместно было сделать оператор присваивания вполовину короче. (из статьи о том, почему присваивание пишется знаком равенства) Я позволю себе продолжить: «...Поскольку INTEGER встречается в программе в два раза чаще, чем FOR, давайте взде писать вместо FOR — INTEGER, а вместо INTEGER — FOR. Мы сэкономим несколько десятков символов на модуль! Кто берётся внести изменение в компилятор?» * * * Цитата: А операция "присваивание" (которой, как таковой, нет в математике) выглядит как некое новое "определение" через ":=", при этом нет каких-то сопровождающих ключевых слов и т.п. В математике операцию присваивания ввёл Эдсгер Дейкстра в брошюре «Дисциплина программирования», так что можно сказать, что он в математике есть. Цитата: Но, всё-таки, не понятно, почему всё же нет единой универсальной формы, и константы с типами декларируются по-прежнему через "=" как обычно аля: "const c = <значение>;" Значения констант указываются через знак равенства, потому что константа всегда «равна» своему значению, присваивание тут не при чём. Это не блок памяти ЭВМ, в который вписывается значение, а условное обозначение, которое всякий раз подставляется в соответствующее место в коде. (Как написано выше, «именованная константа — простой алиас для значения».) * * * Код: function f(i: integer; s: string): string := <some_expression>; А зачем это нужно? Это для образования что-то даёт? или для понятности программ? или в деле упрощения языка и компилятора? Код: procedure p := Write(1); [ссылка]var a1 := p + p; a1; А зачем это нужно? Они издеваются? Их задача в том, чтобы запутать или удивить? * * * Насчёт развития Free Oberon: помимо нового компилятора будет создан и более современный редактор кода. Может быть, у вас есть какие-то предложения по поводу того, что бы вы хотели видеть в таком редакторе. |
Автор: | Artyemov [ Вторник, 13 Ноябрь, 2018 18:47 ] |
Заголовок сообщения: | Re: Free Oberon официально выпущен |
kekc_leader писал(а): * * * Насчёт развития Free Oberon: помимо нового компилятора будет создан и более современный редактор кода. Может быть, у вас есть какие-то предложения по поводу того, что бы вы хотели видеть в таком редакторе. Есть полезная особенность редактора, которую не встречал со времён uVAX-а (обнаружил недавно в IDE Geany: "Stop scrolling at last line" и "Lines visible around the cursor")- скроллинг текста (вниз\вверх) начинается, когда курсор находится не на верхней\нижней строке экрана, а, скажем, в 5 (настраиваемо) строках от границы. При просмотре исходников всегда видны несколько строк выше или ниже курсора. Естественно, когда верхние\последние строки на экране, скроллинг прекращается и курсор перемещается естественным образом. |
Автор: | Валерий Лаптев [ Вторник, 13 Ноябрь, 2018 19:25 ] |
Заголовок сообщения: | Re: Free Oberon официально выпущен |
Хотелось бы, чтобы в редакторе с текстом было работы поменьше, а с кодом - побольше. То есть, пока неясно как, но сделать редактор более языково-ориентированным, а не текстовым. |
Автор: | PSV100 [ Вторник, 13 Ноябрь, 2018 21:24 ] |
Заголовок сообщения: | Re: Free Oberon официально выпущен |
kekc_leader писал(а): PSV100 писал(а): А операция "присваивание" (которой, как таковой, нет в математике) выглядит как некое новое "определение" через ":=", при этом нет каких-то сопровождающих ключевых слов и т.п. В математике операцию присваивания ввёл Эдсгер Дейкстра в брошюре «Дисциплина программирования», так что можно сказать, что он в математике есть. Изложения Дейкстры есть прикладные с введенным предметным тезаурусом. А, в целом, у математических объектов нет "деструктивного присваивания", они лишь определяются или порождаются. Kemet писал(а): PSV100 писал(а): Бросается в глаза использование операции ":=" вместо "=" в декларациях элементов, прежде всего, при объявлении начальных значений переменных (если таковы предусматриваются) в виде: var переменная: тип := значение; ..... В PascalABC c использованием ":=" при новых определениях, вроде как, нет криминала (хотя, может быть, возникает некое "масло масляное"). Но, всё-таки, не понятно, почему всё же нет единой универсальной формы, и константы с типами декларируются по-прежнему через "=" как обычно аля: "const c = <значение>;" Потому что это и есть присваивание, только совмещенное с объявлением. ... Там, где переменная, там ":=", там, где константа, там "=" - потому что мы не можем значению присвоить другое значение, именованная константа простой алиас для значения. Так что, в этом плане там всё верно. Там как минимум функциональная форма в виде: function f(i: integer): integer := expression Здесь f не переменная, не "изменяемая ячейка памяти". В общем, не в курсе, как там именно интерпретируют символ ":=" (как "присваивание" или "инициализация", "дефиниция" или ещё как-то). Kemet писал(а): Так в Модуле-3, Активном Обероне ... Всё же, в Modula хотя бы тело процедур отделяется от заголовков через '='. Kemet писал(а): А вот форма "=" концептуально не верна Видимо, у авторов языков сказываются вкусовые предпочтения или особенности концептов. Во всяком случае Борландовский и ML-диалекты такие же, как и в математических текстах. И как у Дейкстры -- символ ":=" есть отдельный оператор, "x := ..." понимается как "x (существующий) становится ...". В целом, в математике символ ":=" сам по себе означает дефиницию (а не просто равно), если перед ним (или где-то рядом) по контексту уже есть некая определяющая конструкция, то может возникнуть "абра-кадабра". К примеру, если бы в таком языке как Scala (производный от ML), где имеется ключевое слово "def", вместо равно при дефинициях использовался бы символ ":=", то получалось бы такое "масло масляное" (во втором случае на рисунке применяется альтернативная стандартная форма операции ":=", с надписью "def"): Вложение: func.png [ 1.84 КБ | Просмотров: 6509 ] |
Автор: | Kemet [ Среда, 14 Ноябрь, 2018 06:37 ] |
Заголовок сообщения: | Re: Free Oberon официально выпущен |
PSV100 писал(а): Там как минимум функциональная форма в виде: function f(i: integer): integer := expression Здесь f не переменная, не "изменяемая ячейка памяти". В общем, не в курсе, как там именно интерпретируют символ ":=" (как "присваивание" или "инициализация", "дефиниция" или ещё как-то). Данная конструкция может быть спорная, да. Но разработчики её рассматривают как более короткий эквивалент громоздкой записи, в которой лишь один оператор присваивания результата, который в Обжект Паскаль записывается как-то так: Код: function f(i: integer): integer; begin f := expression; или result := expression; end; то есть присваивание здесь явно просматривается. символ "равно", здесь вроде как не уместен, так как происходят некие изменения неких переменных. символ "присвоить" может и сомнительный, именно в такой конструкции, но заводить дополнительный оператор ради одного единственного случая тоже не айс. |
Автор: | kekc_leader [ Среда, 14 Ноябрь, 2018 18:13 ] |
Заголовок сообщения: | Re: Free Oberon официально выпущен |
Kemet писал(а): Код: function f(i: integer): integer; begin f := expression; или result := expression; end; Недавно у нас курсанты притащили откуда-то третий вариант: Код: function f(i: integer): integer; А про присваивание в название функции они даже не слышали.begin exit(expression); end; Валерий Лаптев писал(а): Хотелось бы, чтобы в редакторе с текстом было работы поменьше, а с кодом - побольше. То есть, пока неясно как, но сделать редактор более языково-ориентированным, а не текстовым. Имеются в виду какие-то автодополнения? В голову лезет ещё автоматически составляемый список объявленных процедур. Автоматические отступы — само собой. Ещё у нас есть идея насчёт раскраски кода произвольными цветами. Таких редакторов кода сейчас мало, есть, пожалуй, только Blackbox, Native Oberon и, может быть, A2, но последние два — операционные системы. Artyemov писал(а): ..."Stop scrolling at last line" и "Lines visible around the cursor"... «Lines visible around the cursor» — это настройка в виде числа, а что такое «Stop scrolling at last line»? |
Автор: | PSV100 [ Среда, 14 Ноябрь, 2018 20:58 ] |
Заголовок сообщения: | Re: Free Oberon официально выпущен |
Kemet писал(а): ... Данная конструкция может быть спорная, да. Но разработчики её рассматривают как более короткий эквивалент громоздкой записи, в которой лишь один оператор присваивания результата, который в Обжект Паскаль записывается как-то так: ... то есть присваивание здесь явно просматривается. Выше в теме была цитата кода: Код: procedure p := Write(1); var a1 := p + p; a1; Здесь p есть процедура, не функция, нет возвращаемых значений, как и аргументов, и внутри тела процедуры нет никаких присваиваний. Для a1 тип выводится аналогично как "var a1: ()->()", т.е. функциональный тип без аргументов и результата (или они определены как unit или void). Всё-таки, нет какой-то фундаментальной завязки на ":=" как именно "присваивание значения". Kemet писал(а): символ "равно", здесь вроде как не уместен, так как происходят некие изменения неких переменных. символ "присвоить" может и сомнительный, именно в такой конструкции, но заводить дополнительный оператор ради одного единственного случая тоже не айс. Кстати, функции, как таковые, ничего не изменяют, а отображают одни элементы множества на другие. И традиционно задаются с символом "равно" в форме "y=f(x)". Символ ":=" в математике есть дефиниция, определение. Указывая "x := y" подразумевается, что задается некий x, который есть другое обозначение для y. Теперь при обращении к x будет осуществляться редукция, подстановка и т.п. К примеру, могу объявить отношение и далее им пользоваться: A xor B := (A \/ B) /\ !(A /\ B) Или вот загуглил для более-менее содержательно-показательного примерчика, и ниже первое попавшееся (из некоего pdf-документа "Функциональные уравнения"), где g(x) определяется над уравнением и далее используется в "синтезе" иных уравнений, по тексту g(x) можно переопределять: https://www.turgor.ru/lktg/2006/3/3-3ru.pdf Вложение: Ранее была ссылка на вики-страничку с цитатой Вирта, почему начали использовать ":=" для "присваивания" в языках программирования (ну... в некоторых, и согласно статейке про "равно", приведенной ранее, Вирт не был пионером в этом вопросе, но оказался популяризатором, на некоторое время): Цитата: Общеизвестным плохим примером является выбор знака равенства для обозначения присваивания, восходящий к языку Fortran в 1957 году и слепо повторяемый до сих пор массой разработчиков языков. Эта плохая идея низвергает вековую традицию использования знака «=» для обозначения сравнения на равенство, предиката, принимающего значения «истина» или «ложь». Но в Fortran этот символ стал обозначать присваивание, принуждение к равенству. В этом случае операнды находятся в неравном положении: левый операнд, переменная, должен быть сделан равным правому операнду, выражению. Поэтому x = y не означает то же самое, что y = x. Однако, диалекты языков, которые придерживаются ранних принципов ALGOL-а (согласно статейки про "равно"), сохранили (или хотя бы постарались) исходное "математическое лицо", что ли, у операции ":=". Эта операция, как бы, содержит у себя внутри "ключевое слово" define (или по сути им является, аля синоним), о чём было отмечено выше в теме. Поэтому в технологическом языке программирования/моделирования объявление такого вида приемлемое: f(i: int): int := expression А вот: function f(i: int): int := expression содержит некое семантическое дублирование. Ведь слово "function" само означает определение, это скорее нечто вроде "functiondef" по аналогии с известным "typedef". Оттого "true-ALGOL-подобные" все дефиниции задают через "равно" (в смысле те, которые его предусматривают), в т.ч. и начальные инициализации переменных/параметров, поскольку декларации возникают, как бы, вне императива, т.е. содержательного блока с последовательностью предметных действий, здесь "равенство", отмеченное Виртом, выдерживается. И даже аля ML-подобные, с декларациями переменных по месту, "маскируют" императив в виде упреждающих определений в виде конструкций "let ... in ..." и им подобные, продолжая использовать "равно". И таким образом ":=" используется как самостоятельная форма нового определения (или переопределения), как и в математике. В некотором смысле и внутри композитных конструкций, как при объявления цикла for: for i := 0 to 10 do ... Здесь ключевое слово "for" определяет понятие "цикла", а не самой переменной i. |
Автор: | PSV100 [ Среда, 14 Ноябрь, 2018 21:04 ] |
Заголовок сообщения: | Re: Free Oberon официально выпущен |
А в PascalABC, вероятно, ничего там не теоретизировали, а возникла банальщина. Поскольку ввели возможность определений и по месту, то подогнали и однообразие в виде повсеместного использования ":=", как при манипулировании переменными. Если и для декларирования значений по умолчанию для параметров процедур/функций предполагается также ":=", то для констант и типов остаётся '=', по-видимому, просто потому, что эти понятия как-то отдалены, несколько в стороне, что-ли, от проблематики императивной изменчивости. А для деклараций функциональных типов задействована операция ":=", вероятно, из-за однообразия с функциональными переменными (возникающими и внутри императивных блоков, естественно и как "замыкания" с захватами объектов) аля: var f: integer -> integer := x -> x*x; В общем, "тру-сишников" от обилия нелюбимого ":=", видимо, будет колбасить капитально (а многим ":=" не нравиться банально из-за неудобства набирать, мол лишний раз shift жать (особенно, если всё сплошь в snake_case), чтобы ввести ":". В самом деле, проще набрать ";=" и редактор сделает автозамену на ":=". Это к вопросу насчёт редактора, был выше в теме). |
Автор: | Kemet [ Четверг, 15 Ноябрь, 2018 06:43 ] |
Заголовок сообщения: | Re: Free Oberon официально выпущен |
kekc_leader писал(а): Недавно у нас курсанты притащили откуда-то третий вариант: "FreePascal" явно прослеживаетсяКод: function f(i: integer): integer; begin exit(expression); end; Цитата: А про присваивание в название функции они даже не слышали. А это как раз изначальный вариант в Паскале, потом добавили форму result := expression; |
Автор: | Валерий Лаптев [ Четверг, 15 Ноябрь, 2018 07:57 ] |
Заголовок сообщения: | Re: Free Oberon официально выпущен |
По поводу редактора кода. Хотелось бы, чтобы на выходе редактора помимо "голого" текста программы имелось бы и внутренняя модель программы. То есть редактор берет на себя, хотя бы частично, функции фронт-енд-компилятора по лексическому-синтаксическому контролю. |
Автор: | Artyemov [ Четверг, 15 Ноябрь, 2018 18:04 ] |
Заголовок сообщения: | Re: Free Oberon официально выпущен |
kekc_leader писал(а): Artyemov писал(а): ..."Stop scrolling at last line" и "Lines visible around the cursor"... «Lines visible around the cursor» — это настройка в виде числа, а что такое «Stop scrolling at last line»? Последняя строка текста и движок линейки прокрутки всегда будут у нижней границы экрана. За движок нельзя прокрутить текст так, что б последняя строка текста ушла к верхней границе экрана. |
Автор: | PSV100 [ Пятница, 16 Ноябрь, 2018 20:51 ] |
Заголовок сообщения: | Re: Free Oberon официально выпущен |
Цитата: А про присваивание в название функции они даже не слышали. [...] А это как раз изначальный вариант в Паскале, потом добавили форму result := expression; Когда-то смотрел на проект MSEide/MSEgui под FreePascal, где есть какой-то свой экспериментальный вариант Паскаля (с попыткой реализовать и минималистичное runtime-ядро/платформу). Там предлагают самую короткую форму: "function results are returned by mandatory assignment before 'end'", return также имеется в дополнение, нет стандартной переменной result: https://gitlab.com/mseide-msegui/mselang/wikis/home Код: procedure abcfunc(par1: int32, par2: int32): int32; begin if par2 > 10 then return 42; end; abcproc(1,2); := 123; end; procedure abcfunc2(par1: int32, par2: int32): int32; var result: int32; begin result:= 123; if par1 > 10 then result:= -1; end; := result end; Обращает на себя внимание любопытная форма альтернативного варианта оператора with для определения "алиасов": Код: type
rec1ty = object a,b: int32; end; recty = object a,b: int32; c: rec1ty; end; var r1,r2: recty; begin with r1:d, r2:e, d.c:f do d.a:= 70; d.b:= 20; e.b:= 3; f.b:= 30; [...] |
Автор: | PSV100 [ Пятница, 16 Ноябрь, 2018 20:54 ] |
Заголовок сообщения: | Re: Free Oberon официально выпущен |
Цитата: Потому что это и есть присваивание, только совмещенное с объявлением. Так в Модуле-3, Активном Обероне ... А вот форма "=" концептуально не верна. Там, где переменная, там ":=", там, где константа, там "=" - потому что мы не можем значению присвоить другое значение, именованная константа простой алиас для значения. Заглянул и в Ada, там также везде ":=". Всё-таки, этот символ условно сложносоставной (к примеру, "двойное" равно "==" однородно), он примерно такой же "агрессивный" как и "::=" в БНФ. И когда внутри одной декларации он встречается неоднократно, особенно на одной текстовой строке, как при объявлении значений по умолчанию для параметров процедур, то как-то не милы такие формы для глаза. Вспомнился проектик Trankvila -- некий функциональный язык под впечатлением Оберона (и такое в природе встречается): http://trankvila.org/ В нём дефиниции, фактически, без ключевых слов, задаются через "=" для условно compile-time определений -- типы, а через ":=" -- run-time определения -- переменные (там это "одноразовые" value) и функции. Фактически, в языках программирования определения типов, констант и прочие идентичные метаданные задают существующие факты. Т.е. в этом случае "равно" можно интерпретировать как равенство в уравнениях, мол возникает система уравнений, описывающая систему. А ":=" задаёт тогда определения, связанные с run-time, в т.ч. и возникающие "принуждения к равенству". Подобный подход можно примерить и для такого языка, как PascalABC, о чём далее. |
Автор: | PSV100 [ Пятница, 16 Ноябрь, 2018 21:02 ] |
Заголовок сообщения: | Re: Free Oberon официально выпущен |
Ну, то, что рядом с ":=" есть и ключевые слова для дефиниции -- "выкрутиться" несложно. Мол, некое "let a := expression" выглядит как и в математических текстах в виде частого употребления "пусть a := expression", это слово "пусть" (с разновидностью аля "var"/"function", или совместно в стиле "let fn f(x: int) := ...") становится частью технологического языка. Пожалуй, лишь "def" рядом будет смотреться коряво, на чём акцентировалось выше в теме. Тогда есть возможность задать тот же функциональный тип (именно определение типа) и через "равно". Сейчас, к примеру, функции в PascalABC могут возвращать и кортежи, какая может быть форма декларации типа в таком случае -- на примере функции вычисления площади и периметра прямоугольника по ссылке ниже, где в док-ции тип результата (выводимый автоматически), всё-таки, не указан: http://pascalabc.net/downloads/pabcnethelp/index.htm#page=LangGuide/Types/tuples.html Код: // Реализация функции: function SP(a,b: real) := (a*b, 2*(a+b)); // Возможные формы объявления её типа: function SP(a,b: real): (real, real); function SP(a,b: real): (real*real); function SP(a,b: real): real*real; function SP: (real, real) -> (real, real); function SP: (real*real) -> (real*real); function SP: real*real -> real*real; В PascalABC не уверен, что поддерживается логическая форма записей кортежей через "*", как и типов-сумм через "+". Однако эти формы, как и классические математические формы определения функции в виде "f: t -> t" удобны в рамках соответствующих математических предметок. Традиционный "паскалевский" вид "f(t): t" в случае результата-кортежа не очень-то приглядный из-за возникающего сочетания скобок и ":", особенно если рядом указана и реализация: Код: function SP(a,b: real): (real, real) := (a*b, 2*(a+b)); Мне понравился способ в Lustre (ML-диалект, здесь на форуме есть тема про Esterel и смежные технологии), где для инженеров, занимающихся прикладной рутиной, предлагают все декларации типов через "=", включая и функциональные (в дополнение к обычным формам, приведенным выше), в стиле: Код: // Объявление типа и реализации: function SP(real, real) = (real, real); function SP(a, b) := (a*b, 2*(a+b)); // Традиционная, не краткая, форма реализации, совмещенная с объявлением типа, // с использованием именованных и результатов: function SP(a,b: real) = (s,p: real) begin s := a*b; p := 2*(a+b); end; В самом Lustre нет кратких форм реализации, здесь как раз ":=" к месту. Вместо "равно" можно использовать слово "return" (как и в Ada) для длинных определений, если необходимо разбивать текст на множество строк. Использование именования для всех параметров и результатов, фактически, вырисовывается таким же, как и в Go (что есть и в Lustre, но там иная "императивщина"). Значения по умолчанию для параметров процедур необходимо задавать через "=", поскольку это внутренняя декларация типа, т.е. внутри комплексной структуры (значение по умолчанию задает характеристики типа параметра): Код: // Определение типа: function f(s: string; pos: integer = 0; len: integer = 1000) = integer; // Несколько реализаций: function f(s, _, 0) := expression; function f(s, 0, l) := expression; function f(s, p, l) := expression; Выше в примерчике предполагается перегрузка процедур/функций и по константам (некий упрощённый "pattern matching", уместный при наличии кратких форм определений). Переменные определяются через ":=" как обычно, как внутри кода, так и в секции объявлений перед блоком действий (инициализирующие значения). То, что есть дефиниции переменных и по месту -- очень даже норм. Главное, чтобы было наличие ключевого слова, выделяющее объявление. В том же Go получилась жесть с допустимостью краткой формы в виде оператора ":=", который без слова "var" вводит новые переменные. Когда присваивания в форме "=" и ":=" возникают однородно вперемешку, между ними едва уловима разница, можно что-то не заметить и не так понять или непреднамеренно ввести новую переменную в текущей синтаксической области вместо изменения значения у существующей переменной, определенной выше уровнем. Здесь в смежной теме отмечена проблематика объявлений по месту, но такова связана в большей степени именно с формой декларации (в общем, отдельная тема). Кстати, наткнулся на сопоставление различных форм объявлений переменных в языках программирования, м.б. полезно: - Why does the type go after the variable name in modern programming languages? - What's the rationale behind the ordering of Scala's value/variable declaration when including a type identifier? В общем, такие вот соображения, м.б. будут полезными для какого-нибудь здешнего "Семантика". |
Автор: | PSV100 [ Пятница, 16 Ноябрь, 2018 21:08 ] |
Заголовок сообщения: | Re: Free Oberon официально выпущен |
Валерий Лаптев писал(а): Хотелось бы, чтобы в редакторе с текстом было работы поменьше, а с кодом - побольше. То есть, пока неясно как, но сделать редактор более языково-ориентированным, а не текстовым. ... Хотелось бы, чтобы на выходе редактора помимо "голого" текста программы имелось бы и внутренняя модель программы. То есть редактор берет на себя, хотя бы частично, функции фронт-енд-компилятора по лексическому-синтаксическому контролю. При подходе "умная IDE" может возникнуть несостыковка с позицией (активно здесь обсуждаемой), мол отладчик вреден для обучения. Когда в IDE много всего умного, лепится само собой, автокомпликт аж опережает (а то и мешает) и т.д., то и мозги меньше напрягаются. М.б. для образования если нужен hardcore, то это должен быть полный hardcore? |
Автор: | PSV100 [ Пятница, 16 Ноябрь, 2018 21:12 ] |
Заголовок сообщения: | Re: Free Oberon официально выпущен |
kekc_leader писал(а): Насчёт развития Free Oberon: помимо нового компилятора будет создан и более современный редактор кода. Может быть, у вас есть какие-то предложения по поводу того, что бы вы хотели видеть в таком редакторе. Я не знаком с Free Oberon, не в курсе характеристик редактора и конкретики планов, с ним связанных. Ниже всего лишь общие соображения по поводу. Мне кажется, кроме современных редакторов не следует забывать о старых, там местами удобства, отсутствующие в "мэйнстриме". К примеру, везде сейчас мода на "множественные" курсоры, видимо, распространилась от Sublime Text. Не то, чтобы прямо уж супер-фича, но если она есть, то не помешает. Но в тех же Vim и Emacs в виде всяких плагинов, а в jEdit -- некий "эмакс" на java, мало кому уже известный и слабо развиваемый -- из коробки есть "множественное" выделение, в чём-то проще и удобнее. К сожалению, очень кратко в двух словах сложно описать, при потребности (вдруг) всё легко устанавливается и можно посмотреть/пощупать. Прежде всего, имею ввиду Sublime и jEdit -- как раз представители современного взгляда о редакторах со всеми модными фишками. Однако jEdit -- это некая проекция старого функционала из Emacs-a при современных, более привычных, раскладках клавиш, как минимум (насчёт множественных курсоров, может быть даже есть смысл две техники объединить -- когда курсор находится внутри выделения, одного из множества, включаются "множественные" курсоры, но это отдельная тема). А вот такие вот быстрые (без мыши) перемещения по коду и элементам интерфейса (а также запуск определенных команд) вообще мало где реализуются: https://github.com/easymotion/vim-easymotion https://github.com/abo-abo/avy Выше плагины для Vim и Emacs для удобного управления через клавиатуру (на страничках есть и картинки, опять же кратко проблематично описать). Я, к примеру, среди броузеров предпочитаю FireFox, фактически, лишь из-за наличия плагинов vimperator или pentadactyl со схожим функционалом (управление броузером без мыши). В целом, удобное клавиатурное управление (которое можно организовать и без модальных режимов в стиле Vim) востребовано при наличии рутинной работы, что может быть не столь актуально в образовательном проекте. С другой стороны, такая работа с текстом сама по себе становится неким программированием над кодом/текстом (те же понятия текстовых объектов в Vim и манипулирование ими, и т.д.). |
Автор: | Валерий Лаптев [ Суббота, 17 Ноябрь, 2018 10:06 ] |
Заголовок сообщения: | Re: Free Oberon официально выпущен |
PSV100 писал(а): При подходе "умная IDE" может возникнуть несостыковка с позицией (активно здесь обсуждаемой), мол отладчик вреден для обучения. Когда в IDE много всего умного, лепится само собой, автокомпликт аж опережает (а то и мешает) и т.д., то и мозги меньше напрягаются. М.б. для образования если нужен hardcore, то это должен быть полный hardcore? Не знаю. Нас вот учили писать чернильной ручкой до конца 2-го класса. А в 3-м перешли на "разреженные" тетради. Только в 5-м перешли на обычную линейку. Это хардкорд ? А сейчас чернильными ручками вообще не учат. Держать правильно ручку тоже не учат. Это - правильно? |
Страница 4 из 5 | Часовой пояс: UTC + 3 часа |
Powered by phpBB® Forum Software © phpBB Group https://www.phpbb.com/ |