Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Прочее";
Текущий архив: 2007.08.26;
Скачать: [xml.tar.bz2];

Вниз

Кто что думает?   Найти похожие ветки 

 
Real ©   (2007-06-04 23:24) [280]

Мне кажется что сторонники Паскаля это те, кто привык к хорошей документации во всем. Рискну предположить что исходники Паскаля содержат больше комментариев :) Лично мне приятно видеть "begin" вместо "{", потому что для второго нужно помнить что это означает, а для первого - достаточно прочитать обычное английское слово. Мне как и многим приходится работать на нескольких языках, иногда за один день. Из-за этого неизбежны ошибки синтаксиса (типа написание "=" вместо ":="). Я вот уже несколько раз попался на один и тот же прикол: в ПХП, после нескольких часов Делфи пишу - if (a=1) ... И конечно же получаю логическую ошибку, потому как ПХП как и Си допускает присвоение в условном операторе... В дельфи по-моему нереально попасть в такую ситуацию, потому как язык достаточно строг к своему синтаксису. Си мне иногда напоминает "бои без правил", тогда как паскаль - хорошо организованный боксерский поединок :) Конечно, иногда раздражает что для объявления переменной нужно поднятся в секцию VAR - но при этом я всегда вспоминаю что сам виноват, больше надо было уделить времени проектированию. Строгая типизация - тоже часто дает негативные последствия, но сколько благодаря этому было выявленно ошибок за все время!


 
Kostafey ©   (2007-06-04 23:26) [281]

> [280] Real ©   (04.06.07 23:24)

+1
Ни дать - ни взять


 
Loginov Dmitry ©   (2007-06-04 23:26) [282]

А мне вот нравится в Паскале представление операторных скобок в виде begin...end. В случае их использования по правилу "begin и end всегда должны располагаться на одном уровне", скорость анализа кода ощутимо увеличивается Многие begin располагают сразу за предыдущим оператором, например,

if (Условие) then begin
  что-то там...
end


но это хуже вариант, усваиваемость кода ухудшается.

Во многих современных языках (Си, PHP, C# и т.п.) используются невзрачные фигурные скобки. Ну как их не располагай, усваимость все-равно ниже, чем при использовании правильно расположенных begin...end. Опять получается, что краткость в ущерб усваимости.

Не нравятся "извращенные" конструкции типа a = (b>c)?(b):(c). Такая конструкция неестественна :) Однако ее замена оператором IF естественности ничуть не прибавляет, а объем кода увеличивает. В Паскале IF более "естественен" благодаря наличию "лишнего" слова THEN.

Отдельного разговора заслуживает навороченный оператор цикла for(;;). (какая форма цикла FOR более естественна, та, что здесь, или та, что в Паскале?)


 
Kostafey ©   (2007-06-04 23:40) [283]

> А мне вот нравится в Паскале представление операторных скобок
> в виде begin...end

Так а > [280] Real ©   (04.06.07 23:24) о чем говорил ?


> Не нравятся "извращенные" конструкции типа a = (b>c)?(b)
> :(c).

Ну да, вместо них я пишу что-то вроде:

function cppq(strq: string; str1: string; str2: string):string;
begin
 if strq=str1 then
   Result:=str1
 else
   Result:=str2;
end;

Полезня в СPP эта конструкция !


> Отдельного разговора заслуживает навороченный оператор цикла
> for(;;). (какая форма цикла FOR более естественна, та, что
> здесь, или та, что в Паскале?)

Обе хороши.


 
Real ©   (2007-06-04 23:49) [284]


> +1
> Ни дать - ни взять

Благодарю :)


> Многие begin располагают сразу за предыдущим оператором,
>  например,
>
> if (Условие) then begin
>   что-то там...
> end


Заметил что большая часть исходников на си-подобных языках страдает этим форматированием. Поэтому первым делом заменяю все

if (условие) {
...
}


на

if (условие)
{
...
}


 
Eraser ©   (2007-06-04 23:51) [285]

> [280] Real ©   (04.06.07 23:24)

