• Авторизация


Скаляр 30-11-2010 18:58 к комментариям - к полной версии - понравилось!


Вы не задумывались вообще, почему в Яве, С++, С#, Ruby, Python для конкатенации строк используется +, и только в Perl и PHP точка? Потому что в языках, которые изначально разрабатывались как объектно-ориентированные, учтено, что конкатенация - это операция сложения для строк. И строка - всего лишь один из существующих типов, а не какая-то особенная сущность языка. Более того, там учтено, что в зависимости от задачи программист может ввести свой собственный тип (например, геометрический вектор), и там уже оператор "+" будет вести себя совсем по-другому.
Сидит Ларри, разрабатывает Перл и думает: нет, мол, не хочу я строгую типизацию. Мне нужно, чтобы любая переменная могла в себе хранить и строку, и число. Подумал и реализовал тут же. Так у нас появился скаляр, не имеющий конкретного типа. Конечно, ни о каком ООП у Ларри тогда и мыслей не было.
Едем дальше: пропарсил Ларри лог и давай отчет генерить. Смотрит, а у него в скаляре число лежит (которое на самом деле строка), и когда он его к другому скаляру лепит +-ом, получается непонятно что. Т.е. Ларри хочет строки конкатенировать, а Перл ему числа складывает. Ну Ларри не долго думая и добавил в язык еще один оператор - их ведь еще много свободных, на все случаи хватит. Так и появилась в Перле точка, чтобы неоднозначность разъяснить.
А вот если бы Ларри немножко подумал или посмотрел на объектно-ориентированный язык, он бы понял, что пускай язык и динамический, но тип у скаляра всеравно должен быть. Тогда объект может сам решить, что ему делать при сложении, вычитании, умножении и т.д. Ларри конечно понял это, но поздно, когда ПХП уже переняли точку по наследству, перлисты вообще с ней срослись, а на горизонте замаячили Питон и Руби.
вверх^ к полной версии понравилось! в evernote


Вы сейчас не можете прокомментировать это сообщение.

Дневник Скаляр | Aendor - Текст как-то по-дебильному написан (с) | Лента друзей Aendor / Полная версия Добавить в друзья Страницы: раньше»