Pull to refresh
4
0

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

Send message
Один из членов команды корабля — Аврора Накаяма.
Пример поиска визуальной стилистики. Остановились на стилистике схожей с серией Mass Effect.

Шикарно поигрались со стилистикой: из инженера сделали секретаршу. У этого персонажа вообще есть какая-нибудь сюжетная нагрузка, или в экипаже корабля он нужен только для фансервиса?

Я должен подготовить «интерпретатор» скрипта c++. Написать его можно на чем угодно, да хоть на bash (это в последний раз, хотя не точно). Вот что у меня получилось.

Позволите непрошенное ревью?


Заголовок спойлера
#!/bin/bash
# Для такого простого скрипта можно и не требовать Bash,
# достаточно было бы /bin/sh.

msg_file=/dev/null
#msg_file=/dev/stdout

tmp_path=$HOME"/.cache/c++/"
# Тут бессмысленные кавычки. Чтобы от них была польза,
# стоило взять в них всю правую часть присваивания целиком.

mkdir -p $tmp_path
# Нужно так: mkdir -p "$tmp_path"
# Иначе пробелы в $HOME могут полностью изменить смысл
# команды.

tmp_file=$1".c++"
exe_file=$1".bin"
# Снова бессмысленные кавычки. Кроме того, неплохо было бы
# проверить, что переменная вообще установлена, прежде чем
# что-то компилировать.

if test $1 -nt  $tmp_path$exe_file; then
    # Вы же вроде в шебанге потребовали Bash, так зачем
    # использовать test? И да, снова кавычки. Это в [[ строки
    # можно не квотировать.

    # Кроме того,
    # у вас часто повторяется выражение "$tmp_path$exe_file",
    # имеет смысл сделать для него переменную. А заодно добавить
    # в конкатенацию слеш, чтобы логика не зависела от того,
    # оканчивается ли $tmp_path на слеш или нет.

    echo "Need to recompile.." > $msg_file
    # Я бы просто убрал дебажные сообщения, чтобы не смущать
    # читателя. Иллюстрации идеи они не помогают.

    tail -n +2 $1 > $tmp_path$tmp_file
    # Нужны кавычки. Кроме того, если вырезать из исходника
    # первую строку, то диагностические сообщения компилятора
    # станут указывать не туда. Мой вариант:
    # echo -n "//" | cat -- - "$1" > "$tmp_path/$tmp_file"

    eval "g++ -o $tmp_path$exe_file $tmp_path$tmp_file > /dev/null 2>&1"
    # Я не совсем понял, для чего здесь eval?
    # Почему бы просто не вызвать компилятор без него?

    if [ $? -eq 0 ]
    then
    echo "Compiled ok" > $msg_file
    else
    echo "Compile error" > $msg_file
    exit 255
    fi
fi

eval "$tmp_path$exe_file $@1"
# Что значит конструкция "$@1"?

# Тут следует сделать как-то так:
# shift ; exec "$tmp_path/$exe_file" "$@"
# 
# В этом случае запускаемая команда заменит собой запустивший её
# процесс и не возникнет проблем с перенапрвлением ввода и вывода
# внутрь и извне "скрипта".
Хотите спросить про интерактивный ребейз — так спрашиваете прямо что это такое и зачем нужно

Имхо, вполне себе нормальный вопрос на собеседовании. Если человек знает, что такое интерактивный ребейз и как он делается, но не может ответить на вопрос про git rebase -i, то как же он до сего дня ребейзил свои ветки? Более удобного механизма в гит пока что не завезли.

history344.blogspot.com/2011/05

Не совсем понял, что вы хотели этим сказать. Поэтому позвольте пояснить свой вопрос: вы правда верите, что у вашей учительницы была реальная возможность распорядиться этими деньгами в пользу себя — построить дом, купить машину, съездить зарубеж?

(Цитата из поста по ссылке:) У нас была очень хорошая школа — школа № 344 города Ленинграда. Еще у нас была классная учительница по химии — Людмила Васильевна Махова. За заслуги в области преподавания ей вручили премию в размере 70000 (!) рублей, которую она передала школе, и на эти деньги приобрели компьютерный класс.

Эта тема поднималась у вас в ЖЖ в комментариях, но неужели вы правда верите, что бывают премии в размере нескольких тысяч месячных окладов? Пусть даже и in Soviet Russia.

К слову, gcc и clang даже на -O1 догадываются преобразовать printf с тривиальной форматной строкой в puts. Но, почему-то, не MSVC.

Или вот русский перевод учебника Харриса и Харрис: в нем в тексте везде использованы ИЛИ-НЕ.

К слову, конкретно этот перевод — всё же любительский и не совсем официальный, я бы не стал ссылаться на него в вопросах правильности употребления терминологии.

Никогда в школе его не любил — громоздкий и неудобный язык, и на Си перешел с большим удовольствием

Что такого есть в C (без плюсов?), чего концептуально нет в Turbo Pascal? Ветвления и циклы — есть, процедуры и функции — есть, ООП с инкапсуляцией, наследованием, полиморфизмом — есть. Ручное управление динамической памятью, указатели, ассемблерные вставки — есть. Не хватает только шаблонов.


