Pull to refresh

Я ненавижу константы в Ruby

Reading time3 min
Views9.8K

Ruby — очень сложный язык программирования. Он невероятно красивый и читабельный, однако у него есть множество тем и особенностей, которые могут оставаться "темным лесом" даже для опытного Ruby-разработчика. Одной из таких тем является поиск констант.


Несмотря на заголовок, гнева в посте не будет.

Читать дальше →
Total votes 18: ↑17 and ↓1+16
Comments14

Как аспирант доказал давнюю гипотезу о простых числах

Reading time6 min
Views9.8K

26-летний Джаред Дукер Лихтман доказал гипотезу, которая связывает простые числа с широким классом «примитивных» множеств. Для его научного руководителя это стало «настоящим шоком». Подробности рассказываем к старту флагманского курса по Data Science.

Читать далее
Total votes 19: ↑16 and ↓3+13
Comments13

Скорость звука: каков ее предел?

Reading time10 min
Views22K


Одна из основных задач какой-либо точной науки заключается в измерении и объяснении тех или иных процессов, а также их участников. За многие годы исследований, расчетов и споров научное сообщество пришло к пониманию того, что существуют определенные ограничения в некоторых явлениях. К примеру, скорость света в вакууме равна 299 792 458 м/с. Согласно специальной теории относительности, ничто не может двигаться быстрее. Другими словами, мы имеем верхний скоростной лимит для света. Однако такой лимит для скорости звука пока не был установлен. Ученые из Лондонского университета королевы Марии (Англия, Великобритания) провели расчеты, результатом которых стало открытие верхнего предела скорости звука. Что стало основой расчетов, каковы их результаты, и в каких областях можно применить новообретенные знания? Ответы на эти вопросы мы найдем в докладе ученых. Поехали.
Читать дальше →
Total votes 42: ↑40 and ↓2+38
Comments23

Немного про «ПИ» и другие встроенные константы

Level of difficultyEasy
Reading time5 min
Views7.3K

Нет-нет, я не собираюсь рассказывать все прибаутки о константах, вроде того, как связано число E и год рождения Льва Толстого. Речь о другом.
Как-то один мой коллега попросил меня «свежим взглядом» посмотреть его программу. Он проводил проверочный расчет, и в итоге должна была получиться единичная матрица. На месте нулевых элементов оказались величины, близкие к нулю – что-то около 10**-17, что можно объяснить погрешностью расчета и исходных данных. Но у трех элементов было значение 10**-7. Вопрос состоял в том, а, собственно, почему так? ведь все формулы «симметричны».

Читать далее
Total votes 20: ↑18 and ↓2+16
Comments22

Вычисление имен свойств во время выполнения в языке Java

Reading time3 min
Views8.4K
Некоторые инструменты могут использовать имена свойств виде значений типа String. Обычно они существуют как константы, заданные литералами. Что же не так? А вот что: во время рефакторинга имена свойств могут измениться, более того, свойства могут вообще исчезнуть. А в константах останутся старые, неактуальные значения.

Можно понадеяться на внимание уставшего разработчика, или на ненаписанные тесты. Но есть более надежный способ.
Читать дальше →
Total votes 20: ↑16 and ↓4+12
Comments11

Вычислите длину окружности

Reading time6 min
Views90K
«Пожалуйста, напишите на C++ функцию, которая получает диаметр круга как float и возвращает длину окружности как float».

Звучит как задание на первой неделе курса по C++. Но это только на первый взгляд. Сложности возникают уже на первых этапах решения задачи. Предлагаю рассмотреть несколько подходов.

Студент: Как вам такой вариант?

#include <math.h>
float CalcCircumference1(float d)
{
    return d * M_PI;
}

Преподаватель: Да, этот код может нормально откомпилироваться. А может и нет.
Читать дальше →
Total votes 155: ↑139 and ↓16+123
Comments141

И ещё раз про уникальные константы

Reading time3 min
Views12K
Прочитав статью «Вычислите длину окружности», которая, в общем-то, крайне позабавила меня своим стилем, и узнав для себя кое-что новое, я стал несколько сомневаться в достаточной подробности предложенной информации. Всё-таки компиляторов довольно много, систем тоже немало, а в статье как-то навеяно Windows и Visual Studio (на правах ИМХО).
Читать дальше →
Total votes 23: ↑23 and ↓0+23
Comments8

Константы не меняются: небольшой экскурс в глубины dotNet

Reading time2 min
Views11K
image Приветствую. Недавно я наткнулся на статью товарища Dywar «Интересные заметки по C# и CLR» и заинтересовался пунктом 13:

«Константы помещаются в метаданные сборки, поэтому если были изменения, нужно перекомпилировать все использующие ее сборки. Т.к. DLL с константой может даже не загружаться.»

Да ладно, подумал я, и полез ставить эксперименты. Создал проект TestConstants, в нем класс,

public class Master
    {
        public const string Const = "Hello world";
    }

затем проект TestConstantsSlave,

static void Main()
        {
            Console.WriteLine(Master.Const);
            Console.ReadKey();
        }

Заменил константу на “Hello habr”, перебилдил основной проект, запустил по F5…
Читать дальше →
Total votes 29: ↑19 and ↓10+9
Comments18

XML + CSS = счастье

Reading time4 min
Views12K
Возрадуйтесь, дети мои, ибо пришёл я к вам с миром и богатыми дарами. Нет, я не принёс вам того, чего вы не видели. И даже не принёс того, чего вы не имели. От чистого сердца вручаю вам то, что всегда лежало у вас под ногами, но вы не замечали того, брезгливо перешагивая, пробегая мимо по своим, несомненно самым важным, делам.

Константы! Да, ваши чаяния достигли моих ушей, пробрались в глубины души и вырвали наружу эти прекрасные создания, позволяющие синхронно менять связанные значения в разных частях файла.

Примеси! Я же знаю, вы так устали без наследования. Приходится внедрять лишние классы в элементы или даже, переходить на тёмную сторону силы — копипастить по чёрному.

Отныне! Ваша душа будет чиста как у младенца. Руки в золоте как у царевичей. Дети послушными и приветливыми.

а теперь приступим к съёмкам порева
Total votes 128: ↑98 and ↓30+68
Comments53

Извлекаем константы с кристалла математического сопроцессора 8087

Reading time10 min
Views17K
В 1980 году Intel представила чип 8087 для ускорения обработки чисел с плавающей запятой на 8086-х процессорах, и его использовали в оригинальном IBM PC. Поскольку первые микропроцессоры работали только с целыми числами, арифметика с числами с плавающей запятой была медленной, а с трансцендентными функциями вроде арктангенса или логарифмов дела обстояли ещё хуже. Добавление чипа сопроцессора 8087 к системе было способно ускорить операции с числами с плавающей запятой до ста раз.

Я вскрыл чип 8087 и сделал несколько его фотографий под микроскопом. На фото ниже показан крохотный кремниевый кристалл чипа. По его бокам крохотные проводники соединяют его с 40 внешними ногами. Разметка основных функциональных блоков на картинке сделана мною благодаря реверс-инжинирингу. Если внимательно изучить чип, то можно извлечь из его ПЗУ различные константы – такие числа, как π, используемые чипом в вычислениях.


Кристалл чипа от Intel 8087 для работы с плавающей запятой с отмеченными основными функциональными блоками. ПЗУ с константами отмечен зелёным. Кликабельно.
Читать дальше →
Total votes 71: ↑70 and ↓1+69
Comments13

Java Core для самых маленьких. Часть 3. Переменные

Reading time7 min
Views20K

В этой статье мы говорим о переменных и связанных с ними темами!

Научимся создавать переменные и константы.
Узнаем что такое инициализация переменных.
Поговорим о литералах.
Выполним преобразование и приведение типов данных

Читать далее
Total votes 9: ↑3 and ↓6-3
Comments15

Константность в C++

Level of difficultyMedium
Reading time31 min
Views11K


Продолжаем серию «C++, копаем вглубь». Цель этой серии — рассказать максимально подробно о разных особенностях языка, возможно довольно специальных. Это седьмая статья из серии, список предыдущих статей приведен в конце в разделе 10. Серия ориентирована на программистов, имеющих определенный опыт работы на C++. Данная статья посвящена концепции константности в C++.


Переменные являются основой любого языка программирования. Если значение переменной нельзя изменить после инициализации, то такие переменные называются неизменяемыми (immutable) переменными или константными переменными или просто константами. Константные переменные в том или ином виде поддерживаются во всех языках программирования и играют в них важную роль. Такие переменные помогают компилятору оптимизировать код, улучшают читаемость и надежность кода, позволяют выявлять бОльшее количество ошибок на стадии компиляции. Константы помогают решать проблемы, связанные с многопоточным доступом к переменным. Использование константных переменных влияет на проектные решения в объектно-ориентированном программировании, а функциональное программирование изначально исходит из неизменяемости используемых переменных.


В C++ концепции константности уделяется значительное место. Для переменных используется два вида константности, имеются ссылки и указатели на константу, константные функции-члены, константные итераторы. Попробуем разобраться во всех этих понятиях.

Читать дальше →
Total votes 16: ↑16 and ↓0+16
Comments24