OberonCore
https://forum.oberoncore.ru/

Массив
https://forum.oberoncore.ru/viewtopic.php?f=35&t=5991
Страница 2 из 4

Автор:  ilovb [ Среда, 11 Январь, 2017 13:41 ]
Заголовок сообщения:  Re: Массив

Илья Ермаков писал(а):
Также беда бывает, когда задача, требующая "прямо сейчас", падает на человека второго типа.

Бывает? :lol:
Да это 90% моей работы.

Автор:  Kemet [ Среда, 11 Январь, 2017 14:23 ]
Заголовок сообщения:  Re: Массив

Илья Ермаков писал(а):
Info21 поправит, как знаток этой темы.

Отродясь такого не видали, и вот опять!
Меня всегда занимал вопрос, кто же это такие - "знатоки".
Я давно уже уяснил для себя: профессионалом можно быть в одной области, специалистом в нескольких ( обычно, смежных ), но во всех сразу можно быть только дилетантом.
Куда сюда поместить знатоков?
Впрочем, я говорил о совершенно другом, не о "х@#к - х@#к и в продакшн", а об удобствах, делающих работу программиста продуктивной и приятной.
Каким образом инициализаторы, дженерики, свойства (property)..., реализованные на уровне языка/компилятора, фолдинг/автодополнение/всплывающие подсказки... в ide, способствуют появлению г**внокода?
И что из этого создает проблемы для человека Энного типа?

Автор:  Info21 [ Среда, 11 Январь, 2017 16:06 ]
Заголовок сообщения:  Re: Массив

Kemet писал(а):
Info21 писал(а):
Можно подумать, что коммерсанты понимают, что они программерам заказывают.

По моему опыту -- что первые, что вторые в подавляющем большинстве изрядные долбо*бы, несмотря на всю свою, нередко нерядовую смекалистость. Одно другому ведь не мешает.

Не мешает.
Но дело не в понимании, а в в потребностях.
Если я получу результат через пару дней, а некто за пару часов, я могу катастрофически опоздать.
Потребности -- штука тонкая, их тоже нужно понимать.

А если ваш коммерческий заказчик примет ваш быстрый код, то туда ему и дорога.

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

Автор:  Info21 [ Среда, 11 Январь, 2017 16:09 ]
Заголовок сообщения:  Re: Массив

Илья Ермаков писал(а):
там наверняка даже на уровне гормональном отличия у этих типов ... Info21 поправит, как знаток этой темы.
На глубоком уровне отличия, это медицинский факт. Детали не важны.

Автор:  Илья Ермаков [ Среда, 11 Январь, 2017 19:18 ]
Заголовок сообщения:  Re: Массив

Kemet писал(а):
Меня всегда занимал вопрос, кто же это такие - "знатоки".
Я давно уже уяснил для себя: профессионалом можно быть в одной области, специалистом в нескольких ( обычно, смежных ), но во всех сразу можно быть только дилетантом.


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

Да и на дворе 21 век, жизнь требует, чтобы каждый "профессионал в одной области" мог хоть как-то увязать эту область с другими. Тут, эта, теории систем изобретают уже 100 лет почти, между прочим )) ЮНЭСКи всякие двигают понятия трансдисциплинарности и проч.
(Правда, сколько упомянутых тут выше долбо---ов уже побежало в эти темы самоудовлетворяться и тексты писать, это да. Но есть и реальное ядро.).

Автор:  Илья Ермаков [ Среда, 11 Январь, 2017 19:30 ]
Заголовок сообщения:  Re: Массив

Kemet писал(а):
Впрочем, я говорил о совершенно другом, не о "х@#к - х@#к и в продакшн", а об удобствах, делающих работу программиста продуктивной и приятной.
Каким образом инициализаторы, дженерики, свойства (property)..., реализованные на уровне языка/компилятора, фолдинг/автодополнение/всплывающие подсказки... в ide, способствуют появлению г**внокода?
И что из этого создает проблемы для человека Энного типа?


Для меня это создаёт проблемы - я прихожу и вижу, что опять невесть какие... упомянутые выше... опять чего-то там нагородили. Решая какие-то реальные потребности, но я бы переформулировал по-другому и решал бы по-другому. И лучше и решу сам, дешевыми способами аля библиотеки.

