Компьютерный форум
Правила
Вернуться   Компьютерный форум > Форум программистов > Языки программирования > Smalltalk
Перезагрузить страницу Замыкание в Смолтоке должно происходить на переменную
Ответ
 
Опции темы Опции просмотра
  (#16 (permalink)) Старый
Cornered_Rat Cornered_Rat вне форума
Member
 
Сообщений: 32
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 02.11.2009
По умолчанию 06.11.2009, 13:51

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

Ах, ну да, я забыл одну из важнейших особенностей программ на языках с "управляемым" кодом: "наплюй на производительность". Именно поэтому Смолток лишён груза проблем, связанных с реентабельностью библиотечных методов и синхронизацией параллельных ветвей. Единственной причиной использования параллельных ветвей выполнения кода является повышение производительности, и было бы глупо прилагать усилия к адаптации Смолтока для такого параллелизма, т.к. программа на Смолтоке едва ли сможет использовать больше 10-20% вычислительных возможностей каждого процессора. Кстати, как в Смолтоке насчёт ассемблерных вставок кода?
Ответить с цитированием
  (#17 (permalink)) Старый
HandleX HandleX вне форума
Member
 
Сообщений: 40
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 03.04.2007
По умолчанию 06.11.2009, 13:58

Цитата:
Никакие новые классы и методы не дадут использовать удобную стандартную запись математических выражений в языке, т.е., с приоритетом операций и аргументами в скобках, напр: 2*x+3*sin(y)-ln(10). Задачи с математическими формулами покрывают явно больше 0.1% решаемых проблем, так что насчёт 99.9% Вы, сказать помягче, лукавите.

И про байт-код: где бы о нём почитать? Хочу понять, из каких инструкций он состоит.
Вся математика реализована стандартными средствами через методы и посылку сообщений объектам: #+, #-, #* и т.п.
И вот, вводить дополнительные сложности в компилятор, делая одни сообщения приоритетнее других -- не Ъ. Зачем мне держать в голове лишние правила о приоритете, вместо одного "железного" правила: сообщения шлются объектам слева направо. Сообщения без параметров имеют наивысший приоритет. Всё.
Расставьте скобочки как вам надо, в формулах, и вуаля.
Прозрачности больше, неожиданного геморроя меньше.
Более того, разработчики смоллтока и так сжалились на "математиками", сделав для них исключение: сообщения #+ #- #< #> #<= #>= #= #~= #* #/ #\\ #// #== хоть и имеют один параметр, но не имеют двоеточия на конце, хотя по идее, должны бы. Так что "математики", радуйтесь :-)
Я, когда изучал Smalltalk, прочитав про синтаксис отправки сообщений с параметрами и без, был сперва смущён тем фактом, что арифм. операции ведут себя иначе. Думал, что это "операторы", или ещё какая-нить ересь, и вздохнул с облегчением, узнав что это -- нетипичные селекторы, но селекторы! Чему и обрадовался :-)

Про байт-код: эта штука зависит от реализации.
К примеру в Dolphin Smalltalk,можно, открыв Class Browser, выбрав там интересующий класс, увидеть список методов данного класса.
Потом нужно назать на кнопочку на тулбаре со знаком вопроса (Visual Object Finder). Среда перейдёт в режим выбора визуального объекта для просмотра. Твркнете мышой в интересующий метод. Возникнет Object Inspector по заинтересовавшему вас методу. Там выберите disassembly, и увидите байт-код метода.
Ответить с цитированием
  (#18 (permalink)) Старый
Eugene Beschastnov Eugene Beschastnov вне форума
Member
 
Сообщений: 43
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 07.03.2004
По умолчанию 06.11.2009, 15:15

Цитата:
Никакие новые классы и методы не дадут использовать удобную стандартную запись математических выражений в языке, т.е., с приоритетом операций и аргументами в скобках, напр: 2*x+3*sin(y)-ln(10). Задачи с математическими формулами покрывают явно больше 0.1% решаемых проблем, так что насчёт 99.9% Вы, сказать помягче, лукавите.
А в чём проблема написать (2 * x) + (3 * (y sin)) - (10 ln) ?

Приоритет математических операций, кстати, вполне можно ввести простым добавлением/изменением классов/методов. Где-то у меня валялись наработки на эту тему just for fun, если найду - на выходных напишу. Хотя, даже если не найду, то восстановить заново проблем не составит :-)
Ответить с цитированием
  (#19 (permalink)) Старый
Cornered_Rat Cornered_Rat вне форума
Member
 
Сообщений: 32
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 02.11.2009
По умолчанию 06.11.2009, 15:27

Цитата:
А в чём проблема написать (2 * x) + (3 * (y sin)) - (10 ln) ?
А в чём проблема почесать правой ногой за левым ухом?
Удобство кодинга и легкочитаемость программ идут лесом. Вот в чём проблема.
Ответить с цитированием
  (#20 (permalink)) Старый
HandleX HandleX вне форума
Member
 
Сообщений: 40
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 03.04.2007
По умолчанию 06.11.2009, 15:32

Цитата:
А в чём проблема почесать правой ногой за левым ухом?
Удобство кодинга и легкочитаемость программ идут лесом. Вот в чём проблема.
Формулы математические идут лесом, вот что. Нет в Смоллтоке функций, не будет ни операторов, ни параметров в скобках.
ln(10)? Спасибо, программируйте на фортране, он FORmula TRANslator.
Ответить с цитированием
Ads.
  (#21 (permalink)) Старый
Cornered_Rat Cornered_Rat вне форума
Member
 
Сообщений: 32
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 02.11.2009
По умолчанию 06.11.2009, 15:37

Цитата:
И вот, вводить дополнительные сложности в компилятор, делая одни сообщения приоритетнее других -- не Ъ
1) Что такое "Ъ" ?
2) Вы относитесь к редкому (возможно, исчезающему) виду "синтаксических диабетиков". А я люблю сахар, он делает работу программиста более приятной и код более понятным.
Ответить с цитированием
  (#22 (permalink)) Старый
HandleX HandleX вне форума
Member
 
Сообщений: 40
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 03.04.2007
По умолчанию 06.11.2009, 15:38

Цитата:
А в чём проблема написать (2 * x) + (3 * (y sin)) - (10 ln) ?
Кстати, поскольку сообщения без параметров имеют высший приоритет, некоторые скобочки не нужны, т.е. можно и так:
(2 * x) + (3 * y sin) - 10 ln
Ответить с цитированием
  (#23 (permalink)) Старый
Cornered_Rat Cornered_Rat вне форума
Member
 
Сообщений: 32
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 02.11.2009
По умолчанию 06.11.2009, 15:45

Цитата:
Формулы математические идут лесом, вот что. Нет в Смоллтоке функций, не будет ни операторов, ни параметров в скобках.
ln(10)? Спасибо, программируйте на фортране, он FORmula TRANslator.
Приглядитесь внимательнее и заметьте, что языки без правильной трансляции формул ужасно непопулярны. Думаете, это случайное совпадение?

Цитата:
(2 * x) + (3 * y sin) - 10 ln
Хрен редьки не слаще. Где легкочитаемость кода?
Ответить с цитированием
  (#24 (permalink)) Старый
HandleX HandleX вне форума
Member
 
Сообщений: 40
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 03.04.2007
По умолчанию 06.11.2009, 15:46

Цитата:
1) Что такое "Ъ" ?
2) Вы относитесь к редкому (возможно, исчезающему) виду "синтаксических диабетиков". А я люблю сахар, он делает работу программиста более приятной и код более понятным.
ТруЪ

Сахар любИте, никто не мешает. Но и (2 * x) + (3 * y sin) - 10 ln меня никак не напрягает и не коверкает парадигму и синтаксис смоллтока.
Ответить с цитированием
Ads
  (#25 (permalink)) Старый
HandleX HandleX вне форума
Member
 
Сообщений: 40
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 03.04.2007
По умолчанию 06.11.2009, 16:01

Цитата:
Приглядитесь внимательнее и заметьте, что языки без правильной трансляции формул ужасно непопулярны. Думаете, это случайное совпадение?
Хрен редьки не слаще. Где легкочитаемость кода?
"Легкочитаемость" штука субъективная.
А объективно я вот что скажу.
Формул в Smalltalk мало, а остального кода -- много. Разбирая Smalltalk код, вы моск заточите под быстрое выявление глазками объектов, параметров и "выкусывание" из кода селекторов сообщений. И после этого, встретив формулу, вам ненужно переключать моск на "формулу", это будет просто код, как и всё остальное. Не было лишнего переключения контекста у вас в мозгах, затратилось меньше энергии, и "сахара", который вы так любите, в крови осталось больше :-D Берегите себя и других.

А про попсу мне не надо рассказывать.
Найдите некоторое неприятие в следующем ряде: прекрасен Бах, прекрасен Моцарт, прекрасен Дима Билан.
Популярные решения не блещут совершенством.
Ответить с цитированием
  (#26 (permalink)) Старый
Cornered_Rat Cornered_Rat вне форума
Member
 
Сообщений: 32
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 02.11.2009
По умолчанию 06.11.2009, 16:15

Цитата:
Найдите некоторое неприятие в следующем ряде: прекрасен Бах, прекрасен Моцарт, прекрасен Дима Билан.
К сожалению, ни одного из них не слушал.
К тому же, восприятие музыки индивидуально, а вот культура математических записей нам всем привита одна и та же. Перепрививаться на другую запись формул - значит проиграть по количеству ошибок и по времени "расшифровки" человеком таких записей. Самая быстрая дорога - та, которую ты знаешь
Ответить с цитированием
  (#27 (permalink)) Старый
HandleX HandleX вне форума
Member
 
Сообщений: 40
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 03.04.2007
По умолчанию 06.11.2009, 16:29

Цитата:
Культура математических записей нам всем привита одна и та же.
А ещё у меня привита культура русского языка. Значит ли это, что таким должен быть паскаль:
ПРОГРАММА Привет
ИСПОЛЬЗУЕТ ВЫВОД
НАЧАЛО
ВывестиСтроку("Привет")
КОНЕЦ.

В общем, с формулами и функциональщиной иожно идти в фортран, идти в лисп, идти ещё куда-нибудь.
Ответить с цитированием
  (#28 (permalink)) Старый
Eugene Beschastnov Eugene Beschastnov вне форума
Member
 
Сообщений: 43
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 07.03.2004
По умолчанию 06.11.2009, 16:30

Хм, и в какой же культуре математических записей принято записывать синус и логарифм со скобочками?
Ответить с цитированием
  (#29 (permalink)) Старый
Eugene Beschastnov Eugene Beschastnov вне форума
Member
 
Сообщений: 43
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 07.03.2004
По умолчанию 06.11.2009, 16:31

Цитата:
Кстати, поскольку сообщения без параметров имеют высший приоритет, некоторые скобочки не нужны, т.е. можно и так:
(2 * x) + (3 * y sin) - 10 ln
Это понятно, я поставил скобки для простоты чтения новым человеком.
Ответить с цитированием
  (#30 (permalink)) Старый
HandleX HandleX вне форума
Member
 
Сообщений: 40
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 03.04.2007
По умолчанию 06.11.2009, 18:34

Цитата:
Ах, ну да, я забыл одну из важнейших особенностей программ на языках с "управляемым" кодом: "наплюй на производительность".
Уклон на машинную производительность может стать причиной больших проблем,
Кто-то из великих смоллтокеров сказал: Make it works. Make it true. Make it fast.
Сперва делается, чтобы работало. Потом -- чтобы это идеологически правильно работало. И только потом -- чтобы быстро.
И вот, чаще всего получается быстро уже на втором этапе, где "Make it true".
Смоллток не такая черепаха, как кажется. Арифметика, которую вы так любите, может поразить скоростью и удобством использования.
1024 factorial посчитайте в воркспейсе что ли.
Ну не предназначена это среда заниматься числодробительством. Для числодробилен используйте заточенные для этого инструменты. Пишите DLL на них, подключайте библиотеку к смоллтоку, и наслаждайтесь, практически все его реализации умеют дёргать внешние функции из них.
А вот если надо написать программу общего назначения, да пофичастее, Ъ энтерпрайзники берут какой-нить хвалёный фреймворк, например Qt, и пишут на нём приложение, например Skype. С++, красота! Кушает память как девочка конфетки. Запустишь его -- займёт памяти 40 мегабайт. Откроешь окно, потом закроешь -- памяти съело 60 метров, и назад системе не отдаёт -)) Внутри: объектная шина сообщений, type safe слоты сообщений, варианты (QVariant, что-то вроде OLEVariant в Windows), кросплатформенные виджеты. В общем, внутри там полный смоллток -))))) И этот слон шевелится медленно! И это именно тот случай, когда Страуструп говорил: "Smalltalk - лучший из всех существующих smalltalk-ов", т.е. он, фанат статики, призывал не тащить туда идиомы из динамических сред, однако не получается для серьёзных фреймворков/проектов!

Цитата:
Именно поэтому Смолток лишён груза проблем, связанных с реентабельностью библиотечных методов и синхронизацией параллельных ветвей. Единственной причиной использования параллельных ветвей выполнения кода является повышение производительности, и было бы глупо прилагать усилия к адаптации Смолтока для такого параллелизма, т.к. программа на Смолтоке едва ли сможет использовать больше 10-20%
вычислительных возможностей каждого процессора. Кстати, как в Смолтоке насчёт ассемблерных вставок кода?
Да почему лишён, внутри свои процессы, и есть свои объекты синхронизацим, те же мьютексы, семафоры. Ими объект может защищать изменение своего состояния при многопоточном доступе. Дедлоки при неумелом использовании, всё как у людей -))
Однако как бы это. Простота запуска и использования процессов там, где это надо.
К примеру (на Dolphin Smalltalk):
[10 timesRepeat: [Sound bell. Processor sleep: 1000]] fork
Посылка сообщения #fork объекту замыкания вовзратит новый объект работающего процесса. Он отработает, и став ненужным, будет скушан сборщиком мусора.
Который, кстати, тоже объект (класс MemoryManager), крутит свой поедательный цикл в отдельном процессе, и занимается своим делом достаточно незаметно.
Ответить с цитированием
Ответ

