Невпопад
Хочу в отпуск. Так хочу, что меня все раздражает.
GC в ruby в сто раз примитивнее того, что используется в jvm. Ц-ц-ц.
И еще меня начинает раздражать “мусорность” javascript. Я имею ввиду, что, в целом, многие ништяки из ФЯП можно реализовать и в javascript, но на java-подобный синтакс такие штуки не очень хорошо ложатся:
1 // пусть ArrayUtils - это специальная утилита для работы с массивами,
2 // реализующая for…each, map/reduce для всех браузеров, включая ie6.
3 // Что-то наподобие YUI.Array
4 var A = window.ArrayUtils = {
5 map : (Array.prototype.map) ?
6 function (a, fn, c) {
7 return a.map(fn, c || window);
8 } :
9 function (a, fn, c) {
10 var result = [], i = a.length;
11 while(i--) {
12 result[i] = fn.call(c || window, a[i]);
13 }
14 return result;
15 },
16 filter : (Array.prototype.filter) ?
17 function (a, fn, c) {
18 return a.filter(fn, c || window);
19 } :
20 function (a, func, c) {
21 var result = [], i = a.length;
22 while(i--) {
23 if (i in a && fn.call(c || window, a[i], i, a)) result.push(a[i]);
24 }
25 return result;
26 }
27 };
28
29 // получим новый массив, получаемый из исходного путем умножения каждого элемента на два.
30 // уже немножко "weird", не так ли?
31 var data = [1, 2, 3, 4];
32 A.map(data, function (item) { return item * 2; }); // 2, 4, 6, 8
33
34 // а теперь пример повеселее:
35 var persons = [
36 {
37 name : 'John',
38 lastName : 'Doe',
39 address : 'California, Los Angeles'
40 },
41 {
42 name : 'Ivan',
43 lastName : 'Ivanov',
44 address : 'Moscow'
45 },
46 {
47 name : 'Abraham',
48 lastName : 'Smith',
49 address : 'California, San Francisco'
50 }
51 ];
52
53 // Получим массив, состоящий только из полных имен пользователей, проживающих в калифорнии
54 var townRegex = /california/i;
55 A.map(A.filter(persons, function (person) {
56 return townRegex.test(person.address);
57 }), function (person) {
58 return person.name + ' ' + person.lastName;
59 }); // John Doe, Abraham Smith
Чрезвычайно избыточный и непонятный с непривычки код, особенно в сравнении с аналогичным в ruby или python.