> Строгая типизация - тоже часто дает негативные последствия,
> но сколько благодаря этому было выявленно ошибок за все
> время!

эт точно, а php по-хорошему нужно все входные параметры функции приводить в нужному типу, иначе проблемы могут быть, так что отсутствие типизации, как это не пародоксально, приводит только к увеличению кода.
> [282] Loginov Dmitry ©   (04.06.07 23:26)

насчет скобок - не согласен, нормальная усваиваемость, особенно если писать в виде
if (a == b)
{
 c = a;
}

т.е. не далеть строку для скобки, а не
if (a == b) {
 c = a;
}

или
if (a == b) {c = a;}

> Не нравятся "извращенные" конструкции типа a = (b>c)?(b)
> :(c). Такая конструкция неестественна :)

не естесственна, согласен, но часто не хватает её в паскале.. ) есть конечно IfThen, но это немного не то.

но это все конечно дело вкуса.


 
Vendict ©   (2007-06-05 00:14) [286]

Defunct ©   (03.06.07 22:23) [113]
В некоторых процессорах имеется аппратный автоикремент индексного регистра, поэтому запись:

 A[ i++ ] = x;

выглядит куда более понятной, читаемой и компактной чем

A[ i ] := x;
i := i + 1;


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


 
Kostafey ©   (2007-06-05 00:18) [287]

> ничего себе понятной ! не зная языка, не скажешь, что первым
> делается, увеличивается i или меняется значение элемента
> массива.

Ну для CPP/Pascal знание - незниние языка не столь актуально...

Вот однажды мне подсунули пронраммульку на Fortran...;)
Куда деваться-разобрался, перенес в Delphi.


 
euru ©   (2007-06-05 00:47) [288]


> default ©   (04.06.07 18:57) [278]
> мне вот интересно, этот язык был экспериментальный или как?
> ...для диссера может лишь...видна же сразу утопичность практического
> применения таких языков из-за чрезвычайной их перегруженности



> Kostafey ©   (04.06.07 22:56) [279]
> А этот АВАР - вообще имхо сумасшедший.Структура кода на
> нем, наверно будет, не читаема, короче не язык - бредполный
> (уж простите за грубость), ну не воспринимается он визуально,
> просто никак вообще не воспринимается.

Вы хотя бы для прикола в Яндексе слово "ABAP" набрали и оценили его экспериментальность.


> McSimm_ ©   (04.06.07 18:43) [277]
> Я тут прикинул...
> MOVE (SUBTRACT (MULTIPLY (MULTIPLY x BY x) BY 5) BY C) TO y.
> Правильная запись ?
Разве такая запись похожа на человеческую? На АВАР это записывается так:
MOVE 5 TO y.
MULTIPLY y BY x.
MULTIPLY y BY x.
SUBTRACT c FROM y.


Но можно использовать и упрощённый синтаксис:
y = 5 * x * x - c.
:)


> default ©   (04.06.07 18:25) [274]
> покажи программку на АВАР?!
Да пожалуйста.
* Вариация на тему "Hello, world"
report z_hello_world.

start-of-selection.
  write / "Hello, world!".


 
Real ©   (2007-06-05 00:53) [289]


> > default ©   (04.06.07 18:25) [274]
> > покажи программку на АВАР?!
> Да пожалуйста.
> * Вариация на тему "Hello, world"
> report z_hello_world.
>
> start-of-selection.
>   write / "Hello, world!".

Ужас какой-то... :)


 
Kostafey ©   (2007-06-05 01:06) [290]

> Вы хотя бы для прикола в Яндексе слово "ABAP" набрали и
> оценили его экспериментальность.

А он оказывается даже на практике применяется.

Ничего не понимаю (С)


 
Defunct ©   (2007-06-05 01:41) [291]

Мне в паскале нравится только одно - базовый тип String. Против этого не попрешь. В С string"а нет, в C++ string реализован через прогнившую абстракцию. Которая рушится при первой же попытке сделать
S = "hello " + "world";
Как ни странно почему-то никто этого не отметил.

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


 
Однокамушкин   (2007-06-05 08:38) [292]


