00:36

Dancing On The Moonlight. Waiting 4the Sunrise
Приведите мне примеры языков сверхвысокого уровня, а то я что то слабо представляю себе, что сие такое.

Комментарии
12.11.2004 в 02:53

Sky Cry

Javasсript'ом не владею, так что понятия не имею, что там за программа.

Программа - самый элементарный калькулятор. :) Правильнее сказать - я её писал имея ввиду это применение.

Можешь скопировать текст в блокнот, сохранить с расширением .htm и открыть проводником.

1 строка: присваиает переменной expr введённое ползователем занчение

3 строка: выдаёт таббличку с результатом высислений.

А вот вторая строка делает интересную штуку.

Для начала создаётся строка (данные) 'var res = ' и к ней добавляется то, что ввеёл пользователь в 1-й строке.

А затем эти данные передаются интерпретатору как программа, которая приваеивает переменной res результат вычисления введённого пользователем выражения.



если там что-то происходит, то оно происходит с чем-то - то есть с какими-то конкретными данными

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



В простейшем варианте пользователь введёт 2+2 и программа действительно будет калькулятором.



Но найдется умный юзер, который напишет: 'Hello '+ prompt('Name:','')

Что при этом получится ты можешь определить опытным путём.



И программа станет работать абсолютно по другому.

Да, у неё останется первый вопрос. И может быть (но далеко не факт), она дойдет до 3-й строки и выдаст табличку с результатом.



можно философствовать долго и упорно, а мне лень.

А лень, между прочим, двигатель прогресса... :) Впрочем, не хочется - никто и не заставляет.
12.11.2004 в 14:20

Компилятор тоже является программой, при этом он на входе получает другую программу.



Твой пример очень подобен этому. Алгоритм прост: а) получить программу, б) выполнить программу, в) показать результат. Данные ты получаешь от пользователя, причём хранишь в переменной expr. Вот и всё. А в чём вопрос собственно?
22.11.2004 в 03:14

Think! Think different! Think Java!
pash_ka

Твой набор определений - не полный.

Что такое алгоритм? Чем он отличается от данных, и почему структуры вынесенны отдельно? Прежде чем оценивать твою систему определений хотелось-бы взглянуть на неё целиком.


алгоритм!=программа :)

Программа = алгоритм+структура данных

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

Программа - по любому сначала структура данных:)

HTML - алгоритм редеринга браузером картинки:)

А так же структура данных, алгоритм , завист от контекста и интерТрепации:)

Но главное, что бы пиво свежее, без этого никуда!
23.11.2004 в 00:03

repository

Программа = алгоритм+структура данных

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


Я повторяю свой вопрос:

1) Что такое "алгоритм"?

2) Что такое "структура данных"?

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



Только когда я получу исчерпывающие определения этих понятий я смогу аргументированно тебе ответить. И признать или не признать твоё определение слова "программа".



Да, а HTML всё-таки принято считать языком гипертектстовой разметки документа, а не языком программирования.
23.11.2004 в 00:18

Think! Think different! Think Java!
pash_ka

1) Точного определения алгоритма не существует. Обычно под алгоритмом понимают набор правил, определяющих процесс преобразования исходных данных задачи в искомый результат.

2) Исходные данные (структура данных) это "информация" приведеная к виду, удовлетворяющему алгоритм.



Определять "информацию" надо?
23.11.2004 в 09:19

repository

Определять "информацию" надо?

В идеале - конечно да, но тут я пожалуй обойдусь. :)



Точного определения алгоритма не существует.

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

С чего, собственно, и начался спор.



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

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

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

Конечно, это всего лишь моё imho, и формально принять твое определение можно.



Однако, хорошим назвать можно лишь то определение, которое позволяет отделить то, что оно определяет от всего остального.



И если следовать твоему утверждению

Алгоритм может быть структурой данных,

и приведённым определениям, то HTML, к примеру, можно считать программой.

И текстовый файл тоже. И вообще всё что угодно.

(Только языки программирования у этих алгоритмов специфичные очень.

А проги что с ним работают - интерпретаторы этих языков.)



Imho, такое определение не имеет практической ценности.
23.11.2004 в 10:22

Think! Think different! Think Java!
pash_ka

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

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

Можно




программы != алгоритм:) По этому куда они ушли алгоритму пофигу:)

Да и относительно все, пули тоже кажется, что она прямолинейно летит. А со стороны - нифига.





И если следовать твоему утверждению

