Хабр Курсы для всех
РЕКЛАМА
Практикум, Хекслет, SkyPro, авторские курсы — собрали всех и попросили скидки. Осталось выбрать!
Тэнк сидит в кокпите Навуходоносора уткнувшись в экраны с зелеными кракозябрами. Сзади подходит Нео:
— Вы всегда смотрите Матрицу в коде?
— Это не Матрица, это я свой Перл-скрипт отлаживаю...
Типы (классы) в ООП — ключевая концепция.
Encapsulation (object-oriented programming)
In a programming language, encapsulation is used to refer to one of two related but distinct notions, and sometimes to the combination thereof:
A language mechanism for restricting access to some of the object's components.
A language construct that facilitates the bundling of data with the methods (or other functions) operating on that data.
In object-oriented programming (OOP), inheritance is a way to reuse code of existing objects, or to establish a subtype from an existing object, or both, depending upon programming language support.
In computer science, polymorphism is a programming language feature that allows values of different data types to be handled using a uniform interface.
Кстати, в перле этого нет.
И что это за data types?
Что это за слово такое вкралось у вас subtype?
инкапсуляция через замыкания. То есть нет приватности
«Я придумал термин „объектно-ориентированный“, но я вовсе не имел в виду C++.»
Alan Kay. Создатель Smalltalk
Инкапсуляция — сокрытие данных в объектах. Причём не любых данных в любых объектах (как это сделано в Perl), а определённых данных в объектах определённых типов
Наследование — механизм описания одного типа на основе другого типа.
Полиморфизм — возможность типов с одинаковой спецификацией иметь различную функциональность.
Инкапсуляция — сокрытие данных в объектах.
Но использование ООП ради парадигмы — удел либо академических исследователей, которые хорошо понимают, что делают, либо недалёких школьников, которые не понимаю смысла используемого инструмента.
Python проверяет типы. Вы не можете даже сравнивать разные типы.
В Perl же, конструктор может вернуть не объект, а undef.
Почему-то большинство смирились с тем, что почти во всех ЯП любой метод вместо объекта может вернуть null (на мой взгляд это зло).
что-то внутри сломалось
ситуация штатная
Option, Maybe, Nullable, как_бы_это_ни_называлось
Короче, неубедительно (лично для меня).
// with potential nulls
val father = if (person == null) null else person.father
val mother = if (father == null) null else father.mother
val sister = if (mother == null) null else mother.sister
// with options
val fathersMothersSister = for {
father <- person.father
mother <- father.mother
sister <- mother.sister
} yield sister
Имеете ввиду PHP или Ruby? Или какой-то другой язык?
сомнительно.
И какой порог вхождения в эти фреймворки?perldoc AnyEvent/Coro — можно въехать весьма быстро
И какова цена ошибки в этих фреймворках для пользователяпримерно такая же как для фреймворков других языков )
perl -Mbignum -le 'print ref(2**255)'
Приведите пример Perl'а для обработки «больших массивов данных»PDL
use Inline C;
greet('Ingy');
greet(42);
__END__
__C__
void greet(SV* sv_name) {
printf("Hello %s!\n", SvPV(sv_name, PL_na));
}perl-CUDA не юзабеленblogs.perl.org/users/david_mertens/2011/06/perls-first-real-cuda-bindings-released.html
про вещи типа scipy/matplotlib/Theano мечтать и не приходится.scipy это и есть аналог pdl
print grep($_=pack("c",hex($_)),unpack("A2"x 25,"4a75737420616e6f74686572205065726c206861636b65722 c"))
Языку программирования Perl сегодня исполнилось 25 лет