> Kostafey ©   (04.06.07 23:40) [283]
> > Не нравятся "извращенные" конструкции типа a = (b>c)?(b)
> > :(c).
>
> Ну да, вместо них я пишу что-то вроде:
>
> function cppq(strq: string; str1: string; str2: string):
> string;
> begin
>  if strq=str1 then
>    Result:=str1
>  else
>    Result:=str2;
> end;
>
> Полезня в СPP эта конструкция !

Неэквивалентная замена... сравните:
a = b == 0 ? 0 : c/b;
и
function cppq(Cond: Boolean; const x, y: Real): Real;
begin
 if Cond then
   Result := x
 else
   Result := y;
end;

a := cppq(b = 0, 0, c/b);


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


> Defunct ©   (05.06.07 01:41) [291]
> Все остальные так называемые преимущетсва Паскаля - якобы
> более лучшая читаемость кода, строгая типизация позволяющая
> выявлять ошибки - надуманы.

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


 
Однокамушкин   (2007-06-05 08:56) [293]


> Игорь Шевченко ©   (04.06.07 17:48) [270]
> Для того, кто хорошо знает язык, запутанностью это не выглядит.
>  Точно также, как для привыкших к паскалю не выглядят запутанными
> конструкции с множествами (+, *)

Не согласен... психологи говорят, что человек может одновременно оперировать не более чем семью сущностями, да и то не у всех это получается... шесть конструкций в одной строке - это близко к пределу... А операции с множествами - это оперирование одной сущностью, и тут просто надо знать, что это за сущность...

Правда, для тех, кто много раз использовал while (*d++ = *s++); эта конструкция уже воспринимается как единое целое, а не комбинация шести конструкций, и вы этом смысле читается легко... но множество комбинаций, которые человек может запомнить как единое целое, очень мало по сравнению со всем множеством комбинаций...

А какое-нибудь сложное арифметическое выражение, содержащее, скажем, только +,-,*,/ (на Паскале и на Си оно запишется, кстати, одинаково) будет восприниматься тяжело, несмотря на то, что каждое действие само по себе просто и понятно... Так что не в сложности отдельной операции дело, а в том, как они комбинируются...


 
db2admin ©   (2007-06-05 09:06) [294]

Loginov Dmitry ©   (04.06.07 23:26) [282]
#define begin {
#define end }

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


 
Alkid ©   (2007-06-05 09:09) [295]

Господа, внесу свежую мысль:
Синтаксис - это вопрос вкуса.
Он ортогонател семантике.
Нету по определению более лучшего синтаксиса или более худшего. Это вопрос првычки. Я привык к С-подобному синтаксису и дельфёвый мне кажется очень неуклюжим. Кто-то привык в паскалевсокму, и сишный синтаксис кажется ему убогим и нечитаемым.
Истины тут нет.


 
Однокамушкин   (2007-06-05 09:46) [296]


> Alkid ©   (05.06.07 09:09) [295]

Неправильная мысль... существуют формальные правила описания синтаксиса (например, форма Бэкуса-Наура) и связанные с ними правила синтаксического разбора... соответственно, грамматики языка могут иметь разные классы - LR(1), LL(1) и т.д... и при таком формальном описании количество и сложность синтаксических конструкций становится измеряемой объективной величиной...

Чтобы было понятнее, поясню... например, писать "{" или "begin" или там "%" или "mod" - это дело вкуса, потому что структура формальных правил при этом не меняются, просто одна лексема заменяется другой... а вот появление оператора ++ грамматику меняет сильно, потому что синтаксис выражения a+++b не описывается контекстно-свободной грамматикой, только контекстно-зависимой, а это объективно сложнее... кстати, если бы вместо ++ и -- использовались бы, например, @+ и @-, проблем бы не было, выражения a@++b и a+@+b не перепутаешь... проблема синтаксиса си в данном случае в том, что плохо проработан алфавит языка, т.е. "++" является одновременно и отдельным символом языка, и допустимой комбинацией двух символов...


 
palva ©   (2007-06-05 09:52) [297]

