Програмирование графических примитивов в духе QBasic

 
1 2 3 4 5

Balancer

администратор
★★★★★
yacc> Зачем делать это каждый раз при запуске, если нужна производительность?

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

yacc> ActivePython, которым я пользуюсь, так не думает :)

Да что ты за него цепляешься? Это совершенно неофициальная сторонняя поделка :) Кроме того, как я уже говорил, это поведение настраивается.

yacc> ActivePython - очень удобный для Win сред. QB же человек скорее всего не под линух запускает? :)

Да и под Linux - запросто. Описанные мной люди относятся к той категории, которой не принципиально, за какой ОС сидеть. Лишь бы работало.

yacc> Ты в каком году поступал?

В 1990м.

yacc> Я работал с F77 и F90. Во втором этих ограничений нет.

FIV, F77. F90 - это уже новодел, которым совсем мало кто пользовался :)

yacc> У нас трогались только те

Так у вас какая профилирующая специализация?

Balancer>>А что прикажешь делать тем, кому программирование - даже не околопрофилирующий предмет? :)
yacc> Использовать мат. пакеты.

Так их не учили тогда :)

yacc> Покажи мне языки программирования общего назначения, где переменная в тексте программы греческими буквами обозначаются :)

Да легко :)

Сегодня - это, вообще, норма. А в ряде языков было нормой и 20-50 лет назад (те же Форт, Лисп...)

yacc> Глянь сюда Comcast и ткни мне пальцев применительно к IMUL и 808x на reg32 или mem32, а то я что-то не вижу :)

«If source operand is a word value, then DX:AX is divided by "src" and the quotient is stored in AX and the remainder in DX.»

Вообще, странно, что ты этого не знаешь, если с x86 работал.

yacc> Да не сказал бы я :)

И там, и там короткие операции - 4 такта. Но в 8086 - вдвое выше разрядность операций. Это на сложениях/вычитаниях. На умножении разница становится уровня порядков, так как на 8080 умножения аппаратного нет. А на 8086 - 70..100 тактов. Пересылка регистр-регистр у 8080 - 4 такта, у 8086 - два. И т.д.

Balancer>> Не я. В теме выше было.
yacc> Твоя фраза

Тему почитай, да?

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

Ты совсем не читаешь мои сообщения?

yacc> Это в смысле твоих ссылок на Tiobe ? :)

Не вижу смысла дальше продолжать эту ветку, пока ты не начнёшь читать то, что я пишу.

Balancer>> Хорошо. Скажи, как в GNUPlot, например, задавать цвет окружности, который бы менялся в зависимости от значения параметра-радиуса?
yacc> Покажи картинку где это нужно - не понял.

Ок. Есть набор данных "x;y;r":
code text
  1. 10 50  5
  2. 2  10  7
  3. 50 20 10


Нужно нарисовать окружностями определённого цвета:
code text
  1. set terminal pngcairo enhanced font "Tahoma,8" size 800, 800
  2. set output 'result.png'
  3.  
  4. set xrange [-5:50]
  5. set yrange [-5:50]
  6.  
  7. plot "data.txt" using 1:2:(3) with circles lc rgb "#00ff00" fs transparent solid 0.5 noborder notitle


Нужно, чтобы цвет был не #00ff00, а чтобы R,G и B компоненты цвета вычислялись в зависимости от параметра r, третьей колонки данных.

yacc> Чет не понял - что и оформительские задачи программировать? :)

А для чего, по-твоему, сабж?

yacc> А что в GASP-е с наклонным рисованием шрифтов? :)

Так я тут не про GASP веду разговор, а про свои задачи, которые не решил через GNUPlot. Почитай ещё раз тему. А если понадобится текст наклонный сделать (GASP только графические примитивы вращать умеет), то я Cairo тот же возьму. Или python-gnuplot :)
 3.6.123.6.12

Balancer

администратор
★★★★★
yacc> Это минимум означает одно - не программировать это самому руками на ЯП общего назначения.

Есть много задач, которые быстрее запрограммировать, чем найти готовое экзотическое средство их решения, да ещё не зная заранее, существует ли оно.
 3.6.123.6.12

