OberonCore

Библиотека  Wiki  Форум  BlackBox  Компоненты  Проекты
Текущее время: Четверг, 28 Март, 2024 23:56

Часовой пояс: UTC + 3 часа




Начать новую тему Ответить на тему  [ Сообщений: 127 ]  На страницу Пред.  1, 2, 3, 4, 5, 6, 7  След.
Автор Сообщение
СообщениеДобавлено: Понедельник, 31 Январь, 2011 19:48 
Аватара пользователя

Зарегистрирован: Пятница, 25 Ноябрь, 2005 12:02
Сообщения: 8500
Откуда: Троицк, Москва
Виктор О писал(а):
Меня, к приммеру , учили таблице умножения (была такая штука в докомпьютерную эру), а еще умножать в столбик. Причем не только умножать, но даже и (вы не поверите!) квадратный корень извлекать. В столбик.
И что?
Вы (мы) даже обоснованием этих алгоритмов в школе не занимались, не то что поиском альтернатив.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Понедельник, 31 Январь, 2011 20:46 

Зарегистрирован: Среда, 01 Август, 2007 00:13
Сообщения: 162
Илья Ермаков писал(а):
Но задумайтесь над разницей в ситуации - когда в те годы большинство программистов вообще кроме таких переходов ничего не использовало.
И перейти на новый уровень развития можно было только "на отрицании".

Из своего опыта думаю, что такое вполне могло быть. Моим первым языком был GWBASIC (где-то младшие классы школы), где очень популярен GOTO на нумерованную строку, а ещё GOSUB/RETURN. Помню, что потом было трудно удержаться от соблазна их использовать (там, где реально нужен WHILE, SELECT CASE, или даже процедура или функция)


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Среда, 02 Февраль, 2011 15:05 

Зарегистрирован: Среда, 30 Сентябрь, 2009 14:45
Сообщения: 147
Илья Ермаков писал(а):
Приведена куча каких-то не совсем прямых ассоциаций. Например, причём тут курс общего образования и развития личности - и проф. образование?

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

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

типа, профессионал должен быть компетентным не только в точке приложения собственных усилий, но и в некоторой окрестности этой точки.

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

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

В пору моей недолгой инженерной деятельности понадобилось мне решить среди прочих задачу моделирования, для чего мне придали в качестве профессионального программиста зануду-выпускника. Работать надо было на фортране (которого он, естественно, не знал, но быстро освоил).

Так вот, на все мои запросы он отвечал: "Невозможно" и показывал руководство по языку, в котором отсутствовала нужная информация. Кончилось дело тем, что наиболее важные куски я написал сам (доказывая что возможно), попутно освоив язык.

В коллективе абсолютно все инженеры были опытнее меня (лет на 20 стажа), но, уверяю Вас, ни один бы не справился с этим программистом. По незнанию программирования.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Среда, 02 Февраль, 2011 15:13 

Зарегистрирован: Среда, 30 Сентябрь, 2009 14:45
Сообщения: 147
Info21 писал(а):
Вы (мы) даже обоснованием этих алгоритмов в школе не занимались, не то что поиском альтернатив.

Я про то, что
Человек, который использует инструмент как черный ящик,
подвергается двум взаимосвязанным опасностям:

1. Когнитивный разрыв.
2. Абстрагирование от объекта.

1. Когнитивный разрыв.
В его картине мира отсутствует работоспособная модель совершаемых действий.
Он может только тупо выполнять инструкцию.

2. Абстрагирование от объекта.
Он может быть уподоблен врачу, который лечит результаты анализов, а не больного.
Анализы никогда не содержат всей важной информации. Плюс отсутствие эмпатии (личного отношения).


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Среда, 02 Февраль, 2011 17:21 
Аватара пользователя

Зарегистрирован: Пятница, 25 Ноябрь, 2005 12:02
Сообщения: 8500
Откуда: Троицк, Москва
Виктор О писал(а):
Info21 писал(а):
Вы (мы) даже обоснованием этих алгоритмов в школе не занимались, не то что поиском альтернатив.

Я про то, что
Человек, который использует инструмент как черный ящик,
подвергается двум взаимосвязанным опасностям:

1. Когнитивный разрыв.
2. Абстрагирование от объекта.
Мне казалось, мы обсуждаем шаблоны циклов и нужно ли там чего-то экспериментировать. Там, вроде, никакого разрыва нет.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Среда, 02 Февраль, 2011 17:47 
Модератор
Аватара пользователя

