Тема: Молодые языки. Куда катится программирование?

Ответить в теме
Страница 3 из 6 ПерваяПервая 1 2 3 4 5 ... ПоследняяПоследняя
Показано с 41 по 60 из 107
  1. Вверх #41
    Частый гость Аватар для homo ludens
    Пол
    Мужской
    Сообщений
    751
    Репутация
    141
    Цитата Сообщение от Strannik-au Посмотреть сообщение
    если вы внимательно почитаете спецификацию, то увидите что он не прибавляет, а берет следующий по размеру шрифт (кстати тэг FONT является устаревшим и включен только для обратной совместимости)
    А что есть разница между прибавлением единицы и взятием следующего?

    HTML-процессор при разборе данного фрагмента кода действует примерно так:
    Код:
    ;	<font size=1>
    push current_font_size             
    current_font_size=1
    ;	<font size=+1>
    push current_font_size             
    current_font_size+=1			// вычисление происходит здесь
    ; длинный текст который я не хочу повторять
    dispay 'длинный текст который я не хочу повторять' with font fonttable[current_font_size]
    ;</font>
    pop current_font_size
    ;</font>
    pop current_font_size
    Вычисление 1+1 происходит в этом коде происходит. Задача решена.

    По поводу deprecated - так я специально уточнил версию.

    This specification defines the HyperText Markup Language (HTML), the publishing language of the World Wide Web.
    Ага, особенно когда media descriptor установлен в aural.
    Кстати postscript - тоже publishing language, но при этом его вычислительная мощность полностью эквивалентна машине Тьюринга.

    Цитата Сообщение от Kirax Посмотреть сообщение
    По-моему ты путаешь язык и грамматику. Язык это не только грамматика, но и семантика элементов и их комбинаций.
    Блин ну два поста выше писал уже с примерами.

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

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

    Есть вариант называть языком программирования только язык, обладающий достаточной вычислительной мощностью, но там возникает куча других проблем.
    The future is already here - it is just unevenly distributed. (c) W. Gibson


  2. Вверх #42
    User banned
    Пол
    Мужской
    Адрес
    Brisbane
    Сообщений
    2,083
    Репутация
    401
    Цитата Сообщение от homo ludens Посмотреть сообщение
    Семантика языка определяется только программой-обработчиком. Когда видишь умную книжку "Стандарт языка С" то надо понимать, что это стандарт не столько языка, сколько компилятора.
    Контрипример - для редактора с ситнаксической подсветкой или для статического чекера - язык остается языком С, а вот семантика меняется полностью.
    С таким же успехом любую инструкцию написанную на бумаге можно назвать программой, а язык на котором она написана - языком програмирования. Причем кстати намного более мощным по своей функциональности чем языки для компьютерных программ.

    Например рецепт приготовления яишницы, является программой для повара.

  3. Вверх #43
    Частый гость Аватар для homo ludens
    Пол
    Мужской
    Сообщений
    751
    Репутация
    141
    Цитата Сообщение от Strannik-au Посмотреть сообщение
    С таким же успехом любую инструкцию написанную на бумаге можно назвать программой, а язык на котором она написана - языком програмирования. Причем кстати намного более мощным по своей функциональности чем языки для компьютерных программ.

    Например рецепт приготовления яишницы, является программой для повара.
    В принципе да, ведь повар может быть микропроцессором микроволновки.
    И в этом случае рецепт - это точно программа.

    Определяющим здесь является комбинация рецепта и повара.
    Как модно сейчас говорить "отделяем представление от реализации".
    The future is already here - it is just unevenly distributed. (c) W. Gibson

  4. Вверх #44
    Не покидает форум
    Пол
    Мужской
    Адрес
    Odesa, UA
    Сообщений
    9,728
    Репутация
    2777
    Цитата Сообщение от homo ludens Посмотреть сообщение
    Кстати postscript - тоже publishing language, но при этом его вычислительная мощность полностью эквивалентна машине Тьюринга.
    Правильно, потому что это язык программирования который используется для формирования страниц.

    Цитата Сообщение от homo ludens Посмотреть сообщение
    Семантика языка определяется только программой-обработчиком. Когда видишь умную книжку "Стандарт языка С" то надо понимать, что это стандарт не столько языка, сколько компилятора.
    Компилятор состоит не только из синтаксического анализатора. В "стандарте языка C" важно не только как записываются конструкции, но и что они означают и как выполняются.

    Цитата Сообщение от homo ludens Посмотреть сообщение
    Контрипример - для редактора с ситнаксической подсветкой или для статического чекера - язык остается языком С, а вот семантика меняется полностью.
    Не совсем так. Определение языка включает такие семантические вещи как например тип переменной или область видимости, о которых редактор или чекер не имеют понятия. То есть с их помощью легко создать "программу на языке С" которая не будет исполняться.
    ____________

  5. Вверх #45
    Частый гость Аватар для homo ludens
    Пол
    Мужской
    Сообщений
    751
    Репутация
    141
    Цитата Сообщение от Kirax Посмотреть сообщение
    Правильно, потому что это язык программирования который используется для формирования страниц.
    И который кроме вычислительной полноты от HTML принципиально ничем не отличается. Более того, если в HTML добавить предусмотренные стандартом скрипты, то отличий вообще не будет.

    Цитата Сообщение от Kirax Посмотреть сообщение
    Компилятор состоит не только из синтаксического анализатора. В "стандарте языка C" важно не только как записываются конструкции, но и что они означают и как выполняются.
    Цитата Сообщение от Kirax Посмотреть сообщение
    Определение языка включает такие семантические вещи как например тип переменной или область видимости, о которых редактор или чекер не имеют понятия. То есть с их помощью легко создать "программу на языке С" которая не будет исполняться.
    Ты привязываешся к компилятору, он для тебя - полное определение языка. Это вполне логично.
    А я беру в качестве точки отсчета сам язык - мне на практике приходится с этим работать у меня в задачах такие вещи встречаются.

    И вот тут возникают некоторые нюансы.

    Действительно C-код
    Код:
    int foo(void)
    {
      return x=y+z;
    }
    синтаксически правилен, но неверен семантически, если переменные x,y,z не определены.
    И в этом случае разработчик компилятора (или любой программы, которая принимает на вход исходник) лезет в стандарт.
    Однако это не единственный способ определить язык.
    Дело в том, что теоретически можно эти ограничения забить в синтаксис, если перейти к контекстно-свободным грамматикам. Более того, можно весь стандарт языка перевести таким образом в атрибутированную CFG.
    Опять таки, это чисто теоретически.
    Но если такой перенос осуществить правильно, то мы сможем четко разделить семантику и синтаксис, что при использовании печатного стандарта невозможно.

    В строчке атрибутированной грамматики типа
    expr : expr "+" expr { return input[0]+input[2];}

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

    Все это чисто теоретически, так как для реальных языков такой подход крайне непрактичен.
    Однако из такого результата получается, что вопрос об степени вычислительной полноты языка и о том насколько он является "языком программирования" относится только к семантической части, но никак не к синтаксису.
    Т.е. формально вопрос "является ли HTML языком программирования" некорректен. Правильно спрашивать - насколько данная семантика (т.е. набор атрибутов для ACFG) обладает вычислительной полнотой.
    The future is already here - it is just unevenly distributed. (c) W. Gibson

  6. Вверх #46
    Не покидает форум
    Пол
    Мужской
    Адрес
    Odesa, UA
    Сообщений
    9,728
    Репутация
    2777
    Цитата Сообщение от homo ludens Посмотреть сообщение
    И который кроме вычислительной полноты от HTML принципиально ничем не отличается.
    Отличается принципиально тем что в HTML нет команд, HTML не говорит броузеру что ему делать, а задает семантическую структуру документа. Броузер сам решат что делать с документом. Можно сделать броузер который будет показывать только текст со страниц, или например только заголовки отсортированые по алфавиту.

    В противоположность в postscript - линейная последовательность команд, которая не задает структуру документа и не определяет семантику, а просто последовательно выполняется. Из нее нельзя в общем случае сделать DOM дерево.

    Цитата Сообщение от homo ludens Посмотреть сообщение
    Более того, если в HTML добавить предусмотренные стандартом скрипты, то отличий вообще не будет.
    Да, потому что скрипт пишется на языке программирования.

    Цитата Сообщение от homo ludens Посмотреть сообщение
    Ты привязываешся к компилятору, он для тебя - полное определение языка. Это вполне логично.
    Вообще-то наоборот, компилятор создается на основе определения языка.

    Цитата Сообщение от homo ludens Посмотреть сообщение
    Меняя семантику при фиксированном синтаксисе можно получать совершенно разные обработчики одного и того же языка.
    Одной и той же _грамматики_, а не языка. Это не одно и то же. Язык включает в себя семантику. В общем случае язык это средство передачи информации с помощью условных обозначений. Если ты не знаешь семантику этих обозначений, то языка нет, есть только сами знаки, те грамматика.
    Последний раз редактировалось Kirax; 03.03.2008 в 13:00.
    ____________

  7. Вверх #47
    Частый гость Аватар для homo ludens
    Пол
    Мужской
    Сообщений
    751
    Репутация
    141
    Цитата Сообщение от Kirax Посмотреть сообщение
    Одной и той же _грамматики_, а не языка. Это не одно и то же. Язык включает в себя семантику. В общем случае язык это средство передачи информации с помощью условных обозначений. Если ты не знаешь семантику этих обозначений, то языка нет, есть только сами знаки, те грамматика.
    Мы ведь говорим о формальных языках, не так ли?
    А для них есть четкое математическое определение - как множества строк некоторого алфавита.
    И никакой семантики.

    Пусть E - некоторый алфавит, обозначим через E* множество определенных над этим алфавитом строк.
    Формальным языком L над алфавитом E называется произвольное подмножество E*
    (с) Теория формальных языков. Дж. Рейуорд-Смит
    The future is already here - it is just unevenly distributed. (c) W. Gibson

  8. Вверх #48
    User banned
    Пол
    Мужской
    Адрес
    Brisbane
    Сообщений
    2,083
    Репутация
    401
    Цитата Сообщение от homo ludens Посмотреть сообщение
    А что есть разница между прибавлением единицы и взятием следующего?
    кстати да, есть
    при прибавлении единицы вы складываете два числа и получаете результат число

    при взятии следующего вы берет следующий элемент массива.
    в зависимости от реализации там не обязательно будет присутствовать операция сложения

  9. Вверх #49
    Частый гость Аватар для homo ludens
    Пол
    Мужской
    Сообщений
    751
    Репутация
    141
    Вдогонку
    Цитата Сообщение от Kirax Посмотреть сообщение
    Отличается принципиально тем что в HTML нет команд, HTML не говорит броузеру что ему делать, а задает семантическую структуру документа. Броузер сам решат что делать с документом. Можно сделать броузер который будет показывать только текст со страниц, или например только заголовки отсортированые по алфавиту.
    Все это верно и для PROLOG и для make. Вообще для любого декларативного языка программирования.
    The future is already here - it is just unevenly distributed. (c) W. Gibson

  10. Вверх #50
    Частый гость Аватар для homo ludens
    Пол
    Мужской
    Сообщений
    751
    Репутация
    141
    Цитата Сообщение от Strannik-au Посмотреть сообщение
    кстати да, есть
    при прибавлении единицы вы складываете два числа и получаете результат число

    при взятии следующего вы берет следующий элемент массива.
    в зависимости от реализации там не обязательно будет присутствовать операция сложения
    Ну, на практике инкрементом такое не всегда решается. Хотя да, возможно.
    Однако это проблема постановки задачи.
    2+2 вычислится точно так же.
    The future is already here - it is just unevenly distributed. (c) W. Gibson

  11. Вверх #51
    User banned
    Пол
    Мужской
    Адрес
    Brisbane
    Сообщений
    2,083
    Репутация
    401
    Цитата Сообщение от homo ludens Посмотреть сообщение
    Ну, на практике инкрементом такое не всегда решается. Хотя да, возможно.
    Однако это проблема постановки задачи.
    2+2 вычислится точно так же.
    а как насчет 4+4?

  12. Вверх #52
    Частый гость Аватар для homo ludens
    Пол
    Мужской
    Сообщений
    751
    Репутация
    141
    Цитата Сообщение от Strannik-au Посмотреть сообщение
    а как насчет 4+4?
    Шрифтами уже не получится. HTML - 3х битный процессор.

    Зато можно поиграться с размерами.

    Блин, если получится вывернуть HTML как в свое время вывернули темплейты С++ и создать достаточно полный язык - это сколько ж вирусов написать можно!
    The future is already here - it is just unevenly distributed. (c) W. Gibson

  13. Вверх #53
    Не покидает форум
    Пол
    Мужской
    Адрес
    Odesa, UA
    Сообщений
    9,728
    Репутация
    2777
    Цитата Сообщение от homo ludens Посмотреть сообщение
    Мы ведь говорим о формальных языках, не так ли?
    Вообще-то мы говорим о языках программирования, это языки для написания программ, то есть последовательностей команд. Это не то же самое что "формальный язык".
    ____________

  14. Вверх #54
    Не покидает форум
    Пол
    Мужской
    Адрес
    Odesa, UA
    Сообщений
    9,728
    Репутация
    2777
    Цитата Сообщение от homo ludens Посмотреть сообщение
    Все это верно и для PROLOG и для make. Вообще для любого декларативного языка программирования.
    С каких пор компилятор пролога имеет какую-то степень свободы не гарантирующую конечный результат? Всё задает программист.

    Вообще тут вопрос в отличие программ и данных. HTML, XML, *ML - это данные, записанные с помощью определенного синтаксиса. Как именно их обрабатывать - дело броузера или там XSLT-процессора. Абсолютно никаких гарантий того как они будут обработаны не дается.

    Да, в архитектуре фон-Неймана нет формального отличия между данными и программами, это всё байты. Но это не значит что такого отличия нет на самом деле.
    Последний раз редактировалось Kirax; 03.03.2008 в 16:10.
    ____________

  15. Вверх #55
    Частый гость Аватар для homo ludens
    Пол
    Мужской
    Сообщений
    751
    Репутация
    141
    Цитата Сообщение от Kirax Посмотреть сообщение
    Вообще-то мы говорим о языках программирования, это языки для написания программ, то есть последовательностей команд. Это не то же самое что "формальный язык".
    Тогда мы кроме тавтологии ничего не получим.
    Есть конечно неформальные соглашения типа "язык программирования - это язык на котором программируют". Но для практической работы это малополезно.
    А если надо формальное определение, то без математики не обойтись.
    Кстати раньше сами разработчики языков оперировали терминологией математики. Сейчас не знаю, сегодня инфа от разработчика - это голая идиотская реклама без какого-то смысла.

    Цитата Сообщение от Kirax Посмотреть сообщение
    С каких пор компилятор пролога имеет какую-то степень свободы не гарантирующую конечный результат? Всё задает программист.
    Хм, вообще-то интерпретатор Пролога (изначально это интерпретируемый язык) как раз и был придуман для того, чтобы говоря компьютеру "что" надо сделать, ни в коем случае не сказать ему "как" это делать надо.
    Другой вопрос что в ходе развития к нему приделали кучу "удобств" для традиционщиков, в результате чего получились "откаты", функции со сторонними эффектами и т.п.
    Ну, хотели как лучше, получилось как всегда.
    Но вот такой язык как Datalog - полностью декларативен и у программиста нет возможности повлиять на процесс вычислений - он может только поставить список задач.
    Другой пример - сложный SQL select требует инфу о том что надо сделать но не дает никакой возможности определить как он будет выполняться.
    Если не использовать специальные неперносимые фичи, предназначенные для оптимизации запроса.

    Цитата Сообщение от Kirax Посмотреть сообщение
    Вообще тут вопрос в отличие программ и данных. HTML, XML, *ML - это данные, записанные с помощью определенного синтаксиса. Как именно их обрабатывать - дело броузера или там XSLT-процессора. Абсолютно никаких гарантий того как они будут обработаны не дается.

    Да, в архитектуре фон-Неймана нет формального отличия между данными и программами, это всё байты. Но это не значит что такого отличия нет на самом деле.
    Опять таки, при попытке формализации выясняется, что проще про эту разницу забыть, т.е. сказать, что она определяется только семантической частью. Исходник - это ведь не код, это именно данные для компилятора. Но мы называем его программой - по привычке. Программисты говорят что пишут программы - но на самом деле они набирают данные, которые затем скармливают программам по переводу данных в программы.
    The future is already here - it is just unevenly distributed. (c) W. Gibson

  16. Вверх #56
    User banned
    Пол
    Мужской
    Адрес
    Brisbane
    Сообщений
    2,083
    Репутация
    401
    Цитата Сообщение от homo ludens Посмотреть сообщение
    Опять таки, при попытке формализации выясняется, что проще про эту разницу забыть, т.е. сказать, что она определяется только семантической частью. Исходник - это ведь не код, это именно данные для компилятора. Но мы называем его программой - по привычке. Программисты говорят что пишут программы - но на самом деле они набирают данные, которые затем скармливают программам по переводу данных в программы.
    т.е в итоге мы пришли к тому что если вы не пишете код в шестнадцатиричной системе - то вы не програмист, а простой оператор ПК?

  17. Вверх #57
    Не покидает форум
    Пол
    Мужской
    Адрес
    Odesa, UA
    Сообщений
    9,728
    Репутация
    2777
    Цитата Сообщение от homo ludens Посмотреть сообщение
    Тогда мы кроме тавтологии ничего не получим.
    Есть конечно неформальные соглашения типа "язык программирования - это язык на котором программируют". Но для практической работы это малополезно.
    А если надо формальное определение, то без математики не обойтись.
    Если такое определение и есть, то оно явно касается того как этот язык обрабатывается, а не его синтаксиса.

    Цитата Сообщение от homo ludens Посмотреть сообщение
    Хм, вообще-то интерпретатор Пролога (изначально это интерпретируемый язык) как раз и был придуман для того, чтобы говоря компьютеру "что" надо сделать, ни в коем случае не сказать ему "как" это делать надо.
    Вот и я о том же - ты четко указываешь компьютеру что тебе нужно и именно это и получаешь. В случае с HTML у тебя нет такой возможности, т.к. каждый его обрабатывает как хочет.

    Цитата Сообщение от homo ludens Посмотреть сообщение
    Опять таки, при попытке формализации выясняется, что проще про эту разницу забыть, т.е. сказать, что она определяется только семантической частью.
    Формально и бинарник - байты и текст - байты. Но забывать между ними разницу я бы не советовал.

    Цитата Сообщение от homo ludens Посмотреть сообщение
    Исходник - это ведь не код, это именно данные для компилятора. Но мы называем его программой - по привычке. Программисты говорят что пишут программы - но на самом деле они набирают данные, которые затем скармливают программам по переводу данных в программы.
    Вобщем я так понял что когда ты написал "XrML - будущее программирования", то совсем не имел в виду что XrML это язык программирования, а что это просто формальный язык, который куда-то скармливается, так?
    ____________

  18. Вверх #58
    Частый гость Аватар для homo ludens
    Пол
    Мужской
    Сообщений
    751
    Репутация
    141
    Цитата Сообщение от Strannik-au Посмотреть сообщение
    т.е в итоге мы пришли к тому что если вы не пишете код в шестнадцатиричной системе - то вы не програмист, а простой оператор ПК?

    Не поверишь - даже в этом случае программирования не получится. Потому что трансляцию с hex-кода записанного в ascii тоже придется проводить программе. И даже если ты силой мысли загонишь этот код в память компу - все рано каждую инструкцию процессор использует как данные для микропрограммы.
    Увы. Программистов не бывает. : -)

    Цитата Сообщение от Kirax Посмотреть сообщение
    Если такое определение и есть, то оно явно касается того как этот язык обрабатывается, а не его синтаксиса.
    Есть и я его привел.

    Цитата Сообщение от Kirax Посмотреть сообщение
    Вот и я о том же - ты четко указываешь компьютеру что тебе нужно и именно это и получаешь. В случае с HTML у тебя нет такой возможности, т.к. каждый его обрабатывает как хочет.
    Ты путаешь результат обработки и инструкции к процессу обработки.
    Контрпример - на разных системах но одной и той же базе данных один select* from data может дать разные результаты - каждая база по своему выстроит порядок данных.
    Но это никому не мешает писать на SQL.

    Цитата Сообщение от Kirax Посмотреть сообщение
    Формально и бинарник - байты и текст - байты. Но забывать между ними разницу я бы не советовал.
    Приведи формальный алгоритм, который отличит их друг от друга.

    Цитата Сообщение от Kirax Посмотреть сообщение
    Вобщем я так понял что когда ты написал "XrML - будущее программирования", то совсем не имел в виду что XrML это язык программирования, а что это просто формальный язык, который куда-то скармливается, так?
    Ага.
    Просто в отличие от тебя я не вижу разницы.
    Честно.
    : -)
    The future is already here - it is just unevenly distributed. (c) W. Gibson

  19. Вверх #59
    Новичок
    Пол
    Мужской
    Адрес
    Одесса
    Сообщений
    35
    Репутация
    14
    Что касается молодых\новых языков программирования, то хорошее поле для деятельность в мире Java и .Net.
    Например тот же Groovy (упомянутый). С одной стороны у тебя есть всё что есть в Java, а с другой + различные синтаксические трюки, реализован функционал, который только стоит на расмотрении в стандарт Java (например fields с getter и setter как в C#) ...
    В итоге код на Groovy компилируется в JVM-ские .class файлы (но !!! с зависимостью от groovy.lang.GroovyObject).

    Тоже самое в среде .NET, языки базируется на CLR и берут от него основу и реализуют различный синтаксический функционал. Примером наверное может послужить R# (rsdn.ru)

    Благодоря использованию такой runtime среды как .Net или Java разработка компиляторов значительно упростилась, и новые языки как грибы после дождя повыростали.
    Но пока никто из них перетянуть одеяло в свою сторону не может.

  20. Вверх #60
    Не покидает форум
    Пол
    Мужской
    Адрес
    Odesa, UA
    Сообщений
    9,728
    Репутация
    2777
    Цитата Сообщение от homo ludens Посмотреть сообщение
    Увы. Программистов не бывает. : -)
    Так и думал что всё сведется к демагогии...

    Цитата Сообщение от homo ludens Посмотреть сообщение
    Ты путаешь результат обработки и инструкции к процессу обработки.
    Я-то как раз ничего не путаю. HTML сам по себе не имеет никакого "результата" вообще (не говоря уже об инструкциях).

    Цитата Сообщение от homo ludens Посмотреть сообщение
    Контрпример - на разных системах но одной и той же базе данных один select* from data может дать разные результаты - каждая база по своему выстроит порядок данных.
    Так а ты и не требовал порядок, просто данные. И каждая база выдаст одни и те же данные.

    Цитата Сообщение от homo ludens Посмотреть сообщение
    Ага.
    Просто в отличие от тебя я не вижу разницы.
    Честно.
    : -)
    Ну и ладно, я не настаиваю.
    ____________


Ответить в теме
Страница 3 из 6 ПерваяПервая 1 2 3 4 5 ... ПоследняяПоследняя

Социальные закладки

Социальные закладки

Ваши права

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