yacc

старожил
★★☆
yacc>> Глянь сюда http://home.comcast.net/~fbui/intel_i.html и ткни мне пальцев применительно к IMUL и 808x на reg32 или mem32, а то я что-то не вижу :)
Balancer> «If source operand is a word value, then DX:AX is divided by "src" and the quotient is stored in AX and the remainder in DX.»
Balancer> Вообще, странно, что ты этого не знаешь, если с x86 работал.
Рома, еще раз глянь на табличку и найди там именно применительно к 808х четыре байта.
Ты мне показываешь на общие слова для серии процессоров, но там ниже есть уточнения, которые ты пропустил.
Не было 32 бита на 808х для вычислений.
Остальное отвечу позже.
 3.5.93.5.9

Balancer

администратор
★★★★★
yacc> Рома, еще раз глянь на табличку и найди там именно применительно к 808х четыре байта.

Зачем?

yacc> Ты мне показываешь на общие слова для серии процессоров, но там ниже есть уточнения, которые ты пропустил.

Что я пропустил, когда я на этой системе команд, в том числе и использование пар DX:AX исписал не одну тысячу строк ассемблерного кода? :)

yacc> Не было 32 бита на 808х для вычислений.

А я где-то говорил про 32-х битные вычитания? Воистину, тебе нужно ещё учиться и учиться читать что тебе пишут :D
 3.6.123.6.12

NewPilot

опытный

NewPilot>> MathCad конечно штука удобная, но до определенных пределов. Когда возникает задача расчетов с большим объемом данных, он начинает заметно проигрывать тем же Сям.
yacc> Один вопрос - вы графику где смотрите - средствами самого Си?

Это как программист сделает. Сам я на сях не пишу.
Но в данном случае проще просмотр резутатов в графическом виде отдать на откуп сторонним программам, доступным пользователю. Хочешь - читай файл данных в том же маткаде (я так делал, хотя это не лучший способ) и строй график там, хочешь - в другой программе.
То есть для непрограммистов Маткад это очень удобно. Там много чего можно делать. Но если считать что-то большое, как я выше писал - надо что-то более серьезное использовать. Впрочем это все ИМХО. Может я чего-то про Маткад не знаю... как и основная масса его пользователей :F

ps Если просто посмотреть, что получилось - маткада хватает. Когда надо график для статейки или в доклад вставлять, приходится дорабатывать его напильниками. То есть здесь он тоже не так чтобы рулит...
Афтомат жжот! (с)Лукьяненко. Последний дозор.  3.6.123.6.12

yacc

старожил
★★☆
Balancer> А я где-то говорил про 32-х битные вычитания? Воистину, тебе нужно ещё учиться и учиться читать что тебе пишут :D
"Но на 16/32 разрядах эмулировать много быстрее, чем на 8/16." - твое?
Мне вот и интересно, где ты взял 32 разряда у Intel 8088 ( XT ) у которого ША - 20 бит ( и то, с быстрыми near и дорогоми far указателями ) и у обоих ВОСЕМЬ бит ШД, я говорил я не про 8080, а про z80, чья система команд по сравнению с 8080 - расширена.

Оказывается ты нашел их в аппаратном умножении/делении? :)
 3.5.93.5.9

yacc

старожил
★★☆
NewPilot> Но в данном случае проще просмотр резутатов в графическом виде отдать на откуп сторонним программам, доступным пользователю. Хочешь - читай файл данных в том же маткаде (я так делал, хотя это не лучший способ) и строй график там, хочешь - в другой программе.
И я говорю именно про это :)
 3.5.93.5.9

Balancer

администратор
★★★★★
yacc> "Но на 16/32 разрядах эмулировать много быстрее, чем на 8/16." - твое?

Да. Где тут про вычитание? :)

yacc> Мне вот и интересно, где ты взял 32 разряда у Intel 8088 ( XT ) у которого ША - 20 бит

Опять двадцать пять за рыбу деньги. Смотри div/mul. Регистровую пару DX:AX.

