Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Общие вопросы по программированию, компьютерный форум
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 11.10.2009, 13:17   #11
Alex Cones
Trust no one.
Старожил
 
Аватар для Alex Cones
 
Регистрация: 07.04.2009
Сообщений: 6,526
По умолчанию

Имеется в виду по областям?
1) Математические фукции (аналоги power, и пр...)
2) "Рисовальные"
3) БДешные
4) 3Дешные...
SQUARY PROJECT - НАБОР БЕСПЛАТНЫХ ПРОГРАММ ДЛЯ РАБОЧЕГО СТОЛА.
МОЙ БЛОГ
GRAY FUR FRAMEWORK - УДОБНАЯ И БЫСТРАЯ РАЗРАБОТКА WINAPI ПРИЛОЖЕНИЙ
Alex Cones вне форума Ответить с цитированием
Старый 12.10.2009, 19:44   #12
Utkin
Старожил
 
Аватар для Utkin
 
Регистрация: 04.02.2009
Сообщений: 17,351
По умолчанию

Ну да, в общих чертах.
Маньяк-самоучка
Utkin появился в результате деления на нуль.
Осторожно! Альтернативная логика
Utkin вне форума Ответить с цитированием
Старый 13.10.2009, 11:45   #13
OCTAGRAM
Oldschool geek
Форумчанин
 
Аватар для OCTAGRAM
 
Регистрация: 09.03.2009
Сообщений: 611
По умолчанию

Цитата:
Сообщение от Utkin Посмотреть сообщение
1. Упор делается на строки.
По типу Icon?

Icon для тех, кто с ним не знаком, могу охарактеризовать как регулярные выражения, эволюционировавшие в язык программирования. Ключевая концепция языка — генераторы, то есть, выражения, которые могут вернуть несколько результатов в ходе бектрекинга. При этом удобно делать отсечения и разного рода проверки.

Вот, например, небольшой этюд на Icon:

Код:
#generate identifiers in string
procedure idents(s)
   local i, j, initIdChars, idChars
   initIdChars := &letters++’_’
   idChars := initIdChars++&digits
   i := 1
   while j := upto(initIdChars,s,i) &
      not any(idChars,s[j-1]) &
      k := many(idChars,s,j) do {
         suspend s[j:k]
         i:=k
      }
end
Обратите внимание на any(idChars,s[j-1]). Это нужно, чтобы в числовых литералах типа 16h буква h не засчитывалась за идентификатор. Самое прикольное здесь — это то, что эта штука может быть failed из–за двух причин: из–за того, что в позиции неидентификаторный символ, либо из–за того, что j = 1, и s[0] тоже даёт fail. not оба типа fail засчитает как succeed. За один приём учитываются сразу два border cases.

Искушённые в shell programming легко поймут, что значит выражение
Код:
x = 2 & y := 3
А значит оно
Код:
if x = 2 then y := 3
Применять амперсанд, например, можно так:

Код:
s ? {
   t := ="(" || (="abc" & "cde") || =")"
   # || — это конкатенация
}
Этот код, будучи применён к строке s = "(abc)", присвоит переменной t значение "(cde)".

А можно написать так:

Код:
s ? {
   t := ="(" || ((="abc" & "cde") | (="fgh" & "ijk")) || =")"
}
Это, помимо прежнего, заменит (fgh) на (ijk). Я, конечно, и похитрее финты ушами делаю. При этом мне кажется удобно, что я текстовые замены описываю на месте.

В Icon практически всё является выражениями. Выражением является if-then. Если выражение после if succeed, результатом if будет значение выражения после then, иначе — значение выражение после else. Если else нет, то if будет fail. Фигурные скобки позволяют писать в императивном стиле: { e1; e2; e3; ...; en}. К каждому выражению будет применена попытка посчитать его, но бектрекинг осуществляется только в пределах одного подвыражения. Например, если в мой пример дописать конкатенацию { ="xyz"; "" }, то это будет значить, если есть "xyz", то распознать её и продвинуть курсор дальше. А если этой строки нет, ну и пофиг. В конечный результат она в любом случае не попадает. Также, как и в C, результатом присваивания является присвоенное выражение, поэтому в цепочку конкатенаций распознаваний можно навесить присваивание:

