Pull to refresh
2
0
Александр Воронин @defenestrator

User

Send message
Есть ли риск стать самому токсичным в результате? Эмоции — важная часть человеческого общения, в том числе и рабочего. При чем как положительные так и отрицательные. Избавившись от отрицательных эмоций как таковых не получу ли я на выходе отсутствие положительных эмоций от достижения цели?
JavaScript изначально не предназначался для создания мобильных приложений.
В целом — www.youtube.com/watch?v=clKi92j6eLE
С нашим законодательством совместимо только наше правительство.
Никаких шуток. Тут показано, что не смотря на то, что в PHP ввели кучу всяких фишек вроде наследования, интерфейсов и тому подобного «ООП» толку от них мало, если тот, кто работает с твоим кодом без понятия о чем идет речь. Это хорошо подходит под пункт "PHP построен, чтобы продолжать фурычить при любых обстоятельствах." Я несколько раз сталкивался с подобным поведением в больших проектах — заменяем реализацию интерфейса и получаем полную лажу. Не знаю, как повлияет введение traits в 5.4, но мне думается, что это приведет к еще большему хаосу. Как идея traits хороши, но это сильно похоже на жесткий батхерт по поводу множественного наследования. А от того, как эту фичу станут использовать «домохозяйки» в будущем у меня на жопе волосы шевелятся… :)
Белки истерички.
Хорошо, что статья не затрагивает ООП аспекты этого чудесного языка pastebin.com/qS1TmreR :)
Не соглашайся, тогда их оштрафуют и посадят всех… ;)
Ежели так широко рассматривать понятие «персональные данные», то можно любой телефон с записной книжкой, а если смотреть шире, то любой список контактов, входящий во все месенджеры, почту и тп, можно рассматривать как базу данных, содержащую персональные данные. Следовательно дружно все идем регистрироваться!

Для пущего маразму кому бы предложить в правительстве еще создать «Единую не облагаемую налогом государственную базу данных» и рубить за подключение к ней по 3 рубля. Да и сама реализация такого проекта — это ж какой попил баблища!
Можете провести эксперимент. Написать простейший пример на С++ (классы с наследованием, к примеру) и:
1. собрать:
g++ -O3 sample.cpp -o sample

2. посмотреть какой код будет в итоге собран на ассемблере:
g++ -O3 sample.cpp -S

3. проверить как это работает
./sample

4. попробовать дизассемблировать полученный бинарник, скажем, при помощи objdump-а, если вам все еще не хватило п.2
objdump -d sample >1

тут вы можете уже изучить дизасмеблированный код в файле «1» и найти его совершенно не пригодным для чтения, а так же заметить «следы имен» ваших переменных, функций и классов.

5. теперь чистим
strip -s samole

и повторяем п.4 — вот тут, я думаю, вы останетесь довольны. Обфускаторы и другая вселенская чушь были придуманы в тот же момент, когда появилась рефлексия в языках. С и С++ не нуждаются в них и фраза «сокрытие кода и реализации» тут — не пустой звук.
К счастью — нет. Если из бинарника выбрать всю debug info (в любом юниксе есть команда strip для этого) то вы не сможете восстановить из него ничего кроме логики работы, которая может быть крайне исковеркана при оптимизации. Не будут доступны не только имена переменных и классов но даже имена вызываемых функций, а о случаях с шаблонами и inline кодом и говорить нечего.
Истеричка… :) Все что попадает в стандарт С++ выстрадано и написано кровью. То, что кажется неудобным вам лично, поможет тем, кто будет читать ваши исходники в будущем, оградит ваш и чужой код он неправильного использования и идиотских ошибок не только на стадии выполнения но еще на стадии сборки. А если в этом нет необходимости — пишите на C# или вообще PHP. И к слову, много ваших примеров это не только С++, сколько конкретные реализации. Скажем так, я вообще не понимаю как можно писать вменяемый код на STL, однако это сугубо мое мнение. Хотите писать красиво и понятно — пишите.
Спасибо за статью. Я поговорить о реализации Reflection в С++. В нем все хорошо, кроме того, что это не позволяет толком скрыть реализацию и, как ни крути, это все таки большой performance hit. Даже от введенных в какой-то из старых стандартов RTTI и dynamic_cast обычно стараются избавляться в продакшне. Ну и еще раз, я хочу подчеркнуть, что основной проблемой Reflection языков является их достаточно простая декомпиляция. Буквально на днях я «в рамках одной халтуры» разбирал несколько .NET сборок при помощи вот этой штуки www.reflector.net/ и результат меня с одной стороны порадовал, а с другой — просто шокировал.
В свое время меня очень раздражали т.н. properties и их поведение в C#, и очень радует то, что по сей день их не ввели в C++. Действительно, есть некий предел, когда поведение кода невозможно определить по его внешнему виду, однако тут, видимо, все дело в традициях. Скажем так, любой код на C# пересыщен такого рода поведением, более того, считается хорошим тоном делать любые переменные внутри класса не просто переменными (variables), а именно свойствами (properties), потому читая сейчас код на С# я вполне четко осознаю, что операции присваивания — это далеко не просто присваивание, а целый процесс.

Из практики же могу сказать, что подобные вещи часто позволяют избегнуть больших изменений кода при рефакторинге. Иногда, заменив переменную на свойство и описав поведение при присвоении или получении значения, можно избежать написания кучи проверок в различных частях кода. Пример — присвоение нуля какой-то переменной, которая далее принимает участие в вычислениях как делитель, при чем используется эта переменная во многих местах кода. Есть два варианта рефакторинга для избежания ошибок деления: первый — найти и вставить проверку на 0 везде, где возможно (в том числе и в промежуточных результатах!), второй — описать свойство где и проверять значение на 0 при присвоении. Выгода очевидна.

Собственно о чем это все? О том, что все хорошо в меру и следует точно знать когда и какие свойства того или иного языка стоит применять (нормальный такой вывод в Ненормальном программировании").
Чувак, извини, я ошибся. Ты не просто 3.1415здец, ты ФЕЕРИЧЕСКИЙ 3.1415ЗДЕЦ! Ибо я написал всего один пост и больше в этом кармадрочерстве участвовать на собираюсь! :))))))))))
Ноги умыть не забудь и зубы почистить! ;)))))
Потом оказывается, что у девочки сифилис, и что еще немного — и тебе кранты!
Не знал. Даже не интересовался. Ну, тогда это прекрасно! :)
Многие вещи реализованы аппаратно и обновление ПО просто не поможет. Кроме того, я подозреваю, что старое железо в итоге перестанет справляться в BGP роутингом для ipv6 сетей, просто из-за того что размер таблиц маршрутов превысит все разумные пределы. Обновлять железо будет просто необходимо.

Information

Rating
Does not participate
Location
Ильичевск, Одесская обл., Украина
Date of birth
Registered
Activity