Зарегистрирован: Понедельник, 14 Ноябрь, 2005 18:39
Сообщения: 9459
Откуда: Россия, Орёл
Виктор О писал(а):
Я про то, что
Человек, который использует инструмент как черный ящик,
подвергается двум взаимосвязанным опасностям:

1. Когнитивный разрыв.
2. Абстрагирование от объекта.


Всё верно. Но какое отношение это имеет к обсуждаемому вопросу, действительно.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Среда, 02 Февраль, 2011 18:56 

Зарегистрирован: Вторник, 05 Январь, 2010 21:31
Сообщения: 1101
Откуда: Харків, Данилівка
Цитата:
Мне казалось, мы обсуждаем шаблоны циклов и нужно ли там чего-то экспериментировать.

Разве...
Цитата:
Всё верно. Но какое отношение это имеет к обсуждаемому вопросу, действительно.

Как это какое? Самое прямое:
Цитата:
-- Ногу! -- закричал он, хватаясь за рукав Б. Питомника. --
Снимайте ногу! Крупным планом! Ля вибрасьен са моле гош этюн гранд
синь!* Эта нога отметет все происки и сорвет все ярлыки, которые на меня
навешивают! Уи сан дот**, человек, который не специалист, может быть,
даже удивится, как я отношусь к этой ноге. Но ведь, товарищи, все
великое обнаруживается в малом, а я должен напомнить, что данная модель
есть модель ограниченных потребностей, говоря конкретно -- только одной
потребности и, называя вещи своими именами, прямо, по-нашему, без всех
этих вуалей -- модель потребности желудочной. Потому у нее такое
ограничение и в духпотребностях. А мы утверждаем, что только
разнообразие матпотребностей может обеспечить разнообразие
духпотребностей. Поясняю для прессы на доступном ей примере. Ежели бы,
скажем, была у него ярко выраженная потребность в данном магнитофоне
"Астра-7" за сто сорок рублей, каковая потребность должна пониматься
нами как материальная, и оно бы этот магнитофон заимело, то оно бы
данный магнитофон и крутило бы, потому что, сами понимаете, что еще с
магнитофоном делать? А раз крутило бы, то с музыкой, а раз музыка --
надо ее слушать или там танцевать... А что, товарищи, есть слушанье
музыки с танцами или без них? Это есть удовлетворение духпотребностей.
Компрене ву?

Вот Вирт изобрел свои рекорды, так их и крутит, что ж ему еще делать. А Geniepro - Хаскелл крутит.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Четверг, 03 Февраль, 2011 01:44 

Зарегистрирован: Вторник, 05 Январь, 2010 21:31
Сообщения: 1101
Откуда: Харків, Данилівка
http://www.sql.ru/forum/actualthread.as ... 5&hl=mumps

:lol:


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Четверг, 03 Февраль, 2011 15:41 

Зарегистрирован: Вторник, 05 Январь, 2010 21:31
Сообщения: 1101
Откуда: Харків, Данилівка
Вот как легко реализуються рекорды, на языках первой линейки:

a=.1;2;3;4
b=.'aaa';'bbb';'cccccc';'qqqq'
records=.a,.b
'id name'=.0 1
hren=.2

Извлечение:
from=.{
id from hren from records
name from hren from records
hren from records (целиком)

Реплейс:
( to=.<&, do=.} - всомогательное)

newid (to hren id) do records
newname (to hren name) do records
newrec (to hren) do records (целиком) :D

Т.е. имеем контейнер записей, где величина hren указывает на текущую "запись",а идентификаторы полей величины id и name.
Совершенно очивидно , что ничего кроме массивов тут не используется.


Последний раз редактировалось Рыжий Четверг, 03 Февраль, 2011 16:25, всего редактировалось 4 раз(а).

Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Четверг, 03 Февраль, 2011 15:45 
Модератор
Аватара пользователя

Зарегистрирован: Понедельник, 14 Ноябрь, 2005 18:39
Сообщения: 9459
Откуда: Россия, Орёл
Угу, и как со статическим контролем?


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Четверг, 03 Февраль, 2011 16:00 

Зарегистрирован: Вторник, 05 Январь, 2010 21:31
Сообщения: 1101
Откуда: Харків, Данилівка
Собственно говоря, никак. Но можно организовать динамический контроль:стандартные типы определены(не найду ссылку на справку). Для составных типов проверка может быть организована аналогично с учетом размерности аргумента.
Это частности, в M тоже нет этого. Это скорее плюс чем минус.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Четверг, 03 Февраль, 2011 20:11 