Школьник, в совершенстве освоивший «мёртвый» паскаль, за полгода легко переучится на любой мейнстримовый язык. Школьник, изучивший в школе модный JavaScript, рискует так и остаться JavaScript-разработчиком.

А что по Вашему должно происходить [...]?

Имхо, при вводе «05» должен отсекаться ведущий ноль и значение сбрасываться в просто «5».

Еще вроде вышли на вариант с IMEI. Но там древний телефон, который покупали лет 10 назад. Коробку давно выбросили.

А сам телефон не выбросили? Команда *#06# покажет IMEI.

Как думаете, этот список книг релевантен?

Если вы хотите получить место в аспирантуре по этому направлению — ещё как релевантен.


В других местах я бы не стал афишировать свою любовь к формальным доказательствам и зависимым типам, а вспомнил бы книжки, более близкие душе интервьюера.

Если интересно — вот тут она есть: https://scpfoundation.app/?utm_source=habr.com&utm_medium=directLink&utm_campaign=UE_law_comment

Я могу понять, когда люди ленятся удалять UTM-мусор у скопированных ссылок, но зачем добавлять его вручную ради отслеживания кликов по ссылке из коммента — выше моего понимания.

Разве этот рефакторинг соответствует вашему примеру в статье?

В качестве простейшего примера, приведу «введение поясняющей переменной»

Этот рефакторинг не такой уж и простейший и сравнивать его с формулой квадратов суммы некорректно: формула остаётся справедливой, какими бы ни были вовлечённые в неё a и b, а вытащить подвыражение из условия в булеву переменную с сохранением семантики можно далеко не всегда. Вот простой пример такого случай:


if (suicideMode && system("rm -rf /") == 0)
    puts("patch applied!");
Это далеко не самый худший перевод

Я бы сказал, это необравданный буквализм: нет никакой необходимости вставлять лицо в перевод «is facing», как нет необходимости упоминать бога при переводе «bless you». Но этот перевод в целом получился очень буквальным.


Справедливости ради, текст сам по себе не самый простой, в лоб не переводится. Из любопытства я попробовал перевести первые три абзаца, получилось не сразу и с элементами отсебятины.


Немного спорных переводческих решений

Хотя моя предвзятость в этом вопросе очевидна, я постараюсь ответить на него откровенно. Несмотря на статус одного из создателей D, я пристально слежу за присходящим с Go и Rust, и я определённо знаю многие неприглядные вещи о D. Было бы неплохо, если бы люди на аналогичных позициях в сообществах Rust и Go тоже высказали бы здесь свои мнения. Итак, начнём.


Перво-наперво, в формулировку вопроса нужно добавить C++. Причём, куда бы вы его ни поставили — в пару к C или в компанию к предполагаемым кандидатам на его замену — без C++ уравнение будет неполным: [из рассматриваемых,] это язык, ближайший к C, и очевидный шаг вперёд от него. Принимая во внимание [почтенный] возраст C++, я буду полагать, что автор вопроса хочет найти замену не только для C, но и для C++.


Каждый из рассматриваемых языков в чём-то фундаментально лучше конкурентов (ниже я так и буду говорить: «на порядок», потому что это действительно так как минимум для некоторых количественных показателей) и в чём-то значительно им уступает. Поэтому и будущее этих языков, и их [возможный] успех в вытеснении С, зависит от того, как они смогут распорядиться своими фундаментальными преимуществами и как они смогут обойти свои слабые стороны.


Кстати замечу, что для понимания текста важен контекст: Александреску отвечает на чей-то вопрос на Quora и прямо ссылается на формулировку этого вопроса.

А зачем «интегрировать» SDL в популярные IDE по-отдельности, когда можно использовать CMake на всех платформах и не хардкодить никаких \Mac\Home\Downloads\SDL2-2.0.9\include в свойствах проекта? Вся статья — вредный совет из серии «Как писать непереносимый софт, использую кроссплатформенный язык и кроссплатформенные библиотеки».

Почему не завести свой email сервер? Домен стоит 2 бакса в год. На нём можно сделать сколько угодно email-ов.

Купить домен и арендовать виртуалку для своего почтового сервера, конечно же, можно, но под каким имейлом вы зарегистрируетесь на сайте регистратора и облачного провайдера?

[...] полезно понимать для желающих повторить, сколько это занимает времени.

Время зависит от ваших навыков пайки и того, какое оборудование есть у вас в быстром доступе. От почасовой ставки автора зависимости нет.

И сколько у вас стоимость часа?

Думаю, достаточно невежливо задавать такие вопросы незнакомому человеку. Да и для чего вам эта цифра, что полезного она привнесёт в дискуссию?


Не то, чтобы я любил делать замечания, просто раздражает: каждый раз, когда кто-то сделал что-то хорошее чисто по фану, находится человек, готовый заявить: «Автор, ты неэффективно тратишь своё время, лучше бы пошёл и заработал больше денег для бога денег».

Не знаю, получилось в этот раз с уваженеим или нет… :)

Получилось без неуважения. Имхо, новый вариант лицензирования намного лучше этих ужасных слёзных комментариев.

Information

Rating
5,446-th
Location
Воронеж, Воронежская обл., Россия
Registered
Activity