Чтобы не казалось, что это в духе "Все дАртаньяны, а я воздушный шарик".
Когда я знакомился с Адой, допустим, мне так НЕ казалось. Или с Эль-76.
Но там 2 момента:
1) Всё же многое вшитое в язык - недостаточно гибкое. Поменять язык, особенно большой, самому нереально.
2) Слишком сильная завязка на вендора, на инструментарий, который самому изменять дороговато.
3) Чисто психологически встраиваться в чужую цепочку-экосистему не очень хочется.
Именно поэтому, при всех симпатиях к Аде (вкусный, стройный язык, на котором я могу, да, в отличие от голого Оберона, сразу выразить в коде многое из семантики задачи) в 2005-м году ставку я сделал на Оберон.
А в настоящее время многое, что имелось "вкусное" в Аде, имею в КП библиотечно.
Помню, мы тогда в 2005-м обсуждали всё это, общаясь с С. И. Рыбиным, (ВМК МГУ, вед. разработчик AdaCore, представитель России в ISO-комитете по Аде). Он тогда вполне понял наши мотивации.
И есть ещё и момент 4). Даже стройная, логичная, продуманная, но сильно большая инфраструктура, периодически даёт всякие неожиданные подножки даже самому вендору.

Конкретно по поводу IDE. Я вообще считаю инструментирование на основе плоского текста - мартышкиным трудом. Перейти к структурной IDE, а потом пожалуйста - на основе скриптов над деревом программного проекта любой разработчик себе на любой случай прикрутит любую автоматизацию. Кроме того, для языка с компактной семантикой.
Но как приятно разработчикам какой-нибудь IDE осозновать количество вложенных сотен человеко-лет...
А мне жалко, что эти человеко-годы потрачены на какую-то хрень.

Автор:  Илья Ермаков [ Среда, 11 Январь, 2017 19:40 ]
Заголовок сообщения:  Re: Массив

2Kemet

Вот конкретно. Properties.
Нафига козе оно?
Какова внятная этимология этой концепции?
Какая конкретная общая проблема решается?

Автор:  Kemet [ Среда, 11 Январь, 2017 20:30 ]
Заголовок сообщения:  Re: Массив

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

Илья, но это, вероятно, испытывает каждый человек, принимая эстафету, не зависимо от рода деятельности, - программирование, управление, наука... Это психологическое.
Цитата:
Чтобы не казалось, что это в духе "Все дАртаньяны, а я воздушный шарик".
Когда я знакомился с Адой, допустим, мне так НЕ казалось. Или с Эль-76.
Но там 2 момента:
1) Всё же многое вшитое в язык - недостаточно гибкое. Поменять язык, особенно большой, самому нереально.
Я каждый день убеждаюсь, что какой-то яп используют не столько из-за превосходства самого яп над другими, а из=за инфраструктуры, наиболее пригодной для решения поставленных задач, а так как коммерческие образования обычно занимаются неким выбранным направлениям, ибо попытаться объять необъятное, с большой вероятности приведет к саморазрушению образования или как минимум к стагнации, то и задачи там вписываются в выбранные ниши, а значит и вероятность смены инфраструктуры крайне низка. Ну за исключением, когда инструмент изначально выбран неверно, но в этом случает, вероятность помереть приближается к критической отметке. Ресурсы хоть у кого имеют странное свойство заканчиваться.
И для небольшой группы, со схожими взглядами, видимо, написание "подсебя" теплого лампового окружения близко к идеалу, и здесь минимальность исходной инфраструктуры даже предпочтительна, так как не отвлекает, не привязывает, и не влияет на выбор решения.
Однако, уже для, условно, малых предприятий, это не пригодно, я бы даже сказал, смертельно, ( не учитывая теплично созданных благоприятных условий, как например для 1С в 90-е, когда принудительно заставляли брать их ПО, не принимали отчетность, сформированную в другом ПО и тп; не альтруизма ради, конечно ).
Впрочем, никто не мешает в дальнейшем создать такое же теплое и ламповое, проблема в том, что некоторые любят погорячее, а другие крем-брюле.
Цитата:
2) Слишком сильная завязка на вендора, на инструментарий, который самому изменять дороговато.
3) Чисто психологически встраиваться в чужую цепочку-экосистему не очень хочется.
Именно поэтому, при всех симпатиях к Аде (вкусный, стройный язык, на котором я могу, да, в отличие от голого Оберона, сразу выразить в коде многое из семантики задачи) в 2005-м году ставку я сделал на Оберон.
А в настоящее время многое, что имелось "вкусное" в Аде, имею в КП библиотечно.
Помню, мы тогда в 2005-м обсуждали всё это, общаясь с С. И. Рыбиным, (ВМК МГУ, вед. разработчик AdaCore, представитель России в ISO-комитете по Аде). Он тогда вполне понял наши мотивации.
И есть ещё и момент 4). Даже стройная, логичная, продуманная, но сильно большая инфраструктура, периодически даёт всякие неожиданные подножки даже самому вендору.
Как и мелкие самописки. Которые по-любому придется встраивать в чужую инфраструктуру. И зависимости, ограничения и неприятности полезут из всех щелей.
Здесь то же самое - пытаешься барахтаться сам или всё же становишься наёмным работником. Второму придется встраиваться, не зависимо от желания, или искать до бесконечности, где же ему поднесут крем-брюле или булочку с маком. А дома дети, красавица-жена и сосед-с-иномаркой-и-дачей.
Цитата:
Конкретно по поводу IDE. Я вообще считаю инструментирование на основе плоского текста - мартышкиным трудом. Перейти к структурной IDE, а потом пожалуйста - на основе скриптов над деревом программного проекта любой разработчик себе на любой случай прикрутит любую автоматизацию. Кроме того, для языка с компактной семантикой.

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