Зарегистрирован: Вторник, 05 Январь, 2010 21:31
Сообщения: 1101
Откуда: Харків, Данилівка
Вот как легко реализуються рекорды, на языках первой линейки:
---------------------------------------------------------------------------------
a=.1;2;3;4
b=.'aaa';'bbb';'cccccc';'qqqq'
records=.a,.b
'id name'=.0 1
hren=.2

Извлечение:
of=:{"1
id of hren of records
name of hren of records
hren of records
(целиком)

Реплейс:
( to=.<&,
do=.}
- всомогательное)

newid (to hren id) do records
newname (to hren name) do records
newrec (to hren) do records (целиком)


Т.е. имеем контейнер записей, где величина hren указывает на текущую "запись",а идентификаторы полей величины id

и name.
Совершенно очивидно , что ничего кроме массивов тут не используется.

----------------------------------------------------------------------------------------
rec=.1;4;5;6;7;4;6;78;3;42;2;1
v=.'Иванов';'Петров';'Сидоров';'Вайнфельд';'Громов';'Симаков';'Туркин';'Павлов';'Фигли';'Ой';'Ку';'Гы'
records=.rec,.v
'id name'=.0 1

А вот язык запросов к рекорадам:
Служебные:

select=:]
from=:&.>
where=:{~(I.)&((<1)&=)

Функция отбора:
tag=:3&>

select rec where tag from rec

( отбираем значения id<3)

select records where tag from rec

(сдесь выбираем записи records по его первому полю т.к. rec = 0{"1 records))

либо, не меняя функции отбора tag:

select records where tag from id of records

отдельно поля записей:

select name of records where tag from id of records
или:
select id of records where tag from id of records

select (id,name) of records where tag from id of records

Впрочем, можно изменить и саму функцию отбора tag.

так потихоньку-помаленьку за недельку можно соорудить язык : оберономумпсосиквелджей :D
А еще говорят , что АПЛ - нечитабельный язык :D


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Пятница, 11 Февраль, 2011 17:22 

Зарегистрирован: Среда, 30 Сентябрь, 2009 14:45
Сообщения: 147
Info21 писал(а):
Мне казалось, мы обсуждаем шаблоны циклов и нужно ли там чего-то экспериментировать. Там, вроде, никакого разрыва нет.

А мне казалось, что обсуждается более общая задача: давать ли в руки неофиту сразу идеальный инструмент или дать сначала помучиться?

К примеру дать первокурсникам простенький курсовичок на Бейсике (на пару тыщ строк) и посмотреть, что получится.

Ожидаю, что 20% получат стойкое отвращение к программированию и слиняют (фиг с ними, нормальный отсев).

80%-1 - с радостью перейдут к Оберону и будут жить по понятиям.
У оставшегося одного произойдет короткое замыкание, и он навсегда останется поклонником скрупулезного программирования.

И вот вопрос - оправданна ли эта жертва нашего метода шокового программирования?
Как говорится, слеза ребенка и Царствие Господне...


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Пятница, 11 Февраль, 2011 17:58 

Зарегистрирован: Пятница, 24 Апрель, 2009 16:28
Сообщения: 563
Откуда: Москва
Зачем людей уродовать.
"Студентов, ранее изучавших Бейсик, практически невозможно обучить хорошему программированию. Как потенциальные программисты они подверглись необратимой умственной деградации."
Э. Дейкстра.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Суббота, 12 Февраль, 2011 02:30 

Зарегистрирован: Вторник, 05 Январь, 2010 21:31
Сообщения: 1101
Откуда: Харків, Данилівка
Виктор О писал(а):
Info21 писал(а):
Мне казалось, мы обсуждаем шаблоны циклов и нужно ли там чего-то экспериментировать. Там, вроде, никакого разрыва нет.

А мне казалось, что обсуждается более общая задача: давать ли в руки неофиту сразу идеальный инструмент или дать сначала помучиться?

К примеру дать первокурсникам простенький курсовичок на Бейсике (на пару тыщ строк) и посмотреть, что получится.

Ожидаю, что 20% получат стойкое отвращение к программированию и слиняют (фиг с ними, нормальный отсев).

80%-1 - с радостью перейдут к Оберону и будут жить по понятиям.
У оставшегося одного произойдет короткое замыкание, и он навсегда останется поклонником скрупулезного программирования.

И вот вопрос - оправданна ли эта жертва нашего метода шокового программирования?
Как говорится, слеза ребенка и Царствие Господне...


И что получиться? Бейсик отличный язык. Дейкстра имел ввиду первые варианты бейсика, ну так тогда все такое было. Все последующие варианты бейсика имели вполне процедурно-модульный вид. А, как я убедился на практике, решать задачи на нем куда как приятнее, чем на паскале или пресловутом Delphi.Посмотрите на продуманный состав операторов нормального бейсика, ну хоть Quick... Еще один "необъектный" язык баз данных М , ОМД не нем - сущая радость. Коллега ЧАЛ боролся-боролся на sql.ru c приматическим элементом, да так и не поборол.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Суббота, 12 Февраль, 2011 14:10 
Модератор
Аватара пользователя

Зарегистрирован: Понедельник, 14 Ноябрь, 2005 18:39
Сообщения: 9459
Откуда: Россия, Орёл
Мой первый язык - QuickBasic :) :)


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Понедельник, 14 Февраль, 2011 14:44 

Зарегистрирован: Среда, 30 Сентябрь, 2009 14:45
Сообщения: 147
Peter Almazov писал(а):
"Студентов, ранее изучавших Бейсик, практически невозможно обучить хорошему программированию. Как потенциальные программисты они подверглись необратимой умственной деградации."
Э. Дейкстра.

Судя по всему, эти голландские студенты были изначально убогие. Добро бы он еще сказал РАНЕЕ ПРИМЕНЯВШИХ БЕЙСИК. Изучать можно что угодно, это ничего не значит. Неужели, если б этих голландцев научить матерным выражениям, они все стали бы патологическими извращенцами?

Я лично изучал бейсик (3 или 4 дня). Никаких патологий ни я ни мои начальники у меня не наблюдали...

Кстати, я изучал тот самый первоначальный бейсик. Ничего страшного. Особенно по сравнению с альтернативой - ассемблером (ничего другого на той машине не было).


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Понедельник, 14 Февраль, 2011 14:51 

Зарегистрирован: Пятница, 24 Апрель, 2009 16:28
Сообщения: 563
Откуда: Москва
Виктор О писал(а):
Я лично изучал бейсик (3 или 4 дня). Никаких патологий ни я ни мои начальники у меня не наблюдали...
"А судьи кто?"
:)


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Понедельник, 14 Февраль, 2011 18:54 