Алгоритм может быть структурой данных,

и приведённым определениям, то HTML, к примеру, можно считать программой.

И текстовый файл тоже. И вообще всё что угодно.




Вот вот, я к этому и клонил :)

Все относительно:) можно не брать HTML, раз так коробит, можно взять PHP:)

Или Ant build.xml, или вот *.class явский. *.JPG - файл алгоритма рисования порнушки:)



Но даже если это покажется надуманным:

все под процом будем:) Как бы не рассуждали об объектах и пр. материи -

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





доброго утра, кстати:)
23.11.2004 в 11:21

Think! Think different! Think Java!
Эх, ещё есть волшебная тема: определение "информации"

:)
23.11.2004 в 12:09

Fire in a hole!
repository информация есть всё, отличное от энтропии))))) только не проси определения, что есть энтропия)) умом понимаю, словами не скажу
23.11.2004 в 12:12

Think! Think different! Think Java!
Neiru Хаос?:) Вообще считается, что хаос - это неструктурированая информация:)



(Я вот одно зачупастое определение знаю, но пока не скажу:))
23.11.2004 в 12:26

Fire in a hole!
repository так то считается =)) А что он такое, хрен бы кто знал ;-)
23.11.2004 в 12:31

Think! Think different! Think Java!
Neiru Кстати замечательный тост!:)))
23.11.2004 в 12:34

Fire in a hole!
:)))
25.12.2004 в 22:02

А какое вообще определение(теоретическое) у языка сверхвысокого уровня?

А то под эту марку можно и приплести GPSS PC - язык для моделирования систем массового обслуживания
26.12.2004 в 11:54

Hup

Я конечно точное определение не скажу, но по моему дело обстоти таким образом:



языки низкого уровня - машинно-зависимые языки, команды которых имеют однозначное соответствие командам машины, для которой пишется программа



языки высокого уровня - языки, в коснову которых положена логическая структура программы, а не набор комманд конкретной аппаратуры



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

2 pash_ka

= В неие доисторические времена вычислительные машины имели раздельную

= память для программ и для данных. Но то когда было...



Да прям щас! Это называется Гарвардская архитектура, и используется очень широко, но не в обычных компах, а микроконтроллерах (это посути комп в одной микросхеме, на них построены мобилники, промышленные роботы итд)

***



=Теперь память общая, хранится в ней всё в перемешку, и процесс

=превращения данных в программы и обратно происходит в наших компах

=постоянно.

Нифига подобного!!! Память программы и память данных хоть и лежат в одном адресном пространстве, но никогда не перемешиваются (точнее могут, но это надо токо полиморфным вирусам для маскировки и еще для этого нужны привилегии нулевого кольца. Прогам работающим в Ring 3 (а это все,кроме драйверов и ядра ОС) Запрещено менять код! При попытке это сделать винда выгрузит прогу с ошибкой (вроде General Protection Fault)



Сам я к высоким языкам никакого отношения не имею, разве что plain С.

Моя стихия Assembler :) так что все это можно считать оффтопом :)

Assembler RULEZ 4EVER!!! AMIGA & Speccy RULEZZZ 4EVER!!!



0 0000 ORG 0000h

1 0000 F3 DI

2 0001 76 HALT

Assembly complete

0 Errors

1 Warning

30.12.2004 в 09:50

Гость

Спасибо за разъяснения! :)
31.12.2004 в 22:59

А по поводу сверх высокого уровня, то вроде есть такой язык :)

Зовется он то ли Лисп, не то Пролог, короче, там просто указываешь, что у тебя есть и что ты должен получить на выходе из проги. Т.е. мы задаем черный ящик. Компилятор САМ разработает алгоритм и реализует его в коде.

Все бы ничего, но эффективность ТАКОГО кода была....ээээ.....мягко говоря гавно! Комп все делал через задницу :) В итоге, этот язык почти забыт.

DI HALT



0 0000 ORG 0000h

1 0000 F3 DI

2 0001 76 HALT

Assembly complete

0 Errors

1 Warning



07.01.2005 в 23:37

Fixed.
Гость

Почти забыт, угу, как же.

Из УМЛа тоже код пытаются гнать. Самое весёлое, что выдают за новейшую идею, хотя ПРОЛОГу лет 20 минимум.

Только эффективность ниже плинтуса, само собой.

Для эффективного кода из УМЛа нужен настоящий ИИ, чего в обозримом будущем не предвидится.
07.01.2005 в 23:40