yacc> ( и то, с быстрыми near и дорогоми far указателями )

Да что тебя всё на шину адреса заносит-то? Я про неё слова не говорил, не знаю, что там тебе мерещится...

yacc> и у обоих ВОСЕМЬ бит ШД

Хм. При чём тут внешняя разрядность шины данных процессора?

yacc> я говорил я не про 8080, а про z80, чья система команд по сравнению с 8080 - расширена.

Не принципиально.

yacc> Оказывается ты нашел их в аппаратном умножении/делении? :)

Я их не искал, я, как бы, их знал.

Если ты забыл, то напомню, что речь зашла об эмуляцию плавучки. 16/32-х битное аппаратное умножение/деление позволяет эмулировать плавучку намного эффективнее, чем 8/16-битное программное.
 3.6.123.6.12

yacc

старожил
★★☆
Balancer> Опять двадцать пять за рыбу деньги. Смотри div/mul. Регистровую пару DX:AX.
Где ты нашел для команды mul эту регистровую пару ?
Команда mul умножает аккумулятор - "Signed multiplication of accumulator by "src" with result placed in the accumulator. "
Аккумулятор - 16 битный регистр.
Специально для тебя показываю какие операнды поддерживает 808x.

Balancer> Если ты забыл, то напомню, что речь зашла об эмуляцию плавучки. 16/32-х битное аппаратное умножение/деление позволяет эмулировать плавучку намного эффективнее
, чем 8/16-битное программное.
Нет там 32 бит аппаратного. Где ты его нашел???
Прикреплённые файлы:
 
 3.5.93.5.9

Balancer

администратор
★★★★★
yacc> Где ты нашел для команды mul эту регистровую пару ?

Я тебе цитату выше приводил.

yacc> Команда mul умножает аккумулятор

Да.

yacc> Аккумулятор - 16 битный регистр.

Да. Результат - 32-х битный. Кладётся в DX:AX.

yacc> Нет там 32 бит аппаратного. Где ты его нашел???

«If operand is op16, unsigned DX::AX = AX * op16»
 3.6.123.6.12

yacc

старожил
★★☆
Balancer> Например, из-за банального упрощения системы. Потому что развитая и бесконфликтная система промежуточного кеширования кода - довольно сложна.
В более древние времена с более тормознутымии процами компиляторы справлялись беэ этого.

Balancer> Да что ты за него цепляешься? Это совершенно неофициальная сторонняя поделка :)
Очень даже удобная. :)

Balancer> Да и под Linux - запросто. Описанные мной люди относятся к той категории, которой не принципиально, за какой ОС сидеть. Лишь бы работало.
... с требованием, что там обязательно должен быть QB ( потому что они так привыкли ) ? :)

Balancer> FIV, F77. F90 - это уже новодел, которым совсем мало кто пользовался :)
У нас - активно.

Balancer> Так у вас какая профилирующая специализация?
Физика. В моем случае - радиофизика. Кафедра выч. физики обеспечивала в частности нас алгоритмами и библиотеками. Поэтому там и сейчас Фортран есть.
Вот относительно недавняя книга - Книга: Современный Фортран. Самоучитель » Скачать книгу - ее автор у нас курс Фортрана и читал. :) А Меркурьев ( на первом же листе его памяти посвящается ) - в прошлом ректор ЛГУ и завкафедры выч.физики.

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

Balancer> Сегодня - это, вообще, норма. А в ряде языков было нормой и 20-50 лет назад (те же Форт, Лисп...)
На форте??? :) А что там у нас с кодировками было, со всякими KOI-8 и т.п. особенно в текстовом режиме, лет эдак 20 назад?

yacc>> Твоя фраза
Balancer> Тему почитай, да?
Почитал, да. Не было раньше.
Я почему про эксель заговорил - потому что по научной работе надо отчитываться, предоставляя результаты. *.dat файл удобен для доп. обработки, а кустарная картинка - нет.
*.dat файл можно посмотреть в разных программах и в разных ракурсах, а картинку в кустарном виде - сделать PrintScreen только можно и вставить.

