Как стать автором
Обновить
2
0

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

Отправить сообщение
В любом случае, не стоит недооценивать труд столь большой компании.
Go прекрасен!
Использую его уже более года, если что то и непонятно, то нужно лишь немного терпения (и умения читать, конечно) что бы разобраться!
Мне нравится это бурное обсуждение.
Впрочем, как и все обсуждения Go.
Хомячки (и не только на картинках) бесятся.
Неплохо расслабляет после работы с C# кодом.
Выходит, моя ошибка.
Я как раз имел ввиду объявление типа переменной.
Вот пример с Go:
 var v6 *int

А вот с C++:
int* v6;

У вас есть возможность посчитать символы и подтвердить свои слова.
Кому то очень нравится Go?
Или я в чем то не прав?
Ответь мне, о ты, минусовавший!
Пожалуй скажу немного.
Go действительно поначалу очень привлекает.
Меня привлек распиаренностью где бы то ни было, воплями о «языке нового поколения», сочетании (!) Си и паскалеобразного синтаксиса.
Действительно, операция ":=" выглядела для меня странно…
Как и объявления типов справа — показалось слишком громоздким.
Потом становится понятно что это просто очередная пустышка.
Давайте ка вспомним ту самую цепочку «инновационных языков» зарождавшихся по очереди в недрах Apple для замены Objective-C.
Припоминаете?
Неужели сейчас началась та же болезнь у немного другой компании?
Жаль что нет ни C++ ни C#.
Интересно, и дальше не будет?
В последнее время я стал замечать очень много статей о Go.
Интересно, к чему бы это?
А как насчет этого?
Я бы не хотел разбираться и возиться с Qt ради пары библиотек.image
А использование Qt без Qt Creator автоматически означает возню с настройкой IDE и компилятора под Qt.
Насчет:
Хм. Ну если вы боитесь ООП, то ок. Мне ООП кажется более удобным и перспективным

