Обновить
0
0
webwarrior @webwarrior

Пользователь

Отправить сообщение
Раз уж пошла пьянка с .NET, вот вам еще пример (F#, Phenom II X6 1075T, 6 ядер по 3 ГГц)

let threadCount = 6

let serialSum first last =
    let mutable res = 0.0
    for i=first to last do 
        res <- res + sin(float i)
    res

let parallelSum first last =
    let count = last - first + 1
    let perThreadCount = count / threadCount + (if count % threadCount = 0 then 0 else 1)
    seq { 
        for i=0 to threadCount - 1 do
            let localFirst = first + (perThreadCount * i)
            let localLast = min last (localFirst + perThreadCount - 1)
            yield async { return serialSum localFirst localLast } 
    }
    |> Async.Parallel
    |> Async.RunSynchronously
    |> Array.sum

#time

> serialSum 1 200000000;;
Real: 00:00:06.930, CPU: 00:00:06.926, GC gen0: 0, gen1: 0, gen2: 0
val it : float = 1.250230424
> parallelSum 1 200000000;;
Real: 00:00:01.331, CPU: 00:00:07.644, GC gen0: 0, gen1: 0, gen2: 0
val it : float = 1.250230424
А если не влезет?
К тому же невыровненный доступ тоже вносит дополнительные затраты — поэтому например в .NET размер boolean равен машинному слову.
Интересно, какая логика использовать 32-битные числа в 2013 году, при повсеместной 64-битной архитектуре? Экономия на спичках?
You may not realize it, but the majority of us developers have been living a sheltered professional life. Sure, we’ve got that living disaster of a C++ application and that ridiculous interface between PHP and COBOL written by the boss, but I can assure you, that all pales in comparison to what many, less fortunate programmers have to work with each day. These programmers remain mostly forgotten, toiling away at a dead-end career maintaining ancient information systems whose ridiculously shoddy architecture is surpassed only by the tools used to create it. Bryan H lived in such a world for over two years. Specifically, he worked at a “MUMPS shop.”

A Case of the MUMPS — The Daily WTF

P.S. Сам с этим MUMPS ниразу не сталкивался, но после прочтения истории с The Daily WTF даная статья выглядит как троллинг.
В полуфинале терран слил протосу.
Серия Trackmania. Там есть редактор треков. Ну и трассы там есть безумные.

Кстати, Trackmania Nations и Trackmania Nations Forever вполне заслуживают войти в список. Я б сказал что это апофеоз аркадных гонок, хоть они и немного задротские (или сильно задротские, если гнаться за рейтингом :-).
Launchy классная вещь, но некоторые программы почему-то не запускаются (напр. IPython QT, Eclipse). Последний жалуется что не находит JRE. Хотя запускает-то тот же ярлык, что и в панели «Пуск».

Windows 7 64-bit
Ну с огрызками все понятно — Apple считает, что она лучше знает, что нужно пользователю. Отсюда закрытость платформы, отсутствие выбора моделей, и т.д. Меня такое не устраивает.

Вообще емкостные екраны и ориентация интерфейса исключительно на пальцы мне не нравиться. Во многих случаях более высокая точность не помешала бы.
HTC Touch Cruise. 4.5 лет (модели — 5 лет). Ведроиды не нравятся, про огрызок и говорить нечего. Посмотрю что предложит Jolla.
System.Single — это float32 в F# (суффикс f для литералов). Соответсвенно Vector4(0.0f, 0.0f, 0.0f ,1.0f).
В каментах — прямо клуб анонимных программистов-гуманитареиев какой-то.
Очевидно только то, что за сиськи на Хабре плюсуют :)

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

До сих пор живы Picbreeder (там где «машины и бабочки», ИМХО наиболее можная и продуманная система), Turtle Web, Image Breeder.

Ну и мой проект — CFDG Breeder (осторожно, Silverlight).

Из оффлайновых програм есть еще Evolvotron и Kandid.

Ну может еще что-то за последние 2 года появилось, хз.
И тут врывается F# с units of measure:

[<Measure>] type m
[<Measure>] type s

> let accl = 10.0<m/s^2>;;

val accl : float<m/s ^ 2> = 10.0

> let sp = 100.0<m/s>;;

val sp : float<m/s> = 100.0
Добавить этот камент в закладки, что ли? :-)
",".join([str(i**2) for i in range(10)])

join как метод строки поначалу непривычно, а в остальном — ничего странного.

Информация

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