> Alkid ©   (05.06.07 09:09) [295]
Это точно. А то я все в недоумении читаю наезды на if (a=1) {;} или *a++=*b++;
Что здесь может быть заумного?  Для меня, как для сишника гораздо заумнее выглядит a := b


 
Alkid ©   (2007-06-05 09:53) [298]


> Однокамушкин   (05.06.07 09:46) [296]

Я это всё прекрасно понимаю, да. Но это всё теория. На практике синтаксис является именно делом вкуса. Случаи, где возникает неоднозначность с теми же операторами "++" и "--" редки. Скажу прямо - я на С/С++ программирую уже  лет 7-8 и у меня НИ РАЗУ подобные неоднозначности не возникали. Я что-то делаю не так?


 
Anatoly Podgoretsky ©   (2007-06-05 09:54) [299]

> Однокамушкин  (05.06.2007 09:46:56)  [296]

> проблема синтаксиса си в данном случае в том, что плохо проработан алфавит языка

Да кто же его прорабатывал


 
db2admin ©   (2007-06-05 09:56) [300]

Alkid ©   (05.06.07 09:53) [298]
ну не знаю попробуй книжки почитать Фленова например ))


 
SPeller_work   (2007-06-05 09:56) [301]

А я вот уже 2 года пишу на пхп, Дельфи не трогаю. Сишный синтаксис поначалу непривычен после паскалевского, но привыкаешь. Но читаемость сишных кодов всеравно хуже паскалевских из-за большого количества мелких, но значимых синтаксических деталей вроде {/(:? . Гибкость языка приятна, очень удобно писать $array[] = "new value"; когда хочешь добавить новый элемент к массиву, но поначалу попадался на конструкциях вроде $f = "a" . (true) ? "b" : "c"; (скажите без проверки, чему будет равна переменная f), когда гонялся за "вкусностями" языка.

Пришлось мне пописать и на визуал бейсике, 2005-м. Смесь си и бейсика оставила впечатление хуже паскаля, си и даже старого (визуал)бейсика.

По поводу темы обсуждения: лично для меня - разницы, на чем писать - нет. Но паскаль нравится больше потому что код нагляднее и элегантнее. Как-то проще мне на нем выводить то что задумано. Возможно, это из-за того, что на нем вобщем-то и выходил на нынешний уровень программирования. Пхп хоть и знаю сейчас очень хорошо, но всё-равно как-то не то пальто.


 
palva ©   (2007-06-05 10:01) [302]

> чему будет равна переменная f
b это без проверки. Угадал?


 
Loginov Dmitry ©   (2007-06-05 10:05) [303]

ab


 
Reindeer Moss Eater ©   (2007-06-05 10:07) [304]

Лучше всего синтаксис у C#. Лучше даже, чем у Object Pascal.


 
palva ©   (2007-06-05 10:07) [305]

Фигасе! А я привык на c ставить операцию ? чуть ли не на последнее место. Я бы конечно скобками проложился, если бы сам писал.


 
Однокамушкин   (2007-06-05 10:28) [306]


> Reindeer Moss Eater ©   (05.06.07 10:07) [304]
> Лучше всего синтаксис у C#. Лучше даже, чем у Object Pascal.

Это что ж за синтаксис такой замечательный, что он не даёт мне объявить нормальную процедуру там, где требуется именно процедура? Я должен объявлять новый класс, в нём - статический метод, и при вызове этого метода указывать имя класса... класс - это нечто такое, экземпляры чего должны создаваться (или он должен служить предком для других классов), а тут получается, что язык вынуждает меня создавать класс, от которого ни наследования нет, ни экземпляры его не создаются... класс играет роль пространства имён... Какая от этого польза в народном хозяйстве?!!!

А уж что там они со сборками и пространствами имён накрутили, на этом вообще диссертацию по психиатрии писать можно... есть хорошо известная ещё со времён модулы-2 концепция модулей, которые являются и единицам компиляции, и единицами инкапсуляции, и единицами компоновки, и пространствами имён... все дельфисты должны знать эту концепцию, в Delphi её реализовали практически без изменений... А в C#? Простанство имён может быть размазано на несколько сборок, сборка - содержать несколько пространств имён, что является единицей компиляции, вообще понять невозможно... Очень надеюсь, что пессимистичные прогнозы насчёт висты исполнятся, мелкомягкие рухнут, и мы будем избавлены от этого кошмара...

Кстати, эта перепутанность сборок и пространств имён может приводить к совершенно неожиданным ошибкам - пример есть в книге http://www.piter-press.ru/book.phtml?978546900378


 
Reindeer Moss Eater ©   (2007-06-05 10:33) [307]

Это что ж за синтаксис такой замечательный, что он не даёт мне объявить нормальную процедуру

Это не синтаксис, это объектная модель такая.
Кстати я у нее плюсы нашел (после того, как поматерился минут 10)
Если любая "запятая" - это непременно член класса, то до нее лекго добраться через хинты  и подсказки иде.
В частности это касается разных констант - параметров процедур.
Ну удобно же.


 
Однокамушкин   (2007-06-05 10:55) [308]


> Reindeer Moss Eater ©   (05.06.07 10:33) [307]
> Это не синтаксис, это объектная модель такая.

Это имхо не объектная модель, а имитация объектной модели для рекламных целей... ООП сейчас в моде, вот они, вслед за джавой, и сделали такой синтаксис, чтобы можно было заявлять, что язык получился чисто объектно-ориентированным... Только ерунда всё это... есть три основных конструкции, каждая из которых однозначно выдаёт принадлежность языка к классу императивных: while, if и goto - в шарпе есть все три... так что это не ОО-язык, это императивный язык с элементами ООП, поэтому насильственное запихивание любой функции в класс смотрится в нём, как седло на корове... настоящий ОО-язык - это, например, Smalltalk... ради интереса попробуйте найти его описание и посмотреть, как в нём организуются циклы и ветвления... вот в таком языке действительно функция вне объекта - нонсенс...

И ещё - я вовсе не против императивных языков с элементами ООП, как раз такие мне больше всего и нравятся, а Smalltalk считаю не очень удобным... просто мне не нравится, когда такой язык пытаются преподнести как чистый ОО-язык исключительно из маркетинговых соображений...


 
Игорь Шевченко ©   (2007-06-05 11:00) [309]

Real ©   (04.06.07 23:24) [280]


> Лично мне приятно видеть "begin" вместо "{", потому что
> для второго нужно помнить что это означает, а для первого
> - достаточно прочитать обычное английское слово.


Для китайца или для русского что begin, что { - ни то, не другое не является родным. Скобку быстрее набить. Так что не надо говорить про "простое английское слово". Особенно про слово implementation - уж роднее некуда.


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


Лично меня раздражает, что все переменные надо объявлять в этой секции, даже те, которые нужны сугубо локально, внутри блоков begin..end. Код запутывается донельзя.

Defunct ©   (05.06.07 01:41) [291]


> Читаемость кода зависит от опыта и от привычки, а это дело
> наживное


Целиком и полностью поддерживаю.


 
Reindeer Moss Eater ©   (2007-06-05 11:03) [310]

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

А я вообще не обращаю внимания на то, как его пробуют преподнести.
Мне нравится он сам по себе и все.
:)


 
Юрий Зотов ©   (2007-06-05 11:42) [311]

Возвращаясь к синтаксису Си, предлагаю улыбнуться свежеживому примеру:

palva ©   (05.06.07 09:52) [297]
"...я все в недоумении читаю наезды на if (a=1) {;} или *a++=*b++;
Что здесь может быть заумного?  Для меня, как для сишника гораздо заумнее выглядит a := b"

SPeller_work   (05.06.07 09:56) [301]
"скажите без проверки, чему будет равна переменная f"

palva ©   (05.06.07 10:01) [302]
"b это без проверки. Угадал?"

Loginov Dmitry ©   (05.06.07 10:05) [303]
"ab"

palva ©   (05.06.07 10:07) [305]
"Фигасе!"

=====================================

Что видим? То, что даже сишник с опытом, человек, хорошо знающий язык - и то  "с лету" не понял написанного. Даже ему - и то потребовалось время на осмысливание.

Что тут скажешь? Простой, понятный, прозрачный синтаксис. Однозначно.
:о)


 
etc   (2007-06-05 11:47) [312]


> Юрий Зотов ©   (05.06.07 11:42) [311]

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


 
palva ©   (2007-06-05 11:53) [313]

> хорошо знающий язык - и то  "с лету" не понял написанного
Xорошо знающий язык C и то  "с лету" не понял написанного на PHP. Бывает и такое. Но обычно сишник "понимает" также кучу других языков именно потому, что сишные конструкции для него прозрачны. А операция . в C просто отсутствует.


 
Игорь Шевченко ©   (2007-06-05 11:53) [314]


> Что видим? То, что даже сишник с опытом, человек, хорошо
> знающий язык - и то  "с лету" не понял написанного.


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


 
ocean ©   (2007-06-05 12:15) [315]

Глупо защищать С в Дельфовой конференции, но невозможно же слушать эти наезды. "Неоднозначный синтаксис, а вдруг я совершу ошибку"? Понятно, что при работе в команде "молодых дарований" и в условиях вечной нехватки времени это становится существенным. Но, извините, это все же слова ремесленника. "У простых людей и болезни должны быть прямые: переломы конечностей, грыжа..." "Дайте мне begin...end"
С и Паскаль - разные вещи. С прекрасен своей буйной адресной арифметикой, и оператор ++ - его изюминка.


 
DesWind ©   (2007-06-05 12:30) [316]

Разбирался тут в заголовочных файлах от MS для написания плагина, думал поседею.Макросов понапихали до нельзя. Конечно в итоге код в примере получился из трех строчек, но разобраться что на самом деле происходит очень тяжко. И в тоже время вполне понятны и прозрачны заголовочные файлы для Миранды.


 
Плохиш ©   (2007-06-05 12:34) [317]


> ocean ©   (05.06.07 12:15) [315]
> Глупо защищать С в Дельфовой конференции, но невозможно
> же слушать эти наезды.

ИМХО, вдвойне глупо приходить в делфийную конференцию и вопить какой делфи - плохой, а си - крютой и после плякать, что тебя послали...


 
Alkid ©   (2007-06-05 13:10) [318]

Ну здесь особо никто, вроде, и не вопил, что дельфи плохой :-)
Или я что-то пропустил?


 
IMHO ©   (2007-06-05 13:15) [319]


