Pull to refresh
0
0
Send message

у нас произносятся не так, как требует оригинальный язык, а как все привыкли.

В русском языке вообще мало заимствованных слов произносятся хоть как-то близко к оригиналу. Самый лучший пример - звук h. Как его блин только не мучают, то г (самый популярный вариант: hydro - гидро, Hamburg - Гамбург), в некоторых он исчезает (history - история), в более новых - на х (hello - хеллоу). Это нормально и очень даже хорошо, потому что например в английском из-за слишком сильного уважения к заимствованиям правила чтения крайне размыты.

Согласен, бред. Это алфавит, которым пользовались все народы СССР в 1925x-1940, кроме славян; ничего "иноземного" в нем нет. С точки зрения образования мы не отсталая страна, бо́льшая часть населения знает не то, что латиницу, а немецкий или английский на базовом уровне. С точки зрения коммерческой выгоды бред, ее не будет. С точки зрения технической вообще молчу.

Я вообще не понимаю эту всю беготню с кириллицей там, где ее внедрение намного дороже, чем обучить подавляющую часть населения страны латинице и транслиту, что уже давно сделано.

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

Что за бред? Цель сотрудников состоит не в том, чтобы чужому дяде помочь управлять компанией, а в том заработать побольше деньжат, поменьше поработав. Очень странно, что вы считаете, что за то, что вы им платите n денег они будут работать сами по себе на 100% для вашего блага. Они будут стараться сохранить зарплату не меньше n и уменьшить трату своих сил с учетом необходимости карьерного роста и собственной материальной обеспеченности. Такова человеческая природа - корысть и любовь к капиталу, ничего плохого по отношению к чужим людям в этом нет. Нужно с учетом этого их стимулировать, оптимизировать расходы на них. Это как заказать бригаду строить дом, не контролировать ее, не стоять над ними, а потом удивляться, почему за огромные деньги стены вдруг гниют, все кривое, котел турбированный, который они поставили вместо нормального на естественной тяге имеет малый срок службы. Никакого у них интереса в вашей компании, как и вашем доме, нет. Только деньги. И это - нормально

Если он даже не удосужился прошерстить информацию по поводу подготовки к собеседованию в этом конкретном месте, то при наличии других более-менее прошедших кандидатов его можно сразу отсеить

Насколько я понял, то что автор называет "кучей" - простая реализация линейного аллокатора, обертка над буфером в виде класса. По сути дела это - ни туда не сюда. Когда память исчисляется 10тками кб - проще тупо заранее все просчитать, а для объектов с динамическим размером делать буферы.

А я про WriteConsoleA

/sarcasm Я думаю, лучше ввести подобные ограничения для звонков не только с заграницы, но и из Москвы по коду номера. У жителей других субъектов вряд ли есть там родственники с изначально московскими кодами номеров, а те, у кого есть, сами включат. А то оттуда реально куча мошенников звонит, мне лично из за границы никто не разу не звонил / Если серьёзно, то я бы не отказался от возможности автоматом отправлять звонки с московских номеров в спам, у меня там никого нет

MSVC я взял, потому что работаю с Windows 10 (мне кажется логичным использовать для Windows компилятор Microsoft).

Новичкам будет очень трудно с него переходить на кроссплатформенные системы сборки, в то время как сборка под MinGW и (или) clang сама на это вынуждает. Clang отлично сочетается с MinGW и у последнего Windows-специфичный инструментарий уже не хуже, чем у MSVC (конечно, исключая ATL и MFC, но кому они сейчас нужны). Кроме того, MSVC имеет собственный "диалект" C++ (ярким примером его использования являются 2 выше упомянутые библиотеки). Новичок хотя бы немного научится работать с конфигами, потом вручную настроит IDE и отладчик.

Хотя, мне это уже напоминает начало холивара, поэтому, давайте закончим:)

А в Ubuntu я выбирал между GCC и Clang и в итоге выбрал GCC

