Pull to refresh
59
Karma
0
Rating
Артем @greck

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

  • Followers 20
  • Following 5

10 признаков того, что хороший программист из вас не получится

Так, я же написал в своем критерии про 18+. Для <18 мой критерий неприменим, для <18 все гораздо сложнее.

10 признаков того, что хороший программист из вас не получится

10 критериев — это слишком много.
Для многих достаточно одного: вам 18+ лет и вы ни разу ничего не прогали в 3 часа ночи.
Поясню. Призвание к 18 годам должно уже проявится, и что-то на каком-то языке программирования вы уже должны уметь писать. Без призвания сидеть перед монитором с буквами — это свою угробить жизнь. Чтобы сидеть и прогать в 3 часа ночи нужно 1) любопытство и я бы даже сказал страсть 2) воля к победе и бесстрашие перед множеством проблем, упорство 4) способность разгребать доки и чужой код 5) самостоятельность… короче, 1 критерий вместо 10, и в отличие от перечисленных в статье этот один легко определяется (каждый сам для себя легко на него ответит, самообман невозможен).

Комментировать или не комментировать?

Нашел текст в викиучебнике, исходный вариант которого написал Непейвода. Там есть что почитать любителям философии от IT.

Комментировать или не комментировать?

Есть такой интересный ученый — Непейвода Николай Николаевич.
Он сформулировал короткий и четкий ответ на этот вопрос: комментировать нужно «призраки» и «подпорки».

Подпорки — (ЕСТЬ В КОДЕ, НЕТ В ТЕОРИИ) это отклонения от основного случая алгоритма; то что присутствует в коде, но отсутствует в словесном описании сути работы функции
* отклонения от теорем, на основе которых строится код
* дурацкие крайние cлучаи
* учет несовершенства работы используемых внешних функций, подсистем

Призраки — (ЕСТЬ В ТЕОРИИ, НЕТ В КОДЕ) это знания, заложенные в алгоритм; то, что есть в теории, на основе которой был построен алгоритм, но отсутствует явно в коде.
* математические теоремы; например в RSA алгоритме заложена формула a^(phi(n)) === 1 mod (n) и нужно в коде в комментариях написать ссылку на эту теорему и случай n=p*q.
* инварианты в циклах
* то, о чем полезно знать при чтении кода, но что никак в этом коде не отобразилось, так как является абстракцией более высокого уровня, нежели код


Он этому учил студентов в Ижевске

Эксперимент в Яндексе: как роботы помогают тестировать сервисы

Очень интересно!

Интеграционные тесты (цель которых — иметь большое покрытие и, грубо говоря, отлавливать 404) в UI действительно могут быть автоматизированы влоть до автогенерации множества сценариев.

Текстовые поля (в том числе с числами) можно заполнять одной из подсказок, всплывающей после ввода одной буквы/цифры или пары символов. Правда возникает требование, иметь такие подсказки для все текстовых полей, но это требование вполне разумно и не повредит юзабилити. Для особых текстовых полей, где подсказки вредят юзабилити, можно договорится с разработчиками, что подсказки возникают только для определенного юзерагента. Разработка подсказок для каждого поля проще, тем поддерживать руками интеграционные тесты.

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

Разработчикам больше работы, зато тестеры будут заниматься только функциональными тестами бизнес логики.

Покорим Ruby вместе! Капля одиннадцатая

Да, именно так

И как праивльно замечено, если что-то хочется выполнить по-любасу, нужно помещать код в блок ensure.
А то, что помещено после end может не выполнится, если в begin или rescue будет выполнен оператор return
Закрыть открытые сокеты — один из важных юзкейсов

$ cat  a.rb
def foo(x)
  begin
    return 1 / x
  rescue
    return 1 / (x + 1)
  ensure
    puts "Hi #{x}"
  end
end

puts foo(1)
puts foo(0)

$ ruby  a.rb
Hi 1
1
Hi 0
1

Обучение программированию на Ruby — занятия продолжаются

* По сути своей, ++ содержит в себе неявное присваивание в любых формах

— ну вообще говоря, ++ ассоциируется не с присваиванием, а с изменением объекта (в с++ в 99% этот оператор используют для смещения итераторов). А matz пишет про assignment, так как в Руби про потенциальный новый оператор ++x сложно думать иначе как (x+=1)

* Инкремент в префиксной форме является сахаром для операции += 1

— О каком языке идет речь? Полагаю что, о Си или С++ или о Java.
— Си: оператор ++ можно назвать сахаром для +=1, но суть в том, что там он не может менять типа переменной.
— С++: оператор ++ для новых классов обычно определяют так, что он меняет объект на месте и, конечно, не меняет класса объекта (оператор += можно определить независимо от ++ как захочется, в том числе, этот оператор может возвращать объект нового класса). И конечно, в Си++ оператор ++ не является сахаром для +=1.

— Проблем с преобразованием, а точнее, с созданием нового объекта нового класса, конечно, нет. Просто никто не ожидает, что оператор ++ будет создавать новый объект. Никто не ожидает, что x++ может сменить класс x, так как в других языках так не делают. И этой проблемы не было бы, если бы в Руби был один класс Integer===Bignum, и не было бы Fixnum и Bignum. Объекты Bignum действительно на месте можно увеличить на 1. Именно поэтому я и написал то, что написал. Укажите пожалуйста, какие идеологические проблемы были бы с введением оператора ++, если бы был один класс для всех целых чисел.

* Отказ от ++ скорее не вяжется с философией руби по возможности возвращать последнее вычисленное значение (а в случае использования постфиксной формы инкремента в си-подобных языках возвращается исходное значение)

— никакой неувязки бы не было; можно было бы реализовать и постфиксную и префиксную форму оператора с правильным возвращаемым значением. Чем вас так напугало, то что последнее вычисленное значение является возвращаемым значением метода?

Обучение программированию на Ruby — занятия продолжаются

потому что Fixnum может сменится на Bignum, и преобразование объекта на месте невозможно

Обучение программированию на Ruby — занятия продолжаются

Пока нет, но я все собираюсь начать их писать. Сорри, что никак не доберусь.

Дистанционное обучение программированию на Ruby

Пока нет. Думаю это будут отдельные скринкасты по материалам занятий, которые я буду готовить самостоятельно.

Дистанционное обучение программированию на Ruby

Прошло всего два занятия и там было мало посетителей. Я просто пробовал. Убедился, что все проходит хорошо, и теперь готов повторить. Многое я буду повторять. Считайте, что начну сначала.

Услуга «Ваш персональный компьютер»

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

Неуловимое нейтрино

Спасибо за статью!
1

Information

Rating
Does not participate
Location
Россия
Date of birth
Registered
Activity