Великий могучий формальный язык
Самый краткий и самый выразительный язык из всех придуманных человеком - это язык математики. А из естественных языков ближе всех по лаконичности к нему стоит пожалуй английский. Возможно, мы недооцениваем роль английского в истории создания современных информационных технологий. дальше...
Комментарии:
Интересное мнение. Я полностью с ним согласен. Так как и сам приходил к таким выводам.
интересное мнение. Однако, есть мнение, что англ. язык насчитывает 600,000 слов. Хотя, наверное в этом случае более правильно говорить о наборе диалектов.
Добавлю еще что англ. язык чрезвычайно контекстно-зависим, что тоже само по себе есть интересная особенность. Высокая популярность -- одна из оборотных сторон этого. Как следствие -- неспособность понятно излагать сложные и элегантные семантические конструкции (например, проза -- либо красива и непонятна большинству носителей языка, либо очень plain) наравне с возможностью чудовищной манипуляции -- можно сказать, что она "встроена" в язык.
Недавно слушал передачу о китайском языке. Так вот, оказывается что один из самых древних и широко используемых языков мира - в то же время один из самых бедных по словарному запасу. Причина простая - система письменности с использованием иероглифов вынуждает быть очень и очень экономным в выражениях. 6.000 знаков - уровень супер грамотного выпускника вуза. В английском с подобным словарным запасом посуду мыть или гамбургеры продавать не возьмут, на курсы отправят. Так что китайский - очень перспективный для "компьютеризации" на мой взгляд, буквально не язык а набор готовых к употреблению "кивордс" :)
Что касается теории "сверхязыковости" английского, то она антинаучна. Ничего особенного в семье германских языков английский не представляет, и немцы и французы легко его осваивают по причине близкой родственности, как украинцы или поляки русский. Ну и, разумеется, когда хотя бы те же китайцы перетянут канат и станут лидерами в технологиях, ничего страшного не случится. Хорошие математики они говорят на любых языках. Не мешает же японцам их незнание английского выпусткать лучшую в мире электронику.
Спасибо за статью.
Ну уж если на то пошло, то благодарить нужно и СССР :). Именно из-за этой страны армяне, грузины, украинцы, белорусы, и многие другие нации знают русский.
Мне статья понравилась. Интересные мысли, любопытные рассуждения и ненавязчивые выводы. Спасибо.
попробуйте Эсперанто... хех...
Очень интересно. Вообще меня давно беспокоит одна проблема родного мне армянского языка. Нелаконичность, неудобство, если хотите. И некоторая архаичность. Я думаю у филологов есть над чем работать. Ведь мало, чтобы язык был красивым, надо, чтобы во-первых он был универсальным средством общения.
Есть старый анекдот - американцы разработали эту теорию и пришли к выводам что при ведении войны языки с короткими словами более выгодны, но они зашли в тупик - русские вели войну более эффективно чем они имея более длинные слова в языке.
Как оказалось в экстренных ситуациях русские переходят на матерный язык, который гораздо короче английского :)
Боюсь только транслятор матерного языка построить будет нелегко ;)
Глупость. Автор умиляется английским, приписывая ему свойства любого европейского языка ( "объединение племен" и все такое). Вся сила английского языка - в технологическом превосходстве США(сейчас) и Англии(пару веков назад).
Пользовался PTypes лет 5 назад и сегодня понадобилось под Win 2003 Server x64 быстро раздавать по HTTP статические файлы - все .Net было решено ликвидировать. Когда оказалось, что IIS 6 кушает около сотни мегабайт при раздаче статических файлов я полез искать всякие thttpd, lighthttpd и случайно вспомнил о лаконичной утилитке, замеченой годы назад в составе PTypes - WShare.
Перекомпилировал, запустил, получил http-сервер, занимающий ~10 мегабайт памяти.
По этому же поводу решил зайти на сайт, почитать о новых версиях, почитать блоги. Прочитал статью и задумался, насколько погряз в Managed программировании и C# в частности. И к этому нас потталкивают сами разработчики языка.
Приведу пример из моей практики.
Если нам необходимо в функции провести операцию с 20ю экземплярами одной структуры, то мы создаем, например, System.List<> и работаем с коллекцией.
Хорошо, удобно, красиво.
Теперь представим, что такая функция вызывается очень и очень часто. В моем случае это было извлечение пользоватльских пакетов из очереди, простое шифрование и передача в сокет. Каждый экземпляр System.List<> это класс, реализующий пяток интерфейсов и имеющий два десятка виртуальных методов. Внутри него находится типизированный System.Array с нашими данными. Это еще один класс со схожими интерфейсами и наследованием. Оба создаются в хипе, а не в стеке, что бы не рассказывали нам об умном JIT.
Сама родительская функция вычищена так, чтобы не создавать новых объектов, потому нагрузка на GC может быть только от коллекций. При высокой нагрузке приложения отслеживается заметный рост загрузки процессора потоками GC.
Замена List массивом (т.е. избавление от одного из сложных классов) заметно уменьшает нагрузку на GC. Тут бы нам и оистановиться, но я решил сделать примитивный эксперимент:
struct GenericArray<T>
{
private T m_value_0;
private T m_value_1;
..
private T m_value_31;
T this[int index]
{
get
{
switch(index)
{
case 0: return m_value_0;
..
case 31: return m_value_31;
default: throw new Exception(..);
}
}
}
..
}
т.е. структура, хранящая последовательно 32 элемента. Умный геттер делает свитч и выбирает один из элементов. Структура имеет все предпосылки к инлайнингу, что, собственно, и происходит. Нагрузка GC падает значительно.
Вывод прост: System.Array давно перестал быть массивом и теперь представляет из себя многолапого монстра, у которого есть умные методы BinarySearch, Reverse, Sort и т.п., но больше нет возможности создаваться в стеке.
P.S. Развить тему с GenericArray и делать заменитель массива не имеет смысла, т.к. реализация интерфейса и работа с ним приведет к боксингу, что по скорости будет аналогично работе с обычным System.Array
Ех, ошибся я. Комментарий к статье "Клиника плохого кода" писал, а вставил тут :(
<< В начало