Один из членов команды корабля — Аврора Накаяма.
Пример поиска визуальной стилистики. Остановились на стилистике схожей с серией 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, то как же он до сего дня ребейзил свои ветки? Более удобного механизма в гит пока что не завезли.
Не совсем понял, что вы хотели этим сказать. Поэтому позвольте пояснить свой вопрос: вы правда верите, что у вашей учительницы была реальная возможность распорядиться этими деньгами в пользу себя — построить дом, купить машину, съездить зарубеж?
(Цитата из поста по ссылке:) У нас была очень хорошая школа — школа № 344 города Ленинграда. Еще у нас была классная учительница по химии — Людмила Васильевна Махова. За заслуги в области преподавания ей вручили премию в размере 70000 (!) рублей, которую она передала школе, и на эти деньги приобрели компьютерный класс.
Эта тема поднималась у вас в ЖЖ в комментариях, но неужели вы правда верите, что бывают премии в размере нескольких тысяч месячных окладов? Пусть даже и in Soviet Russia.
Или вот русский перевод учебника Харриса и Харрис: в нем в тексте везде использованы ИЛИ-НЕ.
К слову, конкретно этот перевод — всё же любительский и не совсем официальный, я бы не стал ссылаться на него в вопросах правильности употребления терминологии.
Никогда в школе его не любил — громоздкий и неудобный язык, и на Си перешел с большим удовольствием
Что такого есть в C (без плюсов?), чего концептуально нет в Turbo Pascal? Ветвления и циклы — есть, процедуры и функции — есть, ООП с инкапсуляцией, наследованием, полиморфизмом — есть. Ручное управление динамической памятью, указатели, ассемблерные вставки — есть. Не хватает только шаблонов.
Школьник, в совершенстве освоивший «мёртвый» паскаль, за полгода легко переучится на любой мейнстримовый язык. Школьник, изучивший в школе модный JavaScript, рискует так и остаться JavaScript-разработчиком.
Если вы хотите получить место в аспирантуре по этому направлению — ещё как релевантен.
В других местах я бы не стал афишировать свою любовь к формальным доказательствам и зависимым типам, а вспомнил бы книжки, более близкие душе интервьюера.
Я могу понять, когда люди ленятся удалять 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-ов.
Купить домен и арендовать виртуалку для своего почтового сервера, конечно же, можно, но под каким имейлом вы зарегистрируетесь на сайте регистратора и облачного провайдера?
Думаю, достаточно невежливо задавать такие вопросы незнакомому человеку. Да и для чего вам эта цифра, что полезного она привнесёт в дискуссию?
Не то, чтобы я любил делать замечания, просто раздражает: каждый раз, когда кто-то сделал что-то хорошее чисто по фану, находится человек, готовый заявить: «Автор, ты неэффективно тратишь своё время, лучше бы пошёл и заработал больше денег для бога денег».
Шикарно поигрались со стилистикой: из инженера сделали секретаршу. У этого персонажа вообще есть какая-нибудь сюжетная нагрузка, или в экипаже корабля он нужен только для фансервиса?
Позволите непрошенное ревью?
Имхо, вполне себе нормальный вопрос на собеседовании. Если человек знает, что такое интерактивный ребейз и как он делается, но не может ответить на вопрос про
git rebase -i
, то как же он до сего дня ребейзил свои ветки? Более удобного механизма в гит пока что не завезли.Не совсем понял, что вы хотели этим сказать. Поэтому позвольте пояснить свой вопрос: вы правда верите, что у вашей учительницы была реальная возможность распорядиться этими деньгами в пользу себя — построить дом, купить машину, съездить зарубеж?
Эта тема поднималась у вас в ЖЖ в комментариях, но неужели вы правда верите, что бывают премии в размере нескольких тысяч месячных окладов? Пусть даже и in Soviet Russia.
К слову, gcc и clang даже на -O1 догадываются преобразовать
printf
с тривиальной форматной строкой вputs
. Но, почему-то, не MSVC.К слову, конкретно этот перевод — всё же любительский и не совсем официальный, я бы не стал ссылаться на него в вопросах правильности употребления терминологии.
Что такого есть в C (без плюсов?), чего концептуально нет в Turbo Pascal? Ветвления и циклы — есть, процедуры и функции — есть, ООП с инкапсуляцией, наследованием, полиморфизмом — есть. Ручное управление динамической памятью, указатели, ассемблерные вставки — есть. Не хватает только шаблонов.
Школьник, в совершенстве освоивший «мёртвый» паскаль, за полгода легко переучится на любой мейнстримовый язык. Школьник, изучивший в школе модный JavaScript, рискует так и остаться JavaScript-разработчиком.
Имхо, при вводе «05» должен отсекаться ведущий ноль и значение сбрасываться в просто «5».
А сам телефон не выбросили? Команда
*#06#
покажет IMEI.Если вы хотите получить место в аспирантуре по этому направлению — ещё как релевантен.
В других местах я бы не стал афишировать свою любовь к формальным доказательствам и зависимым типам, а вспомнил бы книжки, более близкие душе интервьюера.
Я могу понять, когда люди ленятся удалять UTM-мусор у скопированных ссылок, но зачем добавлять его вручную ради отслеживания кликов по ссылке из коммента — выше моего понимания.
Разве этот рефакторинг соответствует вашему примеру в статье?
Этот рефакторинг не такой уж и простейший и сравнивать его с формулой квадратов суммы некорректно: формула остаётся справедливой, какими бы ни были вовлечённые в неё a и b, а вытащить подвыражение из условия в булеву переменную с сохранением семантики можно далеко не всегда. Вот простой пример такого случай:
Я бы сказал, это необравданный буквализм: нет никакой необходимости вставлять лицо в перевод «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 в свойствах проекта? Вся статья — вредный совет из серии «Как писать непереносимый софт, использую кроссплатформенный язык и кроссплатформенные библиотеки».
Купить домен и арендовать виртуалку для своего почтового сервера, конечно же, можно, но под каким имейлом вы зарегистрируетесь на сайте регистратора и облачного провайдера?
Время зависит от ваших навыков пайки и того, какое оборудование есть у вас в быстром доступе. От почасовой ставки автора зависимости нет.
Думаю, достаточно невежливо задавать такие вопросы незнакомому человеку. Да и для чего вам эта цифра, что полезного она привнесёт в дискуссию?
Не то, чтобы я любил делать замечания, просто раздражает: каждый раз, когда кто-то сделал что-то хорошее чисто по фану, находится человек, готовый заявить: «Автор, ты неэффективно тратишь своё время, лучше бы пошёл и заработал больше денег для бога денег».
Получилось без неуважения. Имхо, новый вариант лицензирования намного лучше этих ужасных слёзных комментариев.