Balancer> Ты совсем не читаешь мои сообщения?
Balancer> Не вижу смысла дальше продолжать эту ветку, пока ты не начнёшь читать то, что я пишу.
А что читать ссылки типа "все можно портировать под питон" ?
Я это и сам знаю. Часть портирована, а бОльшая часть - нет.
Смысл людям, упертым в некоторый язык, иметь возможность что-то портировать? - они это делать не будут .

Balancer> Ок. Есть набор данных "x;y;r":
Balancer> Нужно, чтобы цвет был не #00ff00, а чтобы R,G и B компоненты цвета вычислялись в зависимости от параметра r, третьей колонки данных.
Я не понял - зачем это нужно? Почему это же не сделать в виде трехмерных столбцов? Зачастую я вижу научные статьи в черно-белом виде - там эти цвета будут бесполезны.

Balancer> А для чего, по-твоему, сабж?
Это чтобы как я выше писал - copy-paste в тот же PowerPoint или Word/Excel?

Balancer> Так я тут не про GASP веду разговор, а про свои задачи, которые не решил через GNUPlot.
Давай то, что не может сделать GASP обсуждать не будем, а?
У меня изначально были сомнения какой наукой ( нафиг! ) заниматься можно, рисуя в QB?
 3.5.93.5.9

yacc

старожил
★★☆
yacc>> Нет там 32 бит аппаратного. Где ты его нашел???
Balancer> «If operand is op16, unsigned DX::AX = AX * op16»
Тьфу... Поправления принимаются :)
 3.5.93.5.9

Balancer

администратор
★★★★★
yacc> В более древние времена с более тормознутымии процами компиляторы справлялись беэ этого.

Ага. На однозадачных и однопользовательских системах :)

yacc> Очень даже удобная. :)

От этого она не перестаёт быть сторонней.

yacc> ... с требованием, что там обязательно должен быть QB ( потому что они так привыкли ) ? :)

См. тему сначала.

Balancer>> Так у вас какая профилирующая специализация?
yacc> Физика. В моем случае - радиофизика. Кафедра выч. физики обеспечивала в частности нас алгоритмами и библиотеками. Поэтому там и сейчас Фортран есть.

Значит у вас вычислительная часть была куда более профилирующей, чем у нас. У нас это был лишь вспомогательный инструмент.

yacc> На форте??? :) А что там у нас с кодировками было, со всякими KOI-8 и т.п.

На Форте идентификатор может принимать любые непробельные значения изначально. Я в этом контексте.

yacc> Почитал, да. Не было раньше.

Плохо читал: http://balancer.ru/_bors/igo?o=forum_post__2276841

yacc> Я почему про эксель заговорил - потому что по научной работе надо отчитываться, предоставляя результаты. *.dat файл удобен для доп. обработки, а кустарная картинка - нет.

Только средствами Excel очень многое сделать в принципе невозможно. Поэтому народ часто вставляет в него картинки, полученные на стороне.

yacc> *.dat файл можно посмотреть в разных программах и в разных ракурсах

Безусловно. Если пользователь этими программами владеет.

yacc> А что читать ссылки типа "все можно портировать под питон" ?

Нет. Ссылки вида «как вызывать Фортрановские библиотеки из Питона».

yacc> Я это и сам знаю. Часть портирована, а бОльшая часть - нет.

Зачем портировать, когда то, что не портировано можно использовать в лоб? А плюс к этому - богатые самостоятельные научные либы. И об этом я тоже ссылку кидал.

yacc> Смысл людям, упертым в некоторый язык, иметь возможность что-то портировать?

Потому что разговор у нас не только об этих людях. Интересная у нас беседа выходит.
- Я: есть люди, которым удобно то-то и то-то
- Ты: неправильно, потому что другим людям лучше так-то...

yacc> Я не понял - зачем это нужно?

Нужно.

yacc> Почему это же не сделать в виде трехмерных столбцов?

Потому что это карта. При чём плоская, вид сверху. Чтобы линеечкой можно было измерить :)

yacc> Давай то, что не может сделать GASP обсуждать не будем, а?

