Как стать автором
Обновить
5
0
Рузин Алексей @Ruzin

Разработчик

Отправить сообщение
Выбрал 7 (для C), потом решил проверить:

20:33:19 {ruzin@MacBook-Ruzin}$~> cat z.c

#include <stdio.h>

int main() {
	int x = 3;
	x += x++;

	printf("%i\n", x);
	return 0;
}


(kit)20:32:54 {ruzin@MacBook-Ruzin}$~> cc z.c
(kit)20:32:58 {ruzin@MacBook-Ruzin}$~> ./a.out
7

=========
в С# не проверял.

Не пойму, почему x += n должно разворачиваться компилятором в x = x + n?

В ASM вроде есть добавления чего-то к чему-то уже существующему и сама операция += как раз сделана, чтобы минимизировать количество команд ASM.
=========

(kit)20:40:16 {ruzin@MacBook-Ruzin}$~> CFLAGS="-g -O0" make z
cc -g -O0 z.c -o z

(kit)20:40:49 {ruzin@MacBook-Ruzin}$~> gdb z
GNU gdb 6.3.50-20050815 (Apple version gdb-1822) (Sun Aug 5 03:00:42 UTC 2012)
Copyright 2004 Free Software Foundation, Inc.
GDB is free software, covered by the GNU General Public License, and you are
welcome to change it and/or distribute copies of it under certain conditions.
Type «show copying» to see the conditions.
There is absolutely no warranty for GDB. Type «show warranty» for details.
This GDB was configured as «x86_64-apple-darwin»...Reading symbols for shared libraries… done

(gdb) break main
Breakpoint 1 at 0x100000f16: file z.c, line 4.
(gdb) run
Starting program: /Users/ruzin/z
Reading symbols for shared libraries +… done

Breakpoint 1, main () at z.c:4
4 int x = 3;

(gdb) disassemble
Dump of assembler code for function main:
0x0000000100000f00 <main+0>:	push   %rbp
0x0000000100000f01 <main+1>:	mov    %rsp,%rbp


0x0000000100000f04 <main+4>:	sub    $0x10,%rsp
0x0000000100000f08 <main+8>:	lea    0x5f(%rip),%rdi        # 0x100000f6e

0x0000000100000f0f <main+15>:	movl   $0x0,-0x4(%rbp)
0x0000000100000f16 <main+22>:	movl   $0x3,-0x8(%rbp)        # x = 3
0x0000000100000f1d <main+29>:	mov    -0x8(%rbp),%eax        # x (3) -> register EAX (3)
0x0000000100000f20 <main+32>:	mov    %eax,%ecx              # register EAX (3) -> register ECX (3)
0x0000000100000f22 <main+34>:	add    $0x1,%ecx              # register ECX (3) += 1 // register ECX (4)
0x0000000100000f28 <main+40>:	mov    %ecx,-0x8(%rbp)        # register ECX (4) -> x (4)
0x0000000100000f2b <main+43>:	mov    -0x8(%rbp),%ecx        # x (4) -> register ECX (4)
0x0000000100000f2e <main+46>:	add    %eax,%ecx              # register ECX (4) += register EAX (3) // register ECX (7)
0x0000000100000f30 <main+48>:	mov    %ecx,-0x8(%rbp)        # register ECX (7) -> x (7)
0x0000000100000f33 <main+51>:	mov    -0x8(%rbp),%esi
0x0000000100000f36 <main+54>:	mov    $0x0,%al
0x0000000100000f38 <main+56>:	callq  0x100000f4e <dyld_stub_printf>
0x0000000100000f3d <main+61>:	mov    $0x0,%ecx
0x0000000100000f42 <main+66>:	mov    %eax,-0xc(%rbp)
0x0000000100000f45 <main+69>:	mov    %ecx,%eax
0x0000000100000f47 <main+71>:	add    $0x10,%rsp
0x0000000100000f4b <main+75>:	pop    %rbp
0x0000000100000f4c <main+76>:	retq

End of assembler dump.
(gdb)
Ответьте себе на два вопроса:
— что мне нравится делать больше всего
— что у меня получается лучше всего (тут можно спросить у коллег/знакомых — в нейтральной обстановке)

