Вы, кстати, сами чудесно демонстрируете, зачем начинающие программисты учат ассемблер.
Развитие вычислительной техники представляет собой непрерывную цепочку компромиссов — между производительностью и занимаемой памятью, между производительностью и точностью, между производительностью и ценой… Для того, чтобы обсуждать принятое однажды решение (например, пресловутый стандарт IEEE 754), нужно знать альтернативы этому решению, их достоинства и недостатки. Для этого и следует понимать основы архитектуры ЭВМ.
Вы хотите всё и сразу, но так не бывает. «Высокоуровневый» язык программирования прячет от Вас ряд деталей реализации, но нельзя рассчитывать, что он будет прятать их все и всегда. И, когда сквозь дырку в абстракции языка начинают лезть ошибки округления, проблемы с кодировкой и т. п., Вы должны знать, что происходит.
Постарайтесь — как профессиональный разработчик на PHP — на досуге понять, почему представление чисел с плавающей точкой, допускающее погрешность, повсеместно используется. Вам будет интересно узнать, насколько SSE-инструкции Вашего процессора быстрее, чем это:
typedef enum {PLUS, MINUS} sign;
typedef struct bc_struct *bc_num;
typedef struct bc_struct
{
sign n_sign;
int n_len; /* The number of digits before the decimal point. */
int n_scale; /* The number of digits after the decimal point. */
int n_refs; /* The number of pointers to this number. */
bc_num n_next; /* Linked list for available list. */
char *n_ptr; /* The pointer to the actual storage.
If NULL, n_value points to the inside of
another number (bc_multiply...) and should
not be "freed." */
char *n_value; /* The number. Not zero char terminated.
May not point to the same place as n_ptr as
in the case of leading zeros generated. */
} bc_struct;
Полюбуйтесь на свой BC Math. Если бы числа с плавающей точкой всегда представлялись в таком виде, мы бы до сих пор сидели в каменном веке.
Ну да. Ещё разработчик ЯП должен устранять проблемы со сложностью алгоритмов, объёмом оперативной памяти, ОО проектированием и всем прочим, что PHP-программист не захотел выучить.
Вы готовы простить интерпретатор вообще за наличие округления? А то оно же в принципе не нужно. Ограниченность ресурсов ЭВМ — это низкоуровневые детали реализации, они не должны касаться PHP-программиста!
На досуге попытайтесь изобрести своё представление двоичного числа с плавающей точкой, в котором этой «ошибки» не будет. Это интересно, Вас ждёт ряд сюрпризов.
Разделим второе множество на два: [1, 5] и всё остальное (1). Множество [1, 5] — замкнутое (любая точка из множества A=R\[1,5] принадлежит A вместе с некоторой окрестностью). Множество является замкнутым тогда и только тогда, когда оно содержит все свои предельные точки (отсылаю к доказательству соответствующего критерия). В любой окрестности предельной точки множества содержится бесконечное множество точек этого множества (по определению предельной точки).
Выберем некоторую окрестность E точки 0.(9). Пусть радиус этой окрестности r=0.0… k...01 (k нулей после запятой). 0.(9) + r = 1.0… k...00(9). Таким образом, в выбранной окрестности E лежит бесконечное множество [1, 1.0… k...00(9)) точек из [1, 5]. Из произвольности выбора E следует то же заключение для любой окрестности. Следовательно, 0.(9) — предельная точка множества [1, 5]. Так как [1, 5] замкнуто, то оно содержит все свои предельные точки, то есть и 0.(9). Из разбиения (1) следует, что 0.(9) принадлежит множеству [1, +inf).
Думается, бОльшая доля целевой аудитории Одноклассников спокойно воспримет и это, и попапы, и многое другое. Это для вас гадость, а многие (возможно, включая создателей ОК) уже давно привыкли к Зайцам.нет и подобным порталам. «Разруха не в клозетах (порталах), разруха в головах».
В сущности, от «юзабилити» ОК до подобных вещей и так оставалось полшага.
Гики потому и пользуются терминалом, что, потратив однажды время на его освоение, они уже знают, что консоль быстрее и удобнее.
Как это жизненно, чёрт побери.
:))
Развитие вычислительной техники представляет собой непрерывную цепочку компромиссов — между производительностью и занимаемой памятью, между производительностью и точностью, между производительностью и ценой… Для того, чтобы обсуждать принятое однажды решение (например, пресловутый стандарт IEEE 754), нужно знать альтернативы этому решению, их достоинства и недостатки. Для этого и следует понимать основы архитектуры ЭВМ.
Вы хотите всё и сразу, но так не бывает. «Высокоуровневый» язык программирования прячет от Вас ряд деталей реализации, но нельзя рассчитывать, что он будет прятать их все и всегда. И, когда сквозь дырку в абстракции языка начинают лезть ошибки округления, проблемы с кодировкой и т. п., Вы должны знать, что происходит.
Ещё рекомендую прочесть local.joelonsoftware.com/mediawiki/index.php/Закон_Дырявых_Абстракций — Джоэл умнее меня, и язык у него подвешен лучше.
Полюбуйтесь на свой BC Math. Если бы числа с плавающей точкой всегда представлялись в таком виде, мы бы до сих пор сидели в каменном веке.
Изучите вопрос, прежде чем спорить.
Вы готовы простить интерпретатор вообще за наличие округления? А то оно же в принципе не нужно. Ограниченность ресурсов ЭВМ — это низкоуровневые детали реализации, они не должны касаться PHP-программиста!
На досуге попытайтесь изобрести своё представление двоичного числа с плавающей точкой, в котором этой «ошибки» не будет. Это интересно, Вас ждёт ряд сюрпризов.
Разделим второе множество на два: [1, 5] и всё остальное (1). Множество [1, 5] — замкнутое (любая точка из множества A=R\[1,5] принадлежит A вместе с некоторой окрестностью). Множество является замкнутым тогда и только тогда, когда оно содержит все свои предельные точки (отсылаю к доказательству соответствующего критерия). В любой окрестности предельной точки множества содержится бесконечное множество точек этого множества (по определению предельной точки).
Выберем некоторую окрестность E точки 0.(9). Пусть радиус этой окрестности r=0.0… k...01 (k нулей после запятой). 0.(9) + r = 1.0… k...00(9). Таким образом, в выбранной окрестности E лежит бесконечное множество [1, 1.0… k...00(9)) точек из [1, 5]. Из произвольности выбора E следует то же заключение для любой окрестности. Следовательно, 0.(9) — предельная точка множества [1, 5]. Так как [1, 5] замкнуто, то оно содержит все свои предельные точки, то есть и 0.(9). Из разбиения (1) следует, что 0.(9) принадлежит множеству [1, +inf).
Угу?
Сам минусов не ставил.
В сущности, от «юзабилити» ОК до подобных вещей и так оставалось полшага.