С чего, вдруг? Я, конечно, понимаю, что тему ты не читаешь. Поэтому напомню контекст:
- Ты: Нужно рисовать в GNUPLot [или аналогах]
- Я: GNUPlot имеет высокий входной барьер и отвратительную документацию. Например, даже я не осилил как сделать то-то и то-то, потому что документация ужасная
- Ты: Нет, давай сравнивать GNUPlot и GASP по общим параметрам.

Да пожалуйста, сравнивай :) Это не отменяет моего замечания по сложности GNUPlot'а и отсутствия документации. Равно, как и не отменяет разного назначения GASP'а и GNUPlot'а.

yacc> У меня изначально были сомнения какой наукой ( нафиг! ) заниматься можно, рисуя в QB?

Физхимией в частности.
 3.6.123.6.12

Balancer

администратор
★★★★★
Balancer>> «If operand is op16, unsigned DX::AX = AX * op16»
yacc> Тьфу... Поправления принимаются :)

Ну, наконец-то. И это не смотря на то, что я раньше уже это писал: «If source operand is a word value, then DX:AX is divided by "src" and the quotient is stored in AX and the remainder in DX».
 3.6.123.6.12

Mishka

модератор
★★★
yacc> Сначала надо вычислить.

Глупости. Тебе привели пример для рисования. Всё.

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

Дык, у Питона это часть языка. А библиотек у Паскаля для вычислений с большой разрядностью не было. Иначе мы бы не разраработали свои. :) Бо для Алгола 68 было, а для Паскаля нет. А сравнивать надо было. В качестве теста поиск больших простых чисел по известной теоремке. Но не решето.
 3.6.113.6.11

Mishka

модератор
★★★
yacc> А чем он сложный? :)
FORTRAN IV, который и был в ходу в СССР вначале (базовый FORTRAN не был имплементирован, как таковой на машинах, которые в СССР были популярны), имеет свои известные глюки. Про это было даже много книжек написано. :) Головная боль компиляторщиков.

yacc> Я работал с Ф77 и Ф90, с Ф4 - совсем мало, еще на СМ-ках и ДВКшках.

Если ты пользовался хотя бы 77, то не говорил бы, что он проще Паскаля. Он уже, как минимум, не проще. А 90 уже и другие вещи имел. Кстати, Борландовский Паскаль и не Паскаль вовсе. Достаточно стандарт посмотреть.

yacc> Своеобразный аналог структуры. Я им пользовался мало.

Атас. А ещё говоришь, что писал... Это аналог глобального безтипового union-а. Куда можно было и структуры засовывать. А глюки с именованием или анононимностью ещё те.

yacc> В Питоне меня отсутствие этой защиты иногда раздражает. Там это тоже есть :)

Да ну? В Питоне, как в нормальном языке, параметры трактуются в качестве локальных переменных. А вот в Фортране, сделав вызов:
code text
  1.       I=LSUB(1)
  2.       WRITE(6,'(I1)') 1


Можно было получить и 4. Т.к. какой-то умник присвоил параметру 4.


yacc> В каждом языке - свои тараканы :)
Их там настолько много, что их отнесли в других языках в категории "дешевле не делать, чем отлаживать".
 3.6.113.6.11
+
-
edit
 

Mishka

модератор
★★★
yacc>> Покажи картинку где это нужно - не понял.
Balancer> Ок. Есть набор данных "x;y;r":

Да элементарные множества Мальдебротта или Джулии:
http://mail.colonial.net/~abeckwith/images/mset.gif [not image]





 3.6.113.6.11
+
-
edit
 

Balancer

администратор
★★★★★
Mishka> Да элементарные множества Мальдебротта или Джулии:

Фракталы, как раз, там можно изобразить :)



Но, понятно, с массой ограничений. Всё же это продвинутый визуализатор, а не язык программирования.
 3.6.123.6.12

yacc

старожил
★★☆
yacc>> Сначала надо вычислить.
Mishka> Глупости. Тебе привели пример для рисования. Всё.
Этот пример означает что во всех случаях именно так и надо пользоваться? ДА\НЕТ?
Где я говорил, что мой случай - обобщение на все-все-все вычисления?

