Хотелось ли вам когда нибудь изобрести свой язык программирования, который бы позволял всё писать на кирилице и идентификаторы, и названия процедур-функций, и команды. Что то вроде:
Цикл ( целый И = 0 ; И < КоличествоДвигателей ; И++ )
Если (НеобходмаяМощность[И] < ДоступныйРесурс[И] ) Тогда
выделитьЕщёРесурсов(НеобходмаяМощность);
И--;
Иначе
запуститьПроцессПереработки();
Конец Если;
Конец Цикл;
Скажете бред. Вовсе нет, среди множества русскоговорящих программистов около 60% владеют английским языком на уровне pre-intermediate(ниже среднего) или еще ниже. Так что код, в котором все слова были бы интуитивно понятны вероятно для них был бы роднее. Так считаю не только я.
В любимом всеми читателями этого бложка язык программирования JAVA также сделал первый шаги в эту сторону. Нет, выше приведенный сегмент кода не будет работать, он даже не скомпилируется.
Продолжение...
Но вот следующий пример красочно демонстрирует лояльность java к кирилице, и совсем уж не ясно почему на просторах интернетов столько тем с комбинациями с трёх слов: java+кирилица+проблемы.
public class Гражданин {
private String Фамилия;
private String Имя;
private String Отчество;
private String Родина;
private int Возраст;
private boolean Беспартийный;
private boolean Судимый;
public String getФамилия() {
return Фамилия;
}
public void setФамилия(String фамилия) {
Фамилия = фамилия;
}
public String getИмя() {
return Имя;
}
public void setИмя(String имя) {
Имя = имя;
}
public String getОтчество() {
return Отчество;
}
public void setОтчество(String отчество) {
Отчество = отчество;
}
public String getРодина() {
return Родина;
}
public void setРодина(String родина) {
Родина = родина;
}
public boolean isБеспартийный() {
return Беспартийный;
}
public void setБеспартийный(boolean беспартийный) {
Беспартийный = беспартийный;
}
public boolean isСудимый() {
return Судимый;
}
public void setСудимый(boolean судимый) {
Судимый = судимый;
}
public void setВозраст(int возраст) {
Возраст = возраст;
}
public String toString(){
return
(Беспартийный?"Беспартийный":"Партийный")+" гражданин "+
Фамилия+" "+Имя+" "+Отчество+
" проживающий в "+Родина+
" "+Возраст+" лет отроду"
+(Судимый?" имеет судимости":" судимостей не имеет");
}
public static void Распечатать(Object подозреваемыйОбъект){
System.out.println(подозреваемыйОбъект);
}
public static void main(String []строчка){
Гражданин петров = new Гражданин();
петров.setФамилия("Иванов");
петров.setИмя("Иполит");
петров.setОтчество("Васильевич");
петров.setРодина("КНДР");
петров.setВозраст(45);
петров.setБеспартийный(false);
петров.setБеспартийный(false);
Распечатать(петров);
}
}
И получаем следующий вывод:
d:\projects\eclipse\Test\bin>java Гражданин
Партийный гражданин Иванов Иполит Васильевич проживающий в КНДР 45 лет отроду судимостей не имеет
Как показывает пример - идентификаторы, параметры, названия методов, и даже названия классов могут состоять из кирилических символов. Единственное что остаётся для меня пока тайной - в какой версии была введена такая возможность, существовала ли она всегда. Десяти минутное насилование googla не дало ответ на этот вопрос.
P.S.: необходимо заметить что практическое применения второго примера (комбинация английских и русских слов в коде) довольно низкая, из за постоянного переключения раскладок и соответственно низкой скорости набора.
6 комментариев:
Java full unicode с самого начала.
Т.е. так писать можно было всегда.
По опыту 1С скажу что так писать неудобно, не только из-за переключений расскладки (в 1С не надо переключаться, там и операторы на русском), а из-за склонений и длины слов.
В английском слова "константы". red означает и красный и красная и красное и тд и они обычно короче.
Что касается проблем java+кирилица+проблемы, то они в другой области - взаимодействия с внешним миром, который не full unicode.
Например - написали мы наш .java, а ещё интереснее .jsp файл в кодировке cp1251 с русскими, есть шанс увидеть абракадабру:
Tomcat под linux ничего не знает про cp1251.
Надо прописать кодировку .jsp файла и кодировку в которой генерировать результирующий документ, а если генерируем html, то нелишне и в нем указать кодировку.
Когда весь внешний мир перейдет на UTF-8, проблема практически исчезнет - уже сейчас она не такая острая, как несколько лет назад.
Или пример, который вам теперь ближе - вставляем запись в таблицу БД:
- в java - unicode,
- между java - БД - может быть своя кодировка,
- таблица в третьей (а ещё collation можно хитро подкрутить)
спасибо за информативные коментарии.
действительно средняя длинна английских слов составляет 4.24 буквы, в то время как русских 5.13. Что почти на 20% больше.
p.s.: относительно java+кирилица+проблемы - это была наживка, что бы заинтересовать читателя:)
естественно приведённые примеры только касаються, но не описывают сполна возможностей java по работе с кирилицей.
Сам знаю английский препаршиво, но когда нужно обозвать переменную - спрашиваю гуглбота-переводчика в GTalk'е да и все.
Потому что как-то столкнулся с библиотекой на немецком. Вот то была песТня- Kopf вместо Head, zuruck'и и прочее. И оказалось - читать такие исходники невозможно, английский прямо как родной вспоминался.
Есть опыт и в 1С - названия на русском получаются длиннючие, и опять же - никакого понимания не прибавляют, в сравнении с английскими, хотя английский, повторю скорей не знаю чем знаю.
Словарь же самих языков обычно маленький, заучить что if это не "если" а такой иероглиф что обозначает проверку условия - просто.
Да... Работаю с французким кодом - тоже парни жгут. Потому уж лучше инглиш...
Блин, круто, я только сейчас наткнулся на этот блог.. интересно и с пользой.
Костя, спасибо за интересный материал.
Отправить комментарий