Наибольшую удовлетворение для себя и пользу для других можно занимаясь этим (если ответы совпадают).
Если не совпадают, то надо зарабатывать на жизнь вторым, прокачивая скилы в первом. Тут тоже два варианта:
«плавный» — если есть обязательства (семья, пожилые родители и т.п.) или «по бразильской системе».
Каждый предприниматель, открывая свой первый бизнес, не умеет этого делать ;-)
Открывайте и учитесь!

Не могу дать ссылки на источники, но пара забавных моментов зафиксировалась в голове:
— первый год рождения празднует только 10% открытых бизнесов
— десятилетие празднуют 10% от выживших за первый год
— в среднем у предпринимателей 2,5-ный по счету бизнес успешный

Статью нужно отфоматировать хотя бы также (тяжело читать): habrahabr.ru/post/144729/
Если речь про одного и того же профессора, то два факта:
1. убил себя или своего брата/сестру
2. тот, кого убили, был профессором
Сколько (минимум!) вопросов надо задать, чтобы узнать, где крестик?
Ответ — «4». Во всех подобных играх минимальное число вопросов будет равно информационной энтропии.
При этом не имеет значения, какие вопросы задавать.


Правильно будет:

Сколько (минимум!) вопросов надо задать, чтобы гарантированно узнать, где крестик?
Ответ — «4». Во всех подобных играх минимальное число вопросов будет равно информационной энтропии.
При этом не имеет значения, какие вопросы задавать.


Очень даже имеет значение, какие вопросы задавать. Просто представьте, если задавать
вопросы типа: «а в первой клетке есть? а во второй есть?.. а в 16-й есть?»

Где автограф?
Там вообще кто-нибудь работает? На картинках людей почти нигде нет…
По мне так это типичный пример плохой архитектуры.
Если у вас такое случилось, то надо сесть и подумать над сутью своих классов, возможно у них есть что-то общее.

Вот если бы компьютеры были бы аналоговыми — и вычисления производились «решением дифферециальных уравнений», то такие связи были бы уместны…
Про ужаснее я бы поспорил :)
Предполагаю волну критики, но справедливости ради не могу молчать! :)

Давайте не путать язык программирования (синтаксис), API (спецификацию) и библиотеку (реализацию API).

Все три сущности — продукт интеллектуальной деятельности. Причем не абстрактная идея, а вполне себе конкретная реализация. Все три сущности могут и должны (на усмотрение автора) быть объектом защиты.

По-моим личным убеждениям, мир был бы лучше если бы патентов не было вообще, но в сегодняшних реалиях, чем отличается язык программирования от технологии получения специфичного сплава метталов или формулы таблетки для лечения простуды?

Если я правильно понял автора статьи, то претензии Oracle к Google не к языку программирования («пусть они (Google) используют синтаксис Java, но за наше API пасть порвем»), а к использованию спецификации-API (т.к. к реализации у них не может быть претензий — Google все переписал).

Помнится в свое время SUN заставил Microsoft использовать свою виртуальную машину, а не MS'овскую. Чем этот спор отличается от того, что происходит сейчас? (Oracle хочет много денег, SUN хотел пропихнуть свою разработку на Windows, не допустив размытия/фрагментации своей платформы).

Также можно вспомнить как долго IBM упрашивала SUN сделать Java открытой платформой.
Но, похоже, акционеры SUN не хотели терять деньги и вот, на тебе, нашелся таки покупатель, который сейчас встряхнет индустрию.

Кстати по российскому законодательству, если 20% (могу соврать, но по-моему эта цифра) произведения отличаются — то оно считается самостоятельным :) Т.е. Google достаточно поменять 20% API и все будет в шоколаде :)

В качестве прикола, а если перед каждым классом/методом поставить префикс g_… это уже будет считаться другим API? ;)
Эмоция = (результат — ожидание) / усилия
Не пойму, кому интересен школьник, когда раскручивают порнозвезду :)
Это и есть PR-ход!
По уставу в армии запрещено наказывать взвод, за проступок одного военнослужащего.
Как на практие — не знаю, полагаю наказывают только-так.
(Про содержание устава знаю из военной кафедры).
С одной стороны да, с другой — нет.

Сами библиотеки не влияют на скорость исполнения, однако время на создание новых процессов, подтягивающих эти библиотеки (и высвобождение ресурсов), увеличивается.

Я лишь хотел намекнуть автору, что архитектура систем, приведенная на картинках, для обоих вариантов — одна и та же.

Node.JS не блокирует HTTP-запросы не потому, что у него «архитектура особая», а потому что он позволяет параллельно поднимать больше обслуживающих процессов/тредов.