Опции темы
Опции просмотра

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

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Trackbacks are Вкл.
Pingbacks are Вкл.
Refbacks are Выкл.


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
так должно быть или нет???? Пархоменко Вадим Процессоры 3 01.09.2011 13:49
файлы или что должно находиться в папке aleks.tarasow Любые вопросы от новичков 3 04.08.2011 16:23
Здесь должно быть название темы! natalya00000 Любые вопросы от новичков 2 06.06.2011 16:39
Считается, что никакое число не должно начинаться с нуля dastM Lisp 6 24.02.2011 11:06
Реализация замыкание контекста на с++ denis120 С/С++ 15 17.01.2011 02:14
Объекто-ориентированный анализ с примерами на Смолтоке Вася Чайко Smalltalk 1 14.08.2008 15:05
Приер XML + XSL. Должно выводиться одно, выводистя другое oneword XML & WML 10 15.08.2007 16:16
Помогите найти ошибку(и) - говорят, что должно работать... wampu Prolog 7 02.08.2007 09:32
Есть число float a=0.01 как его умножить на 0,33% должно получиться 0,000033 freeway C++ Builder 8 23.05.2007 11:39
В edit1 набираю 123 нажимаю на кноку должно появится в label 321 как реализовать ROLF Delphi 5 19.10.2006 01:03
При выборе радио- кнопки должно выходить текст Mad_tea C++ Builder 7 06.07.2005 16:34



Powered by vBulletin® Version 3.8.7
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd.
Нardforum.ru - компьютерный форум и программирование, форум программистов