Pull to refresh
17
0
Send message
Про самое последнее дело — совершенно согласен. Но если вдруг припрёт, то текстовый редактор найти проще, чем конвертер Постскрипта. Кроме того, документация по SVG кажется мне более полной и понятной.
К счастью, всё это уже сделано, и многократно.
Правда иногда использовать такого монстра проектирования для рисования простой картинки — всё равно, что стрелять из пушки по воробьям.
Я же описываю противоположную крайность. Метафорически, когда дырка нужна, а сверла нет, то и гвоздиком проковырять можно.
Спасибо за подсказку, квест с Github Pages оказался несложным.
У Google Translate уже есть «Варианты перевода» на уровне слова/словосочетания. Будет на уровне предложения, потом на уровне абзаца, и т.д.
Девушка вбивала данные в компьютер, а Гусев оценивал обстановку. Обычная государственная контора, безликий ремонт, безликая мебель, все чистенько, аккуратненько, и почему-то совершенно нет очередей, что для него, выходца из двадцатого века, было очень странно. На стойке, рядом с окошком, рядом с ручкой для посетителей, Гусев обнаружил какую-то кнопку. Наверное, звонок, чтобы привлечь внимания, если у окошка никого нет, подумал Гусев и машинально эту кнопку нажал. Ну так, знаете, обычный рефлекс. Видишь кнопку, нажимаешь на кнопку.
Звонок так и не прозвенел, зато девушка вздрогнула. Даже не так. По ее телу пробежала судорога, и она направила на Гусева взгляд своих красивых, внезапно наполнившихся слезами глаз.
— Ну, зачем вы так? — спросила она. — Я же работаю.
— Э, — сказал Гусев, чувствуя себя обезьяной, забравшейся в салон автомобиля. — Извините. Я не хотел. Я машинально.
Девушка всхлипнула и вернулась к работе.
Гусев посмотрел на нее сквозь прозрачное стекло и увидел электрический провод, подсоединенный к ее офисному креслу на колесиках и ему стало еще более стыдно, чем раньше. Зато он понял, почему в государственных учреждениях нынче нет очередей.
Жестоко, подумал он, вспоминая попытки оплатить квитанцию в сберкассе или забрать на почте свою посылку. Возможно, в те времена он бы и не отказался от такой кнопки, бьющей нерасторопных госслужащих током, но сейчас…

Цивилизация страуса
Хорошей проверкой способностей языка было бы попробовать написать компилятор подобного языка на нём самом.
Мне кажется, что была задумана реакция типа «Engineer, oh, so cute».
Но у людей, знакомых с «When I see a bird that walks like a duck...», реакция будет скорее «And how do you quack?»
Вы правы, никакого. Просто автоматическая реакция на «STL тормозит».
Повторите пожалуйста те же тесты с _SECURE_SCL=0 и _HAS_ITERATOR_DEBUGGING=0
Согласен, что объявлять кучу типов неудобно. Но это хорошо, это заставит программиста быть аккуратнее. Программа, где не обработана хотя бы одна ошибка, просто не скомпилируется.
Достаточно просто и предсказуемо.

enum Error { ArgumentError, AnotherError, OneMoreError }
impl std::fmt::Display for Error {
    fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result {
        match self {
            &Error::ArgumentError => write!(f, "ArgumentError"),
            &Error::AnotherError => write!(f, "AnotherError"),
            &Error::OneMoreError => write!(f, "OneMoreError"),
        }
    }
}

fn f() -> Result<i32, Error> {
  Err(Error::ArgumentError)
}

fn e() -> Result<i32, Error> {
  f()
}

fn d() -> Result<i32, Error> {
  e()
}

fn c() -> Result<i32, Error> {
  d()
}

fn b() -> Result<i32, Error> {
  c()
}

fn a() -> Result<i32, Error> {
  b()
}

fn main() {
  match a() {
    Ok(x) => println!("Result:{}",x),
    Err(Error::ArgumentError) => println!("Error caught"),
    Err(e) => println!("Error uncaught {}", e),
  }
}
Ну, не каждая строчка вообще, а только каждая потенциально опасная строчка.
На мой взгляд, это вполне приемлемая цена за отсутствие исключений.
  try {
    innocent_looking_function();
  }
  catch ( const boost::exception& e ) {
    // Everyone uses boost
    handle_error( boost::diagnostic_information( e ) );
  }
  catch ( const std::exception& e ) {
    // Everyone uses std
    handle_error( e.what() );
  }
  catch ( const CException& e ) {
    // The library provider has defined his own CException thrown by reference
    handle_error( e.what() );
  }
  catch ( CException* e ) {
    // But there is a 20 year old MFC stuff as well; do include magic in order to compile
    handle_error( e->Text() );
    e->Delete();
  }
  catch( ... ) {
    // I have no idea what else can be thrown
    handle_error(_T("No idea what was thrown"));
  }
Для вызова нескольких методов подряд используют ранний возврат с помощью макро try!
fn write_info(info: &Info) -> io::Result<()> {
    let mut file = try!(File::create("my_best_friends.txt"));
    // Early return on error
    try!(file.write_all(format!("name: {}\n", info.name).as_bytes()));
    try!(file.write_all(format!("age: {}\n", info.age).as_bytes()));
    try!(file.write_all(format!("rating: {}\n", info.rating).as_bytes()));
    Ok(())
}

Garbage collector'а нет в языке, но разные аллокаторы можно подключать через библиотеки (например Arena).
Thrift или Avro испытывали?
Весело, и похоже на правду.

Получается, что только Singleton, Factory, Strategy, LazyInitialization, и GodObject (хоть как-то) работают, а остальные — так, планктонствуют.
Везде, за исключением специально оговоренных случаев, подразумеваются C89 и C++98

В C++98 нет constexpr.
// Вычисляет длину массива
template <typename t, size_t n> size_t len (t (&a)[n])
{
  // return len; 
  // опечатка, должно быть
  return n; 
}

Спасибо, интересно.

А нельзя ли для масштаба добавить к трём lock-free стэкам ещё и простейший стэк с блокировкой (CriticalSection или mutex)?

Information

Rating
Does not participate
Registered
Activity