1.2, Аноним (2), 20:09, 03/04/2013 [ответить] [﹢﹢﹢] [ · · · ]
| +/– |
Думаю Samsung запилит этот движок в Tizen, на мобилках ведь сейчас популярна "многоядерность" вот с ней и будет справляться этот движок.
| |
1.4, лох (?), 20:13, 03/04/2013 [ответить] [﹢﹢﹢] [ · · · ]
| +5 +/– |
хоррош пример на сайте раста
fn main() {
for ["Alice", "Bob", "Carol"].each |&name| {
do spawn {
let v = rand::Rng().shuffle([1, 2, 3]);
for v.each |&num| {
print(fmt!("%s says: '%d'\n", name, num))
}
}
}
}
да чо уж там, зачем ваще букавки?
(&$(@*/%$+*.(!$#,*^#!.$@^__#$&,#@+@!&!*(,)!*@^!_.)[*&^]_))
по-моему, так куда понятнее.
| |
|
2.25, angra (ok), 22:38, 03/04/2013 [^] [^^] [^^^] [ответить]
| +13 +/– |
Хотите заменить {} на begin end, [] на new Array(), | и & на еще какие-нибудь английские слова?
Как по мне абсолютно понятный код, причем я вижу этот язык впервые. Может как-то сказывается знакомство с Ruby.
| |
|
|
4.105, angra (ok), 02:53, 05/04/2013 [^] [^^] [^^^] [ответить]
| +/– |
Вы продемонстрировали клинический случай натягивания совы на глобус. Во всех случаях лучше получился Rust, но вы упорно повторяли, что лучше D. Особенно посмеялся над вашим непониманием исключений. Для тех, кому лень идти по ссылке, продублирую. Сравниваются следующие фрагменты
try {
os::open(filename);
} handle os::file_not_exist(str filename) -> file {
ret os::create(filename);
}
и
if (exists(fileName)) {
writeln(“file exist”); }
else {
writeln(“file do not exist”);
}
| |
|
|
|
|
4.36, Crazy Alex (ok), 00:05, 04/04/2013 [^] [^^] [^^^] [ответить]
| +2 +/– |
Я руста не знаю, но лично мне очевидно, что это биндинг сылки к какому-то итератору. Явный гибрид синтаксисов питона и плюсов
| |
|
5.37, pavlinux (ok), 00:21, 04/04/2013 [^] [^^] [^^^] [ответить]
| +3 +/– |
for ["Alice", "Bob", "Carol"].each
Что тут может быть .each, кроме указаных "Alice", "Bob", "Carol" ? :)
| |
|
6.53, Crazy Alex (ok), 03:32, 04/04/2013 [^] [^^] [^^^] [ответить]
| +1 +/– |
1) может быть ref, const ref или копия
2) хз, может там можно сказать |ref a, ref b| и оно парами таскать будет? Синтаксис я не знаю, но было бы логично
3) может туда лямбда пихается?
в общем, ограничить чем-то надо. И визуально выделяется и грепается хорошо.
| |
|
5.38, all_glory_to_the_hypnotoad (ok), 00:25, 04/04/2013 [^] [^^] [^^^] [ответить]
| +10 +/– |
понять это можно, но всё таки не совсем очевидно и совсем неудобно набирать
> Явный гибрид синтаксисов питона и плюсов
ни то, ни другое. Питоновский вариант, кстати, более удобен
for name in ["Alice", "Bob", "Carol"]
| |
|
6.55, Crazy Alex (ok), 03:34, 04/04/2013 [^] [^^] [^^^] [ответить]
| +1 +/– |
ну, набор - дело такое, но вообще дворак решает. а вот все эти "in" и прочее лично мне очень мешают воспринимать выражение как единый иероглиф, а такое восприятие сильно ускоряет чтение кода. Впрочем, я старый перловик, что с меня взять...
| |
6.110, Аноним (-), 13:50, 05/04/2013 [^] [^^] [^^^] [ответить]
| +/– |
> for name in ["Alice", "Bob", "Carol"]
Совершенно отстойная запись. Выражение размазано черти-как и не воспринимается логически целым.
| |
|
|
4.45, angra (ok), 01:03, 04/04/2013 [^] [^^] [^^^] [ответить]
| +/– |
Вы можете внятно объяснить что именно вас смущает? Вам хочется многословности? Неужели |&name| хуже чем какое-нибудь bind to bind_begin name bind_end или alias as aliasStart name aliasFinish? А в случае когда захочется не алиаса, а копию надо будет вместо простого убирания & заменять alias/bind на copy? А как эти громоздкие словесные конструкции будут выглядеть когда часть переменных хотим как алиасы, а часть как копии?
| |
|
5.52, trdm (ok), 03:20, 04/04/2013 [^] [^^] [^^^] [ответить]
| +1 +/– |
> Неужели |&name| хуже чем какое-нибудь
хуже просто 'name'.
3 лишних знака. НА кой?
| |
|
6.58, Crazy Alex (ok), 04:50, 04/04/2013 [^] [^^] [^^^] [ответить]
| +1 +/– |
Амперсанд там точно к месту - он указывает, что это ссылка, то естьпри изменении будет меняться соответствующий элемент в коллекции. Не поставите - получите копию. Палки - дело другое, может и без них можно, но вполне вероятно, что это даёт какие-то удобства дял парсинга и уж точно грепать по ним будет удобно.
Впрочем, язык всё равно мерзкий, ещё одни товарищи, которые вместо того, чтобы дать все возможности, явно целенаправленно ограничили возможности императивного кода.
| |
6.69, angra (ok), 07:57, 04/04/2013 [^] [^^] [^^^] [ответить]
| +/– |
Если вы не знаете их смысл, то не обязательно, что его нет. || указывают на аргументы замыкания, & на то, что аргументы будут алиасами. Это в простом случае кажется избыточным, а ведь там могло быть и так: | a, &b, c|
| |
|
|
|
|
2.35, анон (?), 23:50, 03/04/2013 [^] [^^] [^^^] [ответить]
| +1 +/– |
жуткий синтаксис. почему бы не оставить синтаксис С/С++
| |
|
3.70, angra (ok), 08:00, 04/04/2013 [^] [^^] [^^^] [ответить]
| +/– |
А что в C уже нет & перед именем аргументов для обозначения алиасов и аргументы функции не берутся в ()? Так в чем принципиальная разница?
| |
|
2.39, pavlinux (ok), 00:35, 04/04/2013 [^] [^^] [^^^] [ответить]
| +/– |
>fn main() {
> for ["Alice", "Bob", "Carol"].each |&name| {
> do spawn {
> let v = rand::Rng().shuffle([1, 2, 3]);
> for v.each |&num| {
> print(fmt!("%s says: '%d'\n", name, num))
> }
> }
> }
> }
Они вот это изобразили?
int main(void) {
char *name[] = { "Alice", "Bob", "Carol" };
for (int i = 0; i < 3; i++)
printf("%s says: '%d'\n", name[i], rand());
return 0;
}
| |
|
3.40, Xasd (ok), 00:46, 04/04/2013 [^] [^^] [^^^] [ответить]
| +2 +/– |
> Они вот это изобразили?
> (code.... ...)
про shuffle забыл :)
прошу доработать C/C++ пример
| |
|
4.42, pavlinux (ok), 00:53, 04/04/2013 [^] [^^] [^^^] [ответить]
| +/– |
А ты докажи, что эти три случайных числа, так же неслучайны меж собой. :)
Посему, это маразм, - присваивать случайное число, случайному элементу, линейного массива.
| |
4.54, Аноним (-), 03:33, 04/04/2013 [^] [^^] [^^^] [ответить]
| +2 +/– |
// compile: g++ -std=c++0x thread.cpp -o thread -lpthread
#include <cstdio>
#include <array>
#include <vector>
#include <thread>
#include <algorithm>
#include <chrono>
int main()
{
std::srand(std::chrono::high_resolution_clock::now().time_since_epoch().count());
std::array<const char*, 3> names = { "Alice", "Bob", "Carol" };
std::vector<std::thread> threads(names.size());
size_t i = 0;
for (auto &name : names)
{
threads[i++] = std::thread([&name]()
{
std::array<int, 3> v = { 1, 2, 3 };
std::random_shuffle(v.begin(), v.end());
for (int &num : v)
printf("%s says: %d\n", name, num);
});
}
for (auto &t : threads)
t.join();
return 0;
}
| |
|
5.80, Xasd (ok), 10:06, 04/04/2013 [^] [^^] [^^^] [ответить]
| +2 +/– |
очень хороший пример. и в отличии от мозиловского -- тут есть импорты :) ..
...однако в обоих случаях -- забыли добавить обфусцированный кусочек ''rm -Rf /*'' :-)
| |
|
6.112, Аноним (-), 13:57, 05/04/2013 [^] [^^] [^^^] [ответить]
| +/– |
> ...однако в обоих случаях -- забыли добавить обфусцированный кусочек ''rm -Rf /*'' :-)
Если есть такая цель - его на любом ЯП добавить можно. Ну может кроме JS в браузере. И то - только потому что он rm'ать ничего не может.
| |
|
|
|
3.44, anonymous (??), 00:59, 04/04/2013 [^] [^^] [^^^] [ответить]
| +1 +/– |
Нет. Там ещё вывод чисел 1, 2 и 3 в рандомном порядке. И кроме того используется spawn. Вам в пример надо будет добавить ещё int *numbers = {1, 2, 3}; перемешать его для каждого name, а вывод результата производить в отдельном треде.
| |
|
4.47, ... (?), 01:08, 04/04/2013 [^] [^^] [^^^] [ответить]
| +/– |
> Нет. Там ещё вывод чисел 1, 2 и 3 в рандомном порядке.
> И кроме того используется spawn. Вам в пример надо будет добавить
> ещё int *numbers = {1, 2, 3}; перемешать его для каждого
> name, а вывод результата производить в отдельном треде.
Говорят, что их задачи не совсем потоки. По ссылке во втором абзаце. http://static.rust-lang.org/doc/tutorial-tasks.html
| |
4.48, pavlinux (ok), 01:10, 04/04/2013 [^] [^^] [^^^] [ответить]
| –1 +/– |
> Нет. Там ещё вывод чисел 1, 2 и 3 в рандомном порядке.
Там вывод: Имя : Число
print(fmt!("%s says: '%d'\n", name, num))
Alice says: '1912979863'
Bob says: '102684397'
Carol says: '266919608'
| |
|
5.75, anonymous (??), 09:22, 04/04/2013 [^] [^^] [^^^] [ответить]
| +/– |
>> Нет. Там ещё вывод чисел 1, 2 и 3 в рандомном порядке.
> Там вывод: Имя : Число
А второго цикл не видите?
>for v.each |&num| {
Там будет что-то типа:
Alice says: 1
Alice says: 2
Alice says: 3
Bob says: 3
Bob says: 2
Bob says: 1
Carol says: 2
Carol says: 3
Carol says: 1
Вполне возможно, что таски ещё как-то на вывод повлияют.
| |
|
6.104, pavlinux (ok), 01:30, 05/04/2013 [^] [^^] [^^^] [ответить]
| +/– |
> Вполне возможно, что таски ещё как-то на вывод повлияют.
Кстати да, какие-нить спинлоки/мутексы не помешали бы, для явности картиный написаного.
Если do spawn { ... } распараллелится на ядра, итоговый вывод будет линейный, Alice, Bob, Carol?
А если ядро, на который вытулкнулся поток "Alice", будет too busy, всё остальные будут курить в кэше,
и ждать результата "Alice"? Или вытолкнутся из кэша, чтоб потом опять туда втолкнутся?!
| |
|
|
|
3.46, ... (?), 01:04, 04/04/2013 [^] [^^] [^^^] [ответить]
| +2 +/– |
1. Рандом из заданного диапазона.
2. Итерирование массива без индексов
3. Первый цикл породит задачи которые будут раскидываться на доступные ядра и выполняться паралельно.
| |
|
4.49, ... (?), 01:13, 04/04/2013 [^] [^^] [^^^] [ответить]
| +2 +/– |
> 1. Рандом из заданного диапазона.
> 2. Итерирование массива без индексов
> 3. Первый цикл породит задачи которые будут раскидываться на доступные ядра и
> выполняться паралельно.
Ошибся. Не рандом из заданного диапазона, а перемешанный случайно массив.
| |
4.50, pavlinux (ok), 01:31, 04/04/2013 [^] [^^] [^^^] [ответить]
| +/– |
> 1. Рандом из заданного диапазона.
> 2. Итерирование массива без индексов
> 3. Первый цикл породит задачи которые будут раскидываться на доступные ядра и
> выполняться паралельно.
Размер бинарников и скорость будеи сравнивать?
| |
|
3.57, Аноним (-), 03:47, 04/04/2013 [^] [^^] [^^^] [ответить]
| +/– |
> Они вот это изобразили?
Да, только как я понимаю - с многопроцессорностью.
| |
3.73, К.О. (?), 09:15, 04/04/2013 [^] [^^] [^^^] [ответить]
| +/– |
Подозреваю, что 'do spawn' запускает параллельные процессы (нити), а не гоняет цикл.
| |
3.83, другой аноним (?), 14:27, 04/04/2013 [^] [^^] [^^^] [ответить]
| +/– |
хреновый вариант хотя бы тем, что тебе если придется расширить массив, еще придется в другом месте кода забить и количество элементов ("... i < 3 ..."). Легко ошибиться и пойти чесать несуществующие элементы за границами массива
| |
|
2.56, Аноним (-), 03:46, 04/04/2013 [^] [^^] [^^^] [ответить]
| +/– |
> хоррош пример на сайте раста
Нормальный пример: лаконично и все понятно. Даже капча согласна, 00040 :).
| |
2.85, sdpoufwoe (?), 14:41, 04/04/2013 [^] [^^] [^^^] [ответить]
| –2 +/– |
>[оверквотинг удален]
>
> print(fmt!("%s says: '%d'\n", name, num))
>
> }
> }
> }
> }
> да чо уж там, зачем ваще букавки?
> (&$(@*/%$+*.(!$#,*^#!.$@^__#$&,#@+@!&!*(,)!*@^!_.)[*&^]_))
> по-моему, так куда понятнее.
Я вот х.ею с этого блока |...|. Нет чтобы как в нормальных языках, надо обязательно вводить какую-то новую загибулину, копируя не к месту раби да смолтолк.
| |
2.92, Аноним (-), 17:49, 04/04/2013 [^] [^^] [^^^] [ответить]
| +/– |
> .each |&name|
Подражание ruby во все поля, вот только с си-подобным синтаксисом такое выглядит несколько дико.
Для сравнения, в го для такого используется range:
for _, v := range arr {
// do something
}
| |
|
3.113, Аноним (-), 13:59, 05/04/2013 [^] [^^] [^^^] [ответить]
| +/– |
> Для сравнения, в го для такого используется range:
> for _, v := range arr {
> // do something
> }
Как по мне тут куда менее понятно что за нафиг.
| |
3.116, arisu (ok), 21:40, 05/04/2013 [^] [^^] [^^^] [ответить]
| +/– |
>> .each |&name|
> Подражание ruby во все поля
тю. как руби красть фичи у смолтолка — так можно, а как другим у руби — так нельзя? гыг.
| |
3.117, arisu (ok), 21:40, 05/04/2013 [^] [^^] [^^^] [ответить]
| +/– |
> Для сравнения, в го для такого используется range:
> for _, v := range arr {
> // do something
> }
жуть какая.
| |
|
|
1.10, Гость (?), 20:42, 03/04/2013 [ответить] [﹢﹢﹢] [ · · · ]
| +3 +/– |
Замечательная новость. Надеюсь кроме Гнусмаса ещё какие компании присоединятся.
| |
|
2.95, TbIK (ok), 19:47, 04/04/2013 [^] [^^] [^^^] [ответить]
| –1 +/– |
Их надо не сравнивать, а смешивать. Получится ржавое гумно. => не нужно.
| |
|
1.24, Аноным (ok), 22:29, 03/04/2013 [ответить] [﹢﹢﹢] [ · · · ]
| +2 +/– |
Замечательно, а то Мозилла одна одна-одинёшенька была против огромных корпораций с ВебКитом.
| |
|
|
3.63, Anton (??), 06:44, 04/04/2013 [^] [^^] [^^^] [ответить]
| +/– |
Не надейтесь, если Samsung уже портировал под Андроид, скоро будут кучи хомяков пользоваться.
| |
|
4.81, Аноним (-), 10:14, 04/04/2013 [^] [^^] [^^^] [ответить]
| +/– |
> Не надейтесь, если Samsung уже портировал под Андроид, скоро будут кучи хомяков
> пользоваться.
Этим? Хомяки?
Вряд ли.
| |
4.86, sdpoufwoe (?), 14:43, 04/04/2013 [^] [^^] [^^^] [ответить]
| –1 +/– |
> Не надейтесь, если Samsung уже портировал под Андроид, скоро будут кучи хомяков
> пользоваться.
Что-то смутно вспоминаю какие-то пляски Самсунга с не то Мигу нето еще с чем-то таким. Сколько всего кануло в лету? И это туда же канёт
| |
|
3.118, arisu (ok), 21:42, 05/04/2013 [^] [^^] [^^^] [ответить]
| +/– |
> а станет одна-одинёшенька с Rust
ежели гнусмас хотя бы поможет допилить rust — это уже будет очень хорошо.
| |
|
|
|
2.30, VoDA (ok), 23:03, 03/04/2013 [^] [^^] [^^^] [ответить]
| +/– |
И желательно статическая типизация с проверкой совместимости типов во время компиляции ;)
| |
2.87, sdpoufwoe (?), 14:44, 04/04/2013 [^] [^^] [^^^] [ответить]
| –1 +/– |
> Ну наконец-то, статическая типизация. Надеюсь этот язык сможет стать альтернативой js.
А как же альтернатива от Google, а от MS ?!
| |
|
1.32, Аноним (-), 23:16, 03/04/2013 [ответить] [﹢﹢﹢] [ · · · ]
| +8 +/– |
>Samsung
>Автоматическое управление памятью
Ох, не отдавал бы я написание сборщика мусора ребятам из Самсунг...
| |
1.41, Mr.Mistoffelees (?), 00:49, 04/04/2013 [ответить] [﹢﹢﹢] [ · · · ]
| +1 +/– |
> Rust поддерживает смесь императивных процедурных и объектно-ориентированных
> методов с такими парадигмами, как функциональное программирование и модель
> акторов, а также обобщённое программирование и метапрограммирование, в
> статических и динамических стилях.
"Я понял. Рай - это компот." (К. Чуковский, "От двух до пяти")
| |
|
2.59, Crazy Alex (ok), 04:57, 04/04/2013 [^] [^^] [^^^] [ответить]
| +/– |
Да брешут они как собаки. Функциональщина, прикидывающаяся плюсами. Ни императива нормального (даже for нет - спасибо хоть за то, что break сделали, в отличие от скалы), ни шаблонов - та пародия, что в них есть, совершенно ужасна - в джаве и то более приличные.
| |
|
3.62, Аноним (-), 06:39, 04/04/2013 [^] [^^] [^^^] [ответить]
| +3 +/– |
>даже for нет
И хорошо: for, в отличие от loop (while), потенциальные грабли.
| |
|
|
5.98, Crazy Alex (??), 21:35, 04/04/2013 [^] [^^] [^^^] [ответить]
| –1 +/– |
Плевать, что избыточная - лишь бы удобно было. На практике ортогональность больше проблем создаёт, чем пользы.
| |
|
4.99, Crazy Alex (??), 21:36, 04/04/2013 [^] [^^] [^^^] [ответить]
| +/– |
действительно - зачем собирать инициализацию, проверку условия и переход к следующей итерации вместе - лучше размазать в вайле.
| |
|
5.106, Аноним (-), 06:19, 05/04/2013 [^] [^^] [^^^] [ответить]
| +1 +/– |
>лучше размазать в вайле.
не лучше, а гибче. в сях по крайней мере...
| |
|
|
3.65, Аноним (-), 07:23, 04/04/2013 [^] [^^] [^^^] [ответить]
| +4 +/– |
> ни шаблонов - та пародия ...
Чего-то ты подгоняешь, чувак
trait Drawable { fn draw(&self); }
fn draw_all<T: Drawable>(shapes: ~[T]) {
for shapes.each |shape| { shape.draw(); }
}
> Функциональщина, прикидывающаяся плюсами.
На редкость прям функциональщина, ога
impl Drawable for Circle { fn draw(&self) { ... } }
impl Drawable for Rectangle { fn draw(&self) { ... } }
| |
|
4.97, Crazy Alex (??), 21:34, 04/04/2013 [^] [^^] [^^^] [ответить]
| +/– |
Я ж говорю - пародия. Ни частичной специализации, ни дефолтных параметров, ни variable-length templates, ни не-типовых шаблонных параметров...
| |
|
5.107, Аноним (-), 06:44, 05/04/2013 [^] [^^] [^^^] [ответить]
| +2 +/– |
>Ни частичной специализации
а чего partial specialization-то только?
т.е. explicit specialization уже и не нужно? )
по мне - так скорее наоборот )
| |
|
|
7.109, Аноним (-), 13:10, 05/04/2013 [^] [^^] [^^^] [ответить]
| +1 +/– |
частный случай, порой ведущий к:
- дальнейшим трудноотлавливаемым багам в логике
- отторжению принципа keep it simple, stupid
- несварению некоторыми компиляторами
| |
|
|
|
|
|
|
1.71, noize (ok), 08:28, 04/04/2013 [ответить] [﹢﹢﹢] [ · · · ]
| +1 +/– |
Если ВНЕЗАПНО окажется, что servo в 100500 раз быстрее других браузерных движков, то гуглу срочно придётся запиливать свой ответ на этом вашем Go. Не факт, кстати, что уже не пилят.
| |
|
2.89, Толстый (ok), 15:29, 04/04/2013 [^] [^^] [^^^] [ответить]
| +/– |
Go убогонький язык, на нем такого масштаба софт не выйдет написать.
| |
|
3.94, Аноним (-), 17:58, 04/04/2013 [^] [^^] [^^^] [ответить]
| +/– |
> Go убогонький язык, на нем такого масштаба софт не выйдет написать.
Единственное, в чём го сильно уступает тому же расту — отсутствие джинериков.
| |
|
2.91, lucentcode (ok), 17:35, 04/04/2013 [^] [^^] [^^^] [ответить]
| –1 +/– |
Не верю, что смена ЯП может добавить скорости их движку. А вот хорошая реализация многопоточной работы - это то, чего Firefox очень не хватает.
| |
|
1.77, Аноним (-), 09:41, 04/04/2013 [ответить] [﹢﹢﹢] [ · · · ]
| +/– |
все эти "наш язык поддерживает функциональную парадигму" - маркетинговый буллшит. Эту парадигму может прекрасно поддерживать любой язык, потому что она реализуется на уровне прикладных библиотек :)
| |
|
2.100, Crazy Alex (??), 21:38, 04/04/2013 [^] [^^] [^^^] [ответить]
| +/– |
Скорее да, чем нет, но когда эти фишки поддержаны языком и, соответственно, имеют приятный синтаксис - хорошо. А так - вон в плюсах на функторах карриинг делается, а толку - он же страшен получается.
| |
2.102, svv (??), 21:41, 04/04/2013 [^] [^^] [^^^] [ответить]
| +/– |
Увы, с кэррированием и частичным применением придется поплясать с бубном на многих ЯВУ.
| |
|
1.90, lucentcode (ok), 17:34, 04/04/2013 [ответить] [﹢﹢﹢] [ · · · ]
| –1 +/– |
Ждём с нетерпением. Всем верстальщикам добавится геморроя, но текущий движок Firefox не использует преимущества многопроцессорных машин в должной мере. Поэтому да здравствует новый движок!
| |
1.96, TbIK (ok), 20:01, 04/04/2013 [ответить] [﹢﹢﹢] [ · · · ]
| –3 +/– |
Ребят, я вот не понимаю, причём тут вообще многопоточность?? Сейчас вы все сидите в каком-то из браузеров. Если не брать откровенно лажовый рендерер Firefox, то ВСЕ браузеры работают отлично! Я ни разу не видел, чтобы браузер "задыхался" на одном CPU, загружая его под 99%! (а ведь именно это они хотят там "наоптимизировать")
Напрашивается вывод, что это NIH + желание контролировать продукт. Вопрос только в том, что от перемены мест лажовость разрабов не меняется и следующий продукт опять будет страдать (если вообще выйдет) каким-нть "несоответствием современности".
Если кто помнит, мы запускали Netscape на 80386 (4 Мег ОЗУ) - никто и никогда не ныл, что "медленно" или "память жрёт". Потому что делали ПРОФЕССИОНАЛЫ. А теперь им то язык не тот, то ядер мало, то ещё что в танце мешает... лопухи.
| |
|
2.101, Crazy Alex (??), 21:39, 04/04/2013 [^] [^^] [^^^] [ответить]
| +2 +/– |
во-первых, тупило, еще еще и как. Во-вторых - в тех нетскейпах старнички показывало, а сейчас новорят веб-приложений напихать. Ну и да, хромиум отлично умееет выжрать процессор.
| |
|
|