Интерес же представляет «магия», которая происходит внутри Node.JS, которая позволяет экономично расходовать ресурсы ОС/сервера по сравнению с CGI/PHP.

И да, для того, чтобы обслуживать массу запросов, вовсе нет необходимости поднимать кучу процессов/тредов — посмотрите на тот же Nginx — если не изменяет память: 4 процесса по 1000 обслуживаемых соединений.
ИМХО, ерунда какая-то.

Я могу представить, что node.js потребляет меньше памяти, что он «как-то лучше организован в потоках», но, простите, как автор считает если Client (browser) подключается к Server (web-server) по HTTP, то сетевое соединение (TCP) оно продолжает держаться на «долгих запросах, использующих БД» или нет?

ИМХО отказом новых коннектов занимается именно веб-сервер, который принимает входящие запросы. Их предел установлен на уровне apache/nginx/lighttpd/etc. Что веб-сервер делает дальше с этим запросом (передает CGI-скрипту, запускает дочерний процесс/тред) никого не волнует.

Если автору на его nginx одновременно придет 16000 «долгих» запросов, для которых Node.Js будет ждать ответа от БД. Node.JS все равно «подвиснет» с 15000 и заблокирует все остальные 1000 «легких» (в очереди socket'а), если они вообще не будут отправлены «домой» (connection refused).

Более интересно понять почему Node.Js такой легкий и быстрый… Возможно потому что в нем почти ничего нет? (никаких библиотек)

Это как написать на С web-сервер, который на любой запрос будет отвечать «Hello, world!» и закрывать соединение. Таких и 100 000 в секунду можно обработать (если канал позволит)…
Нет, мне это тоже при беглом просмотре бросилось в глаза.
Вот когда он шуметь так перестанет…
В свое время W3C со своим CSS2 очень сильно подкачала.

Пример: представьте, что вам прислали посылку по почте. Вы спрашиваете: «каков ее размер?» Вам говорят: «1,5 метра». Вы заказали Газель и приезжаете на почту. Вам вытаскивают вашу посылку но она в ширину 2 метра (не влезет в Газель)! Вы: «что за фигня?». А вам отвечают: «Ну как что, посылка 1,5 метра, еще по 24 см. пенопласта, и по 1 см. картона»…

Единственный браузер, где поколдовав с DOCTYPE, можно было установить ширину блока width == border+padding+inner_width был IE!!!

Я хотел бы знать по-фамильно, кто придумал, что блок width == inner_width, а сам элемент будет занимать width+padding+border? Там (в W3C) кто-нибудь хоть одну страничку руками сверстал?

Хорошо хоть в CSS3 догадались сделать возможность выбрать математику для блочной модели и сделать ее естественной.

— Теперь по сути статьи, поддержка де-факто «хитрых» фичей производителей браузеров, ИМХО, не является чем-то «УЖАС УЖАС УЖАС», это нормально. Важно только то, чтобы предполагаемое поведение (со всеми нюансами было задокументировано и публично открыто). А префикс -webkit- — ну пусть останется как памятник тем ребятам, которые придумали столь замечательную фишку :) W3C, если сочтет нужным, может этот префикс убрать и стандартизировать (пусть даже с исправлениями опубликовать на своем сайте, как часть стандарта). Производители браузеров добавят поддержку фич с префиксами -webkit- и без них по стандарту W3C.

И последнее. Собака лает — караван идет. Если Google/Apple считают, что им такие штуки нужны, а webmaster'а «потянулись» их использовать, то другим производителям ничего не остается — будут поддерживать -webkit-. Это — нормально!
Строго говоря в N-мерном пространстве треугольники останутся треугольниками (имеется ввиду декартово пространство). Мера «расстояния» между двумя точками — это некоторая функция F (я привел ее для плоскости, т.е. двухмерного пространства).

К сожалению, если исходить из моих уточнений к исходной формулировке Вашей задачи, мне в голову не приходит ни одного решения (алгоритма), кроме простого перебора: O(N^3) на поиск треугольников + O(N^2) на поиск групп точек по треугольникам O(N) на поиск наиболее подходящих скоплений.

16 млн ^ 3 — выглядит, как некоторая бесконечность :)

Информация

В рейтинге
Не участвует
Откуда
Москва, Москва и Московская обл., Россия
Зарегистрирован
Активность