Код:
s ? {
   t := ="(" || (((s2 := ="abc") & "cde") | ((s2 := ="fgh") & "ijk")) || s2 || =")"
}
Эта штука превратит (abc) в (cdeabc), а (ghf) — в (ijkghf).

Icon — язык весьма хакерский, и если нужно поработать с текстом, весьма полезный, было бы только время с ним разобраться. Я сейчас лабаю на нём кое–какой текстовый преобразователь, так что могу проконсультировать, правда, я в сети нечасто бываю.
If you want to get to the top, you have to start at the bottom

http://pascal.net.ru/
OCTAGRAM вне форума Ответить с цитированием
Старый 13.10.2009, 12:36   #14
JTG
я получил эту роль
Старожил
 
Аватар для JTG
 
Регистрация: 25.05.2007
Сообщений: 3,694
По умолчанию

Цитата:
& ... А значит оно then
|| — это конкатенация
Какой логичный синтаксис. Хотя чего ещё ждать от "регулярного выражения, эволюционировавшего в язык программирования"
пыщь
JTG вне форума Ответить с цитированием
Старый 13.10.2009, 13:10   #15
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
Utkin
вот тебе мой совет - сделай функцию, которой можно передавать в качестве строки имя API функции, и в динмассиве ее параметры, и пусть она вызывается - это как раз под стать интерпретатору.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 13.10.2009, 13:15   #16
Arigato
Высокая репутация
СуперМодератор
 
Аватар для Arigato
 
Регистрация: 27.07.2008
Сообщений: 15,551
По умолчанию

OCTAGRAM
Ужасный язык. Додуматься до такого синтаксиса, что даже Perl отдыхает...
Arigato вне форума Ответить с цитированием
Старый 13.10.2009, 13:19   #17
Utkin
Старожил
 
Аватар для Utkin
 
Регистрация: 04.02.2009
Сообщений: 17,351
По умолчанию

Цитата:
вот тебе мой совет - сделай функцию, которой можно передавать в качестве строки имя API функции, и в динмассиве ее параметры, и пусть она вызывается - это как раз под стать интерпретатору.
В посте #6 написано, что я хочу и в линукс. Вот такая вот загогулина.
Маньяк-самоучка
Utkin появился в результате деления на нуль.
Осторожно! Альтернативная логика

Последний раз редактировалось Utkin; 13.10.2009 в 13:38.
Utkin вне форума Ответить с цитированием
Старый 13.10.2009, 13:42   #18
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
В посте #6 написано, что я хочу и в линукс.
Ну и что? Чем Линукс от Виндовса отличается? Только библиотеками, которые ты напишешь как автор для разных осей.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 13.10.2009, 13:49   #19
Utkin
Старожил
 
Аватар для Utkin
 
Регистрация: 04.02.2009
Сообщений: 17,351
По умолчанию

Апи-то у них разные. У линукса свое, у винды свое. А мне между ними придется писать свое. Идея конечно хороша, но я немножко разбираюсь в винде и нефига во внутреннем устройстве линукса.
Нет, ну в общем-то одно и тоже, но разница в порядке параметров, наименовании фунцкий и пр. Короче все заново.
Маньяк-самоучка
Utkin появился в результате деления на нуль.
Осторожно! Альтернативная логика
Utkin вне форума Ответить с цитированием
Старый 13.10.2009, 14:41   #20
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Да ради бога. Сначала для винды напиши, А потом уж и за линух возьмешся. Че сразу дареному коню то по зубам стучать, сначала оглядись
I'm learning to live...
Stilet вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как узнать что в содержимое буфера обмена добавилось что либо? zotox Общие вопросы Delphi 2 15.09.2009 12:07
Что такое язык программирования??? viks1 Общие вопросы по программированию, компьютерный форум 79 08.08.2009 18:06
язык Си bars1984 Помощь студентам 0 02.06.2009 09:36
Язык SunKnight Общие вопросы Delphi 9 29.02.2008 20:16
А что, если всем объедениться и создать что-нибудь глобальное? kuzmich Свободное общение 61 31.05.2007 21:01