Для эффективного кода из УМЛа нужен настоящий ИИ, чего в обозримом будущем не предвидится.



Если будет такой ИИ, то программисты лишаться работы! :lol2:
07.01.2005 в 23:46

Fixed.
Sky Cry

А где гарантия, что этот ИИ не захочет денег? :)

Где-то читал анекдот в тему - "Очередной тест умного оружия провалился. Бомба с ИИ отказалась взрываться."
07.01.2005 в 23:56

*лишатся



гарантия - не давать ИИ возможности воспользоваться этими деньгами :tongue:
08.01.2005 в 13:01

А где гарантия, что этот ИИ не захочет денег?

А зачем ИИ наделять желаниями?

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

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

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





А генерация эффективного кода из UML-а... Мне кажется, это и не требуется. Оно делает шаблоны, показывfет структуру программы... А уж код методов - дело программистов. :)
09.01.2005 в 21:51

Fixed.
pash_ka

Генерить код, который при всей своей тормознутости, стабилен и безопасен - плюс. (Ещё факторы скорость и деньги играют роль)

Это точка зрения менеджера богатой фирмы, ибо тот считает, что современным машинам тормоза нипочём. Но эта позиция очень далека от реальности. Как и попытки "создать БИОС, программируемый на Си" (об этом я прочитал в одном журнале).

Кроме всего прочего, такой софт стоит очень немаленькие деньги.
10.01.2005 в 03:07

Генерить код, который при всей своей тормознутости, стабилен и безопасен - плюс.

Тормознутость и стабильность это почти противоположные вещи.

Когда комп надолго задумывается его перезагружают!!! А потом начинают пинать сисадмина, т.е. меня. Приходится обьяснять, что на П166 1С работает неееемного меделнно :). Так, что ассемблер рулез!



0 0000 ORG 0000h

1 0000 F3 DI

2 0001 76 HALT

Assembly complete

0 Errors

1 Warning
10.01.2005 в 04:48

Fire in a hole!
Гость

Тормознутость и стабильность это почти противоположные вещи

Я бы не был так категоричен. Доводилось видеть когда НЕтормознутость и НЕстабильность были синонимами.



на П166 1С работает неееемного меделнно

Есть такое понятие — «системные требования» :)
10.01.2005 в 11:38

Dimmy

Генерить код, который при всей своей тормознутости, стабилен и безопасен - плюс. (Ещё факторы скорость и деньги играют роль)

Вот насколько я понимаю, основная задача UML и редаткторов на его основе - проектирование. Нет никакого смысла (да и невозможно, по моему) писать на UML математические вычисления, анализ текста, или ещё чего-то подобное. Зато в том редакторе что я видел - было специльное окошко для ввода кода функции, описание котрой генерится на основе UML-диаграммы.



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



10.01.2005 в 21:04

Fixed.
Гость

Асм рулез, это понятно.

pash_ka

Мне о УМЛе говорили именно в контексте "мы на нём пишем что должно быть (проектируем), а CASE-tool нам из этого делает правильный и стабильный код, и не надо нафиг кодеров".

Про глюки я не говорил. Та же Ява, хоть и тормоз и жрёт память, крайне стабильна. Сгенерированный код должен быть безошибочен. Но сам подход "мы даём ему на почти человеческом языке ТЗ, а он всё делает без кодеров" мне неприятен.

Кроме всего прочего, генератор вряд ли знает, что иногда можно использовать, скажем, xor, shl, shr и lea не по назначению. И вот эти оптимизации - дело несуществующего ИИ.

И уж совсем невозможно написать относительно быструю ОС автоматом. ИМХО, конечно.
10.01.2005 в 21:30

Dimmy

Я тоже думаю, что те кто тебе это про UML говорил - не совсем разобрались в ситуации.

На выходе PowerDesigner-а действительно получается Java-код. Но как я и сказал, тект функций писать всё-таки приходится самому (не важно в PoweDesigner-е или в чём-то ещё потом).



А вот интрефейс автоматом сгенерировать можно. Да хоть на Visual Basic.

В смысле напихать в окошко кнопочек, текст-боксов, селектов и прочая.

А если юзать тулзу типа MS Access то можно даже в БД что-то такое писать, и вытягивать из неё...
10.01.2005 в 23:16

Fixed.
pash_ka

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

Но тенденции "убрать к чертям кодеров" есть, это факт. Причём, что самое смешное, уже лет 20.