Такая связка потому, что она лично у меня стоит. Использую neovim как IDE с clangd (как я его называю, "помогатор", исходя из названия работает на clang'е) и vimspector'ом (отладчик).

P. S. Во всяком случае на Windows, Clang не имеет собственной реализации стандартной библиотеки языка C и STL и поэтому есть выбор между MSVC и MinGW.

На Linux же у clang'а вроде есть неведомые libc и, соответственно, libc++.

Ваш код, насколько я понял, предназначен для работы с широкими символами (wchar_t)?

Да, что-то бегло прочитал. Лично у меня кириллица в однобайтовой кодировке нигде никогда и не работала, я даже не знал, что ее можно "впихнуть" в UTF-8.

Может быть, конечно, это будет сложно для новичка, но я бы лично ознакомил его сначала с пакетными менеджерами (и да, под Windows они тоже есть, Chocolatey, например), и, что самое на мой взгляд главное, компилятор бы посоветовал clang в связке MinGW. CMake, даже мне сейчас после простого Make, кажется сложным, особенно разница заметна в маленких проектах. Почему именно эти 2 компилятора? В принципе, сейчас нет большой разницы в поддержке библиотек, ведь есть CMake, однако, большинство вещей (например, флаги, формат библиотек, компоновщик) в MSVC сильно отличаются от других.

Для кириллицы в последнее время использую только этот способ:

Код
/* main.cpp */

#include <cstdio>
#include <fcntl.h>
#include <io.h>

/* ... */

namespace {
	class CodingChanger {                             
		public:                                       
			CodingChanger() {
                _setmode(_fileno(stdout), _O_U16TEXT);
                                          
                _setmode(_fileno(stdin), _O_U16TEXT); 
                                          
                _setmode(_fileno(stderr), _O_U16TEXT);
            }                    
                                                 
			~CodingChanger() {
                _setmode(_fileno(stdout), O_TEXT);    
                                          
                _setmode(_fileno(stdin), O_TEXT);     
                                          
                _setmode(_fileno(stderr), O_TEXT);  
            }                       
	} codingChangerInstance;
}

/* ... */

Как-то странно писать такое... Но и я тоже один раз так ошибся: использовал shared_ptr на структуру с данными программы, но забыл его инициализировать. Потом удивлялся, почему не работает? Скомпилировал с флагом -g, открыл gdb, а там SEGFAULT на лицо.

Или так:

template<typename T>
struct ShapeModel : public ShapeConcept {
    T object;
  
    explicit ShapeModel(T &&shape) : object(std::move(shape)) { }
    
    explicit ShapeModel(const T &shape) : object(shape) { }
    
    void draw() override final /* Для девиртуализации */ {
        object->drawImpl(); 
    }
};
class Circle {
  public:
    // ...
    
    void drawImpl() {
      // ...
    }

  private:
    // ...
};

Спасибо. Кстати, у меня есть еще один вопрос: почему бы вместо того, чтобы выносить функцию, которая в нашем случае рисует объект, не сделать вот так, основываясь на этом паттерне (Policy):

Код
template<typename T>
struct ShapeModel : public ShapeConcept {
    using T::drawImpl;
  
    T object;
  
    explicit ShapeModel(T &&shape) : object(std::move(shape)) { }
    
    explicit ShapeModel(const T &shape) : object(shape) { }
    
    void draw() const override {
        drawImpl(object); 
    }
};


Реализация класса Circle в таком случае:

Код
class Circle {
  public:
    // ...
    
    static void drawImpl(const Circle &circle) {
      // ...
    }

  private:
    // ...
};

Здесь неплохо бы использовать концепты из C++20, ведь если бы наш класс не имел функции drawImpl, компилятор выдавал бы более понятные сообщения об ошибках.

Я новичок, могу ошибаться, но реализация паттерна стратегия такая:

Код
template<class PrintStrategy>
class PrintStringTest {   
	using PrintStrategy::printImpl;   
	
	public:
		void print() {           
			printImpl();        
		}
};

class Test {
	public:
		void printImpl() {
			std::setlocale(LC_ALL, "");
			
			std::wcout << L"Тест паттерна стратегия\n";
		}
};

int main() {
	PrintStringTest<Test> printer;
	
	printer.print();
}

Ваша реализация еще зачем-то использует умные указатели и виртуальные функции.

2

Information

Rating
6,393-rd
Registered
Activity