Буду благодарен, если вы покажете мне, как улучшить код в данном случае используя ООП.
Не нужно создавать систему с наследованием классов ради пары функций.
Если вам так нравится уделять кучу времени решению абстрактных задач, построению иерархии классов, по ходу чего частенько появляется еще с 10ок проблем только из за ООП- то пожалуйста.
Если _вам_так_нравится_Python_ опять же ваше _дело_.
Насчет Java.
Разумеется, я просматривал тесты.
Не видно, где это Java хоть немного на равных с C++.
Да и элементарное рассуждение- jvm с ее не далеко лучшей интеграцией с системой будет явно уступать C++ везде где только можно.
Кстати, в большинстве «сравнений C++ и Java» сравнения ведутся с примитивными типами, не с кучей, и к тому же Java оптимизирует код, компиляторы C++ в этом отношении ведут себя честнее.
Я не против jvm, я просто не понимаю вашего беспокойства за Java)
Насчет отладки- как мне казалось современные IDE давно решили эту проблему…
И легкость (вами заявленная) в отладке- еще не повод выбирать Python
Знаете, вам то может быть и удобно таскать с собой скомпилированные библиотеки из Qt по отдельности- а мне нет. Не вижу в этом смысла. Ну а насчет 2гб- загляните но оф сайт Qt
Что то мне подсказывает, что я еще и занизил цифры.
Хорошо, где конкретно в этой задаче применимо ООП?
Можно было бы создать статический класс (привет C#), инкапсулировать функции немного по другому, и это все?
Насколько я знаю в *nix проблема с кодировками вообще не стоит так. Убираем setlocale и радуемся жизни.
Насчет Mono- много ли вы знаете людей постоянно использующих Mono с *nix?
Кроме разработчиков Mono конечно.
Всегда казалось, что C# — язык ориентированный на разработку в Windows.
Поэтому для наглядности решил использовать C++ при написании статьи)
Почему вам кажется, что в C# работа со строками (в этом случае) легче чем в C++?
Ну хорошо, size() заменим на Length, а дальше?
Аналогичный код на C# специально для вас
static class Bot{
	public static readonly System.String MemoryPath="Memory.txt";
	private static System.String[] GetWords(System.String Word){
		//Подсчитывает слова для создания массива
		//Не забываем, что последний символ массива- служебный, поэтому 1, а не 0
	    //В 0 изначально уходит строка
		System.Int32 MaxIndex=1;
		//Фиксирует наличие в предидущих циклах символов-разделителей
		System.Boolean SeeFix=false;
		for(System.Int32 i=0; i<Word.Length; ++i){
			if(Word[i]==' '||Word[i]=='.'||Word[i]==','||Word[i]=='!'||Word[i]=='?'||Word[i]=='='||Word[i]=='/'||Word[i]=='\n'){
				SeeFix=true;
				continue;
			}
			if(SeeFix){
				SeeFix=false;
				++MaxIndex;
			}
		}
		System.String[] ArrWords=new System.String[MaxIndex];
		System.Boolean Fix=false;
		for(System.Int32 i=0, ThisIndex=0; i<Word.Length; ++i){
			if(Word[i]==' '||Word[i]=='.'||Word[i]==','||Word[i]=='!'||Word[i]=='?'||Word[i]=='='||Word[i]=='\n'){
				Fix=true;
				continue;
			}
			if(Fix){
				Fix=false;
				++ThisIndex;
			}
			ArrWords[ThisIndex]+=Word[i];
		}
		return ArrWords;
	}
	private static System.String GetAssociation(System.String Word){
		System.IO.StreamReader Reader=System.IO.File.OpenText(MemoryPath);
		while(true)
		{
			System.String Buffer=Reader.ReadLine();
			if(Buffer==null){
				break;
			}
			if(Buffer.Contains(Word)){
				//Резервируем массив из двух слов для левой и правой ассоциаций
				System.String[] Result=new System.String[2];
				for(System.Int32 i=0, Index=0; i<Buffer.Length; ++i){
					if(Buffer[i]=='='){
	//Сиволы следующие после второго в строке символа '=' игнорируются
						if(Index==1){
							break;
						}
						++Index;
						continue;
					}
					Result[Index]+=Buffer[i];
				}
//Проверяем на содержание искомой строки только левую ассоциацию,
//При успехе возвращаем правую ассоциацию
				if(Result[0].Contains(Word)){
					Reader.Close();
					return Result[1];
				}
			}
		}
		Reader.Close();
	    return null;
	}
	private static void PutAssociation(System.String Left, System.String Right){
		System.IO.File.AppendAllText(MemoryPath, Left+'='+Right+'\n');
	}
	public static System.String GetFullAssociation(System.String Word){
		if(Word==null){
			return null;
		}
		System.String[] Words=GetWords(Word);
		System.String Result=null;
		System.Boolean FixResult=false;
		for(System.Int32 i=0; i<Words.Length; ++i){
			if(GetAssociation(Words[i])!=null){
				FixResult=true;
				Result+=Bot.GetAssociation(Words[i])+' ';
			}
		}
		if(!FixResult){
			Result=null;
		}
		if(Word.Contains("-")){
			System.String[] NewAssociations=new System.String[2];
			for(System.Int32 i=0, Index=0; i<Word.Length; ++i){
				if(Word[i]=='-'){
					if(Index==1){
						break;
					}
					++Index;
					continue;
				}
				if(Word[i]=='='){
					continue;
				}
				NewAssociations[Index]+=Word[i];
			}
			PutAssociation(NewAssociations[0], NewAssociations[1]);
		}
		return Result;
	}
}


Конкретно со строками я больших изменений не увидел)
И кстати, GUI для бота я написал как раз на C#+WPF
Да, но промежуточная компиляция никуда не уходит. И можно забыть о UNIX
Qt как слишком огромен что бы привлекать его для такой простой задачи.
Да и где логика- использовать 2гигабитный фреймверк со своими велосипедами почти для всего
ради одного маленького консольного приложения?
Python мне не нравится из за синтаксиса (да да, вложенность) + это не компилируемый язык.
Java на десктопе ужасна не слишком быстра и создавалась она уж точно не для такого.
Ruby пугает своим ООП + Ruby поднялся только благодаря рельсам, благодаря им же и упал.
Вот и остается (Заметьте, для такой задачи) чистый C++ без тотального ООП, обязательного для всех стиля,
промежуточной компиляции и всего прочего, присущего тому что вы перечислили.
Впрочем, каждому свое)
Насчет строк не знаю, а как калькулятор Python вполне пригоден)

Информация

В рейтинге
Не участвует
Дата рождения
Зарегистрирован
Активность