> Игорь Шевченко ©   (05.06.07 11:53) [314]
>
>
> > Что видим? То, что даже сишник с опытом, человек, хорошо
> > знающий язык - и то  "с лету" не понял написанного.
>
>
> Ты забыл добавить, что написанного на другом языке.


Чукча не читатель, чукча исключительно писатель?


 
Игорь Шевченко ©   (2007-06-05 13:17) [320]

IMHO ©   (05.06.07 13:15) [319]

В зеркало, дружок



Страницы: 1 2 3 4 5 6 7 8 9 
10 11 12 13 14 15 вся ветка

Форум: "Прочее";
Текущий архив: 2007.08.26;
Скачать: [xml.tar.bz2];

Наверх





Память: 1.12 MB
Время: 0.138 c
15-1185897195
Kostafey
2007-07-31 19:53
2007.08.26
Тест


15-1185858638
Slider007
2007-07-31 09:10
2007.08.26
С днем рождения ! 31 июля 2007 вторник


8-1162570365
Кевларвестов Семен
2006-11-03 19:12
2007.08.26
Чем бы выдернуть инфу из видео файла?


1-1181787504
Yus
2007-06-14 06:18
2007.08.26
Вопрос по шрифтам


2-1186383567
Yekver
2007-08-06 10:59
2007.08.26
Dll с иконками





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский