Обновить
58
0
Ivan Velichko@iximiuz

Software Engineer

Отправить сообщение
А Катя читает статьи про Катю?
Да, было бы здорово.
А с каким уровнем подготовки уже не стоит идти в вашу школу? Или задам вопрос по-другому, какого уровня студенты вашей школы достигают к выпуску? Можно в терминах junior, middle, etc, хоть зачастую они не совсем адекватную оценку дают.
А в хроме он еще и съедает 100% заряда моего макбука за час, когда зависает.
К сожалению, еще не читал. Добавлю в свой список, спасибо!
А зачем делать что-то новое? Уже ведь столько всего написано, что можно просто без страсти комбинировать готовые решения, создавая продукт.
Возможно, такие «бесстрастные» разработчики и хороши для компаний, которым просто нужен рабочий продукт. Но мир разработки двигают именно влюбленные в свое дело «сумасшедшие гении», которым жизнь не мила без новых велосипедов/фреймворков/протоколов. Каким бы скучным был мир разработки, если бы все в нем были бесстрастными. За страсть к коду, господа!
Удивительно, отчего же в этом году летом на английский язык спрос выше, чем в прошлом? Не оттого ли, что все решили подстраховаться, чтобы не зависеть только от родной страны/валюты?

В последнем абзаце наконец-то дельный совет по использованию сервиса и обучение английскому в целом. Сервис можно использовать только как дополнение к занятиям с преподавателем.
Выберу себе город для переезда по максимальному показателю =)
А как насчет аналогичной статистики по США, Канаде, Австралии, Германии? В России, например, Москва, (как это обычно и бывает по любым показателям, не суть плохим или хорошим), вырвалась на порядок. Интересно сравнить, есть ли такие же отклонения в других странах.
Так как бы потому что человеки выловили и съели тех рыб, которые раньше регулировали популяцию звезд. А теперь пытаемся «закостылить» баг.
Простите, а кто-то умеет? Тут, на мой взгляд, как повезет. Сумел предусмотреть все кейсы — молодец. Нет — получай дедлоки или состояние гонки. И хуже всего, когда автор кода слишком уверен в своих способностях мыслить в терминах нескольких потоков одновременно.
Это как то платье — синее или белое. Зависит от того, каким вы видите цвет его волос на солнечном снимке.
Да, звучит здраво, сам приходил к такому выводу. Но не отвечает на вопрос, так что же там с Python? Как поступают на нем, чтобы поддержать большой проект на плаву.
Господа, а кто может провести аналогию подходов из статьи с Python? Язык другой, намного более динамичный и гибкий, и в силу этого стиль написания программ на нем, определенно, отличается. Иногда, по старой памяти, так и тянет наворотить в Python такую же монструозную (но «правильную») архитектуру, как в Java или C#, но кажется, что она будет выглядеть неуместно.
Дерево объектов — это как-то печально. Получается «нецелевое» использование наследования. А когда множественное наследование не существует, дерево объектов вообще будет практически неприменимо.
Пришлось даже загуглить. На мой взгляд все варианты ответов верны с равной вероятностью. Так что же такое РГМ?
На данный момент у меня даже не получилось создать массив разнородных объектов =) Пока пытался это сделать, нашел вот такую интересную возможность (правда она не сильно нужна для этой задачи):

proc foo[T: MyType1|MyType2](x: T) = echo "do something"

P.S. Шаблоны в Nim это немного другая вещь. Мы сейчас говорим про Generic'и. И они работают на этапе компиляции, а не выполнения.
В коде опечатка, вызов foobar(t3) на самом деле — это вызов foobarCaller(t3).

Правильный код
type
    T1 = object
        foo: string
    T2 = object
        bar: string
    T3 = object
        baz: string

method foobar(self: T1) = 
    echo self.foo

method foobar(self: T2) = 
    echo self.bar

proc foobar(i: int) =
    echo "Int" & repr(i)

proc foobarCaller[T](self: T) = 
    self.foobar()        

var t1 = T1(foo: "T1")
var t2 = T2(bar: "T2")
var t3 = T3(baz: "T3")

foobar(t1)        # компилируется, результат "T1"
foobar(t2)        # компилируется, результат "T2"
foobar(42)        # компилируется, результат "Int42"
foobarCaller(t3)  # не компилируется (!) Error: type mismatch: got (T3)
                  #                      but expected one of:
                  #                      interface_test.foobar(self: T2)
                  #                      interface_test.foobar(self: T1)
                  #                      interface_test.foobar(i: int)

Да, минус такого решения — это необходимость просматривать весь код функции, чтобы понять реальный интерфейс T. Напоминает duck typing с проверкой на этапе компиляции. В принципе, у шаблонных функций/методов в C++ та же проблема. Где-то (в boost?) видел адское решение, которое позволяет задать требования к T на уровне кода при объявлении шаблона. Выглядит жутко конечно.

С массивом аналогичное решение.

Информация

В рейтинге
Не участвует
Откуда
Amsterdam, Noord-Holland, Нидерланды
Зарегистрирован
Активность