Это их время. Кто-то тратит его на написание IDE, кто-то на написание очередного велосипеда, где руль окрашен в синий, потому-что зеленый не подходит к цвету купленных башмаков.

Автор:  Илья Ермаков [ Среда, 11 Январь, 2017 20:55 ]
Заголовок сообщения:  Re: Массив

Kemet писал(а):
Даже одиночке нужны средства версирования кода, и прочач и прочая - неужели это писать с нуля?
А может воспользоваться готовым инструментарием и над плоским текстомм наворотить что душе угодно, структурировать и обмазать шоколадом? Ибо это будет в итого дешевле, да и самоизолироваться всеж не стоит.


Ну мы 11 лет используем сначала SVN, потом меркуриал, над бинарными файлами модулей ББ.
Нет проблем.

А если трекание истории поддержать в самом бинарном формате, то вообще...

Цитата:
Это их время. Кто-то тратит его на написание IDE, кто-то на написание очередного велосипеда, где руль окрашен в синий, потому-что зеленый не подходит к цвету купленных башмаков.


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

Автор:  Rifat [ Четверг, 12 Январь, 2017 09:22 ]
Заголовок сообщения:  Re: Массив

По поводу стрктурный редактор vs текстовый редактор цитата из статьи R. Marti и T. Murer:
Цитата:
Structure-oriented editiors primarily serve the needs of novice programmers by making the task of entering and editing programs easier and less error prone. These editors guarantee that the program fragment under construction is syntactically correct. On the other hand, professional programmers have little difficulty with syntax, they need highly interactive systems without restricted editing capabilities. This fact explains why structure-oriented program editors haven't been successful yet.

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

Автор:  Иван Денисов [ Четверг, 12 Январь, 2017 21:37 ]
Заголовок сообщения:  Re: Массив

Инициализация массива строкой — это зло, поскольку легко теряется соответствие между индексами и значениями, если пропустить одну цифру. Инициализировать большие массивы требуется редко. А когда требуется, то решается путем программирования генератора кода. Реальный случай, массив из 1400 элементов для хранения шрифта в прошивке. Написал простой генератор, который создал процедуру инициализации такого массива. Хоть как такие задачи не решаются руками. Вы бы не стали 1400 элементов руками через запятую перечислять в любом случае :)

Автор:  Info21 [ Четверг, 12 Январь, 2017 23:57 ]
Заголовок сообщения:  Re: Массив

Все эти вещи "от мейнстрима" обсуждались, и не раз -- жалко, что нет какого-нибудь ЧаВо, где всё это было бы собрано.

У Иванандреича фонтан сил -- может, он придумает способ зачать это дело вот этим своим ответом?

Автор:  Иван Денисов [ Пятница, 13 Январь, 2017 05:49 ]
Заголовок сообщения:  Re: Массив

Info21 писал(а):
Все эти вещи "от мейнстрима" обсуждались, и не раз -- жалко, что нет какого-нибудь ЧаВо, где всё это было бы собрано.

Есть раздел FAQ: http://oberoncore.ru/faq/start
У меня нет прав на его редактирование, но может кто-то добавит выжимку про массивы туда после обсуждения.

Автор:  Oleg N. Cher [ Пятница, 13 Январь, 2017 11:30 ]
Заголовок сообщения:  Re: Массив

Иван Денисов писал(а):
Написал простой генератор, который создал процедуру инициализации такого массива.
Генератор - это утилитка, которая сама создаёт код вида:
Код:
a[0] := 1; a[1] := 5; a[2] := 2; ... a[1399] := 24;
?
Но это не решает проблему эффективности. Код для поэлементных присваиваний в любом случае не так эффективен, как присваивание "одной строкой". Общего решения, о котором испрошал qrkx, в Оберон-языках нет. Можно извернуться, упрятав данные в строки или в кодовые процедуры (нестандартная возможность), но это трюки.

Kemet писал(а):
Но автор говорит не о литералах/константных массивах, а об инициализации массива одной строкой.
Обращаю ваше внимание, что присваивание массиву литерала "одной строкой" - это по сути присваивание неконстантному массиву констатного, пусть и не объявленного явно. Именно поэтому я упомянул о константных массивах.

Автор:  Kemet [ Пятница, 13 Январь, 2017 16:24 ]
Заголовок сообщения:  Re: Массив

Иван Денисов писал(а):
Инициализация массива строкой — это зло, поскольку легко теряется соответствие между индексами и значениями, если пропустить одну цифру.

Каким образом её можно пропустить?
Во минимальный пример из Активного Оберона:
Код:
MODULE TestA;
    TYPE A = ARRAY [ 3, 3 ] OF LONGINT;

    VAR a := [[ 1, 2, 3 ], [ 4, 5, 6 ], [ 7, 8, 9 ]] : A;
    VAR b := [[ 1, 2, 3 ], [ 4, 6 ], [ 7, 8, 9 ]] : A;

END TestA.

Результат компиляции:
invalid array dimensions in line 5, col 27 VAR b := [[ 1, 2, 3 ], (*!*)[ 4, 6 ], [ 7, 8, 9 ]] : A;

Автор:  ilovb [ Пятница, 13 Январь, 2017 16:37 ]
Заголовок сообщения:  Re: Массив

Думаю, что Иван о таком:

А = [а, б, в, г, д, е, ж, и, к, л, м, н, о ....]

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

У меня двоякое ощущение от чтения этой темы. С одной стороны я люблю литералы массивов и страстно желаю их в 1С, с другой стороны используются они действительно редко (ну или часто, но в специфическом прикладном коде). Вот бы попарсить всякие исходники и статистику собрать...

А что коллеги думают о литералах структур? Вот они уже используются очень активно в том же Go.

Автор:  Илья Ермаков [ Пятница, 13 Январь, 2017 18:05 ]
Заголовок сообщения:  Re: Массив

ilovb писал(а):
А что коллеги думают о литералах структур? Вот они уже используются очень активно в том же Go.


Там возможны какие-то интересности, думаю, например, если принять, что набор параметров процедуры - это тоже структура (анонимная в частном случае, а в общем - и неанонимная...)

Автор:  Kemet [ Пятница, 13 Январь, 2017 21:02 ]
Заголовок сообщения:  Re: Массив

ilovb писал(а):
Думаю, что Иван о таком:

А = [а, б, в, г, д, е, ж, и, к, л, м, н, о ....]
Не сразу заметишь где ошибся. Но, имхо, с индексами аналогично наколоться раз плюнуть.

Определение "константного массива"? В котором потеряли какие-то значения?
Это решается, например, типизацией констант Как в Модуле-3 CONST id: T = C или приведением, как в Активном Обероне.
В Активном Обероне можно делать так:
Код:
CONST int = LONGINT(0xFFFFFFFF);
CONST uint = UNSIGNED32(0xFFFFFFFF);

И с массивами это могло бы выглядеть подобно:
Код:
TYPE TA = ARRAY [ N ] OF CHAR;
CONST А = TA( [а, б, в, г, д, е, ж, и, к, л, м, н, о ....] );

Но пока до конца не доделано, а для массивов это не реализовано. Но сделать не сложно. Полный статический контроль можно сделать.
Но подход как в Модуле-3 , на мой взгляд, приятней.
Цитата:
У меня двоякое ощущение от чтения этой темы. С одной стороны я люблю литералы массивов и страстно желаю их в 1С, с другой стороны используются они действительно редко (ну или часто, но в специфическом прикладном коде). Вот бы попарсить всякие исходники и статистику собрать...
А во в Дэлфи они очень активно используются.
Цитата:
А что коллеги думают о литералах структур? Вот они уже используются очень активно в том же Go.

Годная штука, я Феликсу писал на предмет реализации, но пока тишина... а жаль. Но хоть методы в процедуры добавили, и то радость.

Автор:  Александр Ильин [ Пятница, 13 Январь, 2017 23:41 ]
Заголовок сообщения:  Re: Массив

Kemet писал(а):
А во в Дэлфи они очень активно используются.
Это точно. Например, так:
Код:
procedure GreetUser(firstTime: Boolean);
const
  greeting: array[Boolean] of string = ("Hello!", "Hello again!");
begin
  Writeln(greeting[firstTime]);
end;

Автор:  Info21 [ Суббота, 14 Январь, 2017 10:37 ]
Заголовок сообщения:  Re: Массив

Илья Ермаков писал(а):
Вот конкретно. Properties.
Нафига козе оно?
Какова внятная этимология этой концепции?
Какая конкретная общая проблема решается?
Про этимологию -- это слишком умно, но штука мощная, только недоделанная (припоминается, что в документации это где-то сказано).

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

Страница 2 из 4 Часовой пояс: UTC + 3 часа
Powered by phpBB® Forum Software © phpBB Group
https://www.phpbb.com/