Зарегистрирован: Среда, 30 Сентябрь, 2009 14:45
Сообщения: 147
Peter Almazov писал(а):
"А судьи кто?"
:)

"За древностию лет"?
О, Вы мне льстите. И некоторым из моих начальников тоже :D


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Четверг, 17 Февраль, 2011 01:25 

Зарегистрирован: Вторник, 05 Январь, 2010 21:31
Сообщения: 1101
Откуда: Харків, Данилівка
Очивидно, что само понятие "записи" носит некорректный канторовский манер. И, вообще, стоит в стороне от науки. Можно легко заметить к каким несуразицам приводят подобные определения:
TRassel=class
rtext.String;
rassel:TRassel; {само по себе режущее глаз рекурсивное определение}
end;

var
Rass:TRassel;

Rass:=Trassel.Create;
Rass.rtext:='bubububu'; //задаем значение первому элементу
Rass.rassel:=Rass; //задаем значение второму элементу
Rass.rassel.rtext:='ssssss'; //задаем значение первому элементу второго элемента
Memo1.Lines.Add(Rass.rtext); // и апп!....
{сдесь любой психически здоровый человек ожидает печать bububu
хорошо еще что строки с присвоениями расположены близко друг с другом}
Memo1.Lines.Add(Rass.rassel.rassel.rassel......rassel.rassel.rassel.rtext);
{данная конструкция вообще ничего кроме умиления не вызывает, чем она отличается
от *********p один бог знает}

Такого рода примеров можно плодить при работе с объектами сколько угодно, многие из них далеко не очивидны. Проистекает данная ситуация из самого понятия "записи", как объединения разнотипных объектов, в сочетании с неизбежностью использования "указателей", дабы иметь возможность строить на основе записей "структуры данных". Помимо этого все типовые алгоритмы основаны на явной или скрытой рекурсии, что не упрощает ни их восприятия, ни их конструирования.
Массивы избавлены от подобного рода недостатков.

Пример заезженный, но налицо очивидный моветон.


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 127 ]  На страницу Пред.  1, 2, 3, 4, 5, 6, 7  След.

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 8


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Вся информация, размещаемая участниками на конференции (тексты сообщений, вложения и пр.) © 2005-2024, участники конференции «OberonCore», если специально не оговорено иное.
Администрация не несет ответственности за мнения, стиль и достоверность высказываний участников, равно как и за безопасность материалов, предоставляемых участниками во вложениях.
Без разрешения участников и ссылки на конференцию «OberonCore» любое воспроизведение и/или копирование высказываний полностью и/или по частям запрещено.
Powered by phpBB® Forum Software © phpBB Group
Русская поддержка phpBB