Mishka> Дык, у Питона это часть языка.
Тогда Питона у нас не было - для 386 он был бы тормознутный. А тем более для XT. Это у вас Терехов мог себе хьюлет заказать, а у нас в лабах навороченных машин не было.

Mishka>А библиотек у Паскаля для вычислений с большой разрядностью не было.
И ребята написали их сами. Потом пошло по рукам.

Mishka> А сравнивать надо было. В качестве теста поиск больших простых чисел по известной теоремке. Но не решето.
Физики в вычислениях не заморачиваются на длинные целочисленные числа - им нужны числа с плавающей точкой и комплексные, которые в фортране сразу присутствуют.
 3.5.93.5.9

yacc

старожил
★★☆
Mishka> Да элементарные множества Мальдебротта или Джулии:
Это - в большей степени сфера математиков.
 3.5.93.5.9

yacc

старожил
★★☆
yacc>>> Покажи картинку где это нужно - не понял.
Balancer>> Ок. Есть набор данных "x;y;r":
кстати, вопрос на засыпку - что будет быстрее - делать в двойном цикле Point(x,y,color), тут же отрисовывая на адаптере. Или сформировать из этого хотя бы bmp в оперативке и потом посмотрев его? :)
 3.5.93.5.9

yacc

старожил
★★☆
Mishka> FORTRAN IV, который и был в ходу в СССР вначале (базовый FORTRAN не был имплементирован, как таковой на машинах, которые в СССР были популярны), имеет свои известные глюки. Про это было даже много книжек написано. :)
Я им мало пользовался. В основном - компиляторами MS ( под DOS ), незнаю чей, который был на VAX\VMS ( и с ним огромная библиотека математики, чем он и был интересен ), и под Sun Solaris.
Советский я застал в самом начале.

Mishka> Если ты пользовался хотя бы 77, то не говорил бы, что он проще Паскаля.
Зачем мне для того, чтобы посчитать, знать весь синтаксис и все возможности?
Ну вот зачем? :)
Минимум фортрановская программа именно для рассчетов проше набивалось - не надо было тех же присваиваний ставить и точек с запятыми. :)

Mishka>А 90 уже и другие вещи имел. Кстати, Борландовский Паскаль и не Паскаль вовсе. Достаточно стандарт посмотреть.
Не спорю. Но именно он был в ходу.

Mishka> Атас. А ещё говоришь, что писал... Это аналог глобального безтипового union-а. Куда можно было и структуры засовывать. А глюки с именованием или анононимностью ещё те.
Я им фактически не пользовался - не было необходимости.

Mishka> Да ну? В Питоне, как в нормальном языке, параметры трактуются в качестве локальных переменных. А вот в Фортране, сделав вызов:
Mishka> Можно было получить и 4. Т.к. какой-то умник присвоил параметру 4.
А в С можно было систему подвесить с легкостью, просто неаккуратно обращаясь с указателями. По-первости такие глюки делал, потом рука набилась.

Mishka> Их там настолько много, что их отнесли в других языках в категории "дешевле не делать, чем отлаживать".
Для того, чтобы посчитать по формулам, не надо писать навороченных программ.
 3.5.93.5.9
Это сообщение редактировалось 07.11.2010 в 01:25

yacc

старожил
★★☆
Balancer> Ага. На однозадачных и однопользовательских системах :)
А QB - каких времен? :)
Рома, положа руку на сердце - с Питоном идет вместе с этим инсталлятором IDE? :)
А у QB она есть :)

Balancer> От этого она не перестаёт быть сторонней.
Ну ты же не дрогнув сердцем для Portable тоже на стороннюю показал :)

Balancer> Значит у вас вычислительная часть была куда более профилирующей, чем у нас. У нас это был лишь вспомогательный инструмент.
Наверное - выч. методы нам читали на нескольких курсах и были по ним лабы. Да и самим считать приходилось - можно было часть алгоритмов подобрать уже готовых.

Balancer> Плохо читал: http://balancer.ru/_bors/igo?o=forum_post__2276841
Каким путем график оказывается в статье? - PrintScreen/Paste ? :)

Balancer> Только средствами Excel очень многое сделать в принципе невозможно. Поэтому народ часто вставляет в него картинки, полученные на стороне.
Это один из примеров. Для более навороченных отображений я же и предложил GNUPlot. Более чем уверен, что и еще есть варианты - тот же Maple или MathCad.

yacc>> *.dat файл можно посмотреть в разных программах и в разных ракурсах
Balancer> Безусловно. Если пользователь этими программами владеет.
Это ИМХО - первое что должен уметь ученый при работе с данными - уметь посмотреть *.dat файл.
И это ИМХО гораздо полезнее, чем умение программировать графику на уровне Yamaha MSX Basic.

Balancer> Нет. Ссылки вида «как вызывать Фортрановские библиотеки из Питона».
Не буду - знаю же что сразу увижу баги. :) Это из серии моих ранних времен - как заюзать lib от одного компилятора ( скажем MS ) в другом ( скажем BC ), учитывая что у них mangling разный.

Balancer> Зачем портировать, когда то, что не портировано можно использовать в лоб?
Лушче все писать на одном языке. Особливо если когда что-то идет не так, хочется глянуть в исходник. Особенно отладчиком. Знаешь как раздражало на Borland C++ Builder когда он в VCL лез в Паскалевский код? А по PyODBC я собственноручно ходил - на С++, а не на питоне, цепляясь отладчиком к питоновскому процессу, собирая его на своем компиляторе.
Языковая смесь при отладке - гемор.

Balancer> - Я: есть люди, которым удобно то-то и то-то
Balancer> - Ты: неправильно, потому что другим людям лучше так-то...
Нет не так.
Ты - клевая штука
Я - не, игра в песочнице
Ты - да не, многие в науке именно так пользуются...
[Я в тихом шоке]

Balancer> Потому что это карта. При чём плоская, вид сверху. Чтобы линеечкой можно было измерить :)
Смотри мой ответ Мишке.
Я работал с DEM данными по картографии ( Digital Evaluation Model ) - это двумерная сетка высот.
Можно было отрисовывать влоб, интерполируя м-ду значениями четырех точек по квадратичной форме и вычисляя влоб.
И даже там очень хотелось не раза нарисовать, а примостить некоторый UI, чтобы иметь возможность увидеть часть и посмещать туда-сюда, поприближать туда-сюда. Потому что так удобнее.
Примитивная графика в этом помогает мало...


Balancer> - Ты: Нужно рисовать в GNUPLot [или аналогах]
Balancer> - Я: GNUPlot имеет высокий входной барьер и отвратительную документацию. Например, даже я не осилил как сделать то-то и то-то, потому что документация ужасная
Balancer> - Ты: Нет, давай сравнивать GNUPlot и GASP по общим параметрам.
Не - ты захотел повернутые шрифты... а это - не к GASP.
Не обязательно GNUPlot - есть другие пакеты. Сделай удобный формат *.dat файла - и рассматривай там - зачем самому визуализировать в GASP да еще и с сильным урезанием удобства просмотра ( см. выше про DEM )

Balancer> Да пожалуйста, сравнивай :) Это не отменяет моего замечания по сложности GNUPlot'а и отсутствия документации.
Рома, GNUPlot - для примера. На нем просмотрщики не заканчиваются... :)

Balancer> Физхимией в частности.
Вот потому, что нам на Фортране влом было рисовать самим ( а иногда и проблематичено - на том же Sun ), мы лучше знали сторонние пакеты для просмотра и не старались графику сделать сами.
Кто очень хотел - уходил с Фортрана ( в мое время ) - на С или Паскаль.
 3.5.93.5.9

varban

администратор
★★★★
yacc> незнаю чей, который был на VAX\VMS ( и с ним огромная библиотека математики, чем он и был интересен )

DEC FORTRAN 77. Библиотеки - IMSL и NAG :)
 7.0.517.447.0.517.44
+
-
edit
 

Mishka

модератор
★★★
yacc>> "Но на 16/32 разрядах эмулировать много быстрее, чем на 8/16." - твое?
Balancer> Да. Где тут про вычитание? :)

Да, ладно. :) Всё равно быстрее. :) Поскольку мне пришлось этим заниматься, то решение для сложения и вычитания в лоб и с маленькой оптимизацией. На самом деле приходилось считать такты и оптимизировать по минимуму тактов. Переходов нет, ещё смотрел на водопровод. С делением немного сложнее. :) Предлагается yacc-у самому помучиться и сделать аналогичные вещи на 8 битном процессоре для 32 битной эммуляции. Ну и с умножением надо ненмого поколдовать для полноценного знакового умножения (буквально несколько команд :) ) — но надо знать арифметику дополнений.

сложение
code text
  1. res=A32 + B32 = Ah16*2^16 + Bh16*2^16 + Al16 + Bl16 = (Ah16 + Bh16)*2^16 + Al16 + Bl16
  2. ; в лоб
  3. mov ax,Ah16
  4. mov bx,Bh16
  5. mov cx,Al16
  6. mov dx,Bl16
  7. add cx,dx
  8. adc ax,bx
  9. mov res,cx
  10. mov res[2],ax
  11. ; или с оптимизацией
  12. mov ax,Ah16
  13. mov bx,Al16
  14. add bx,Bl16
  15. adc ax,Bh16
  16. mov res,bx
  17. mov res[2],ax



вычитание
code text
  1. res=A32 - B32 = (Ah16*2^16 - Bh16*2^16) + (Al16 - Bl16) = (Ah16 1 Bh16)*2^16 + (Al16 - Bl16)
  2. ; в лоб
  3. mov ax,Ah16
  4. mov bx,Bh16
  5. mov cx,Al16
  6. mov dx,Bl16
  7. sub cx,dx
  8. sbc ax,bx
  9. mov res,cx
  10. mov res[2],ax
  11. ; или с оптимизацией
  12. mov ax,Ah16
  13. mov bx,Al16
  14. sub bx,Bl16
  15. sbc ax,Bh16
  16. mov res,bx
  17. mov res[2],ax


умножение
code text
  1. res64 = A32 * B32 = (Ah16 * 2^16 + Al16)  * (Bh16 * 2^16 + Bl16) = Ah16*Bh16*2^32 + Ah16*Bl16*2^16  + Al16*Bh16*2^16 + Al16*Bl16
  2. xxxx xxxx  xxxx xxxx  xxxx xxxx  xxxx xxxx  0000 0000  0000 0000  0000 0000  0000 0000 -- Ah16*Bh16*2^32
  3. 0000 0000  0000 0000  xxxx xxxx  xxxx xxxx  xxxx xxxx  xxxx xxxx  0000 0000  0000 0000 -- Ah16*Bl16*2^16
  4. 0000 0000  0000 0000  xxxx xxxx  xxxx xxxx  xxxx xxxx  xxxx xxxx  0000 0000  0000 0000 -- Al16*Bh16*2^16
  5. 0000 0000  0000 0000  0000 0000  0000 0000  xxxx xxxx  xxxx xxxx  xxxx xxxx  xxxx xxxx -- Al16*Bl16
  6.  
  7. ; Al16*Bl16
  8. mov ax,Al16
  9. mul Bl16
  10. mov res,ax
  11. mov res[2],dx
  12. ; Al16*Bh16*2^16
  13. mov ax,Al16
  14. mul Bh16
  15. add res[2],ax
  16. adc res[4],dx
  17. adc res[6],0
  18. ; Ah16*Bl16*2^16
  19. mov ax,Ah16
  20. mul Bl16
  21. add res[2],ax
  22. adc res[4],dx
  23. adc res[6],0
  24. ; Ah16*Bh16*2^32
  25. mov ax,Ah16
  26. mul Bh16
  27. add bx,Bl16
  28. adc ax,Bh16
  29. add res[4],ax
  30. adc res[6],dx
 3.6.113.6.11
1 2 3 4 5

в начало страницы | новое
 
Поиск
Настройки
Твиттер сайта
Статистика
Рейтинг@Mail.ru