gegmopo4: (Default)

Оказывается, засланцы Майкрософта протолкнули в Стандарт C++ требование (23.2.1), чтобы сложность size() в std::list была O(1). Ну да, ведь теперь никто уже не знает, что такое двусвязный список и с чем его едят. Ещё один идеал разрушен.

В качестве дополнительного (или основного?) бонуса — GCC теперь придётся ради соответствия Стандарту ломать бинарную совместимость. Новые бинарники нельзя будет слинковать со старым C++98 кодом.

Ещё одна потеря — реализация строк с подсчётом ссылок.

gegmopo4: (Default)

Задачка для младших инженеров-программистов электронно-вычислительных машин.

C:

#include <math.h>
#include <stdio.h>
int main()
{
    printf("%d\n", (pow(43, 10) == 21611482313284249ll));
    return 0;
}

Python:

import math
print(math.pow(43, 10) == 21611482313284249)

Вопрос: что выведется и почему?

gegmopo4: (Default)

I think it's better to give users the rope they want than to try and prevent them from hanging themselves, since otherwise they'll just use the power cords as ropes and electrocute themselves.

Guido van Rossum
gegmopo4: (Default)

Оказывается, у языка программирования Go есть талисман:


Gopher

Поддержка протокола Gopher была выброшена из Internet Explorer в 2003 году, из Firefox в 2011 году, Google Chrome и Opera её никогда не имели.

gegmopo4: (Default)

Возник тут теоретический вопрос, какие возможны реализации полиморфизма в C++, кроме таблицы виртуальных методов. В стандарте о vtable нет ни слова, но это самый очевидный и распространённый способ (по крайней мере я не знаю компиляторов, где иначе), к тому же, обладающий разумным балансом между потреблением памяти и скоростью. Интересно, могут ли быть варианты эффективнее?

Другие способы делать это )
gegmopo4: (Default)

Мне вот всегда хотелось, чтобы компиляторы более жёстко демонстрировали undefined behavior. Чтобы если что-то явно неопределено, то чтобы конкретный результат менялся от версии к версии компилятора, а может и от сборки к сборке программы, от запуска к запуску (если цена этого не слишком велика). Чтобы в хэштаблицах менялась хэш-функция (хотя бы на константу), чтобы memcpy через раз копировал с начала в конец или с конца в начало, чтобы i+++++i выдавало произвольный результат в больших пределах, чтобы любая неинициализированная память, в том числе возвращаемая malloc-ом, была заполнена случайным мусором и чтобы затиралась им сразу после освобождения free, чтобы указатель null в памяти не представлялся нулями, а каждый раз по-разному, чтобы переменные в стеке располагались в случайном порядке и чтобы стек портился сразу после возврата из функции, чтобы размеры int, long и void * были разными, чтобы bigendian, littleendian и middleendian менялись в каждой версии системы.

Может хоть это заставит программистов читать и понимать.

P. S. Этот пост непосредственно спровоцирован этим, этим и этим. Но главные вдохновители — тонны непортируемого глючного кода и программисты-ламеры.

gegmopo4: (Default)

Когда это имет смысл в C++?

switch(...)
{
 case true:
    ...
    break;
 case false:
    ...
    break;
 default:
    ...
}

Навеяно всяким разным.

P. S. Как и следовало ожидать, трихотомией и триализмом интересуются в основном теологи, философы и прочие псевдоучёные.

gegmopo4: (Default)
               *
               *
              ***
             *****
            *******
           *********
         *************                A
            *******
          ***********                VERY
        ***************
      *******************            HAPPY
          ***********
        ***************            CHRISTMAS
      *******************
    ***********************         AND MY
        ***************
      *******************         BEST WISHES
    ***********************
  ***************************     FOR THE NEXT
            ******
            ******                    YEAR
            ******

browsing this entry is no fun at all
just press REPOST

Глюки

Dec. 6th, 2010 11:48 pm
gegmopo4: (Default)

Кто-нибудь ещё читает research!rsc? Как и предупреждалось, обновляется действительно спорадически. Вчера появилась новая статья — о подходе к решению проблем, связанных с неатомарностью операций записи в Go. Просмотрел вскользь перед сном. А сегодня решил почитать более обстоятельно — вместо неё статья о Yacc. Старая статья быля мне интереснее, хотя и небесспорная.

Из новой статьи, цитата:

regular expressions are `WYSIWYG'—the language described is the language that gets matched—whereas parser-generators are WYSIWYGIYULR(k)—`what you see is what you get if you understand LR(k).'
gegmopo4: (Default)

Стало интересно, сколько языков программирования представлено в современных дистрибутивах. Оказалось — немало. Для более 26 языков поддерживается разработка и более 22 языков использованы для написания программ. И это ещё не для всех языков введены теги, найдётся там кое-что и для древнего Кобола, и для учебного Logo, и для кучи ассемблеров, вплоть до MIX. А такие языки, как awk, sed, make — и считать никто не будет. Думаю, что с полсотни языков общего назначения наберётся точно, а может и сотня. Со специализированными уж точно.

Есть там есть интерпретатор Focal-а. Боже мой, Фокал! Мой третий (или четвёртый, как считать) язык программирования. Модуль ПЗУ с Фокалом шёл к БК-0010Ш как альтернатива бейсику. Среди особенностей — нумерация строк числами с фиксированной точкой (вроде 3.14), сокращение имён команд до одной буквы, можно писать много команд в одной строчке, отсутствие целых чисел (да и со строками что-то непросто было), трёхвариантное ветвление. Программы на нём получались компактными, но медленными (на один-два порядка медленнее бейсика). А, ещё — ужасный генератор случайных чисел. Но змейку и ханойские башни написать было можно. И кое-что похитрее.

Issue 9

Nov. 26th, 2009 09:43 pm
gegmopo4: (Default)

10 ноября группа программистов из Google представила новый язык программирования Go — статический язык с C-подобным синтаксисом, оригинальной объектной системой, сборщиком мусора, замыканиями, рефлексией и очень удобной поддержкой многопоточности. Среди авторов значатся и Роб Пайк и Кен Томпсон, создатели языка C и системы UNIX.

Наибольшая активность в трекере сейчас наблюдается в теме под номером 9 (issue 9). Оказывается, уже существует язык с похожим названием Go!, и автор просит изменить имя нового языка, чтобы избежать путаницы. Предложено немало вариантов, но самым интересным выглядит Issue 9. Это и ссылка на само это обсуждения, и отсылка к операционной системе Plan 9, над которой работали всё те же Пайк и Томпсон (и в названии которой создатели также проявили чувство юмора).

Profile

gegmopo4: (Default)
gegmopo4

May 2015

S M T W T F S
     12
3456789
10111213141516
17181920212223
24252627282930
31      

Syndicate

RSS Atom

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Oct. 17th, 2017 09:36 am
Powered by Dreamwidth Studios