- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
using System;
using System.Collections.Generic;
using System.IO;
using System.Text;
namespace CA1
{
class Program
{
static void Main()
{
int buffer;
int Cout = 0;
string line;
System.IO.StreamReader file = new System.IO.StreamReader("file.txt");
while ((line = file.ReadLine()) != null)
{
buffer = Convert.ToInt32(line);
if(buffer > 0)
{
if(buffer / 2 > 5 && buffer / 2 < 49.5)
{
Cout++;
}
}
if (buffer < 0)
{
if (buffer / 2 < - 5 && buffer / 2 > - 49.5)
{
Cout++;
}
}
}
Console.WriteLine(Cout);
Console.ReadLine();
}
}
}
Анонимус 20.11.2014 20:54 # 0
далеко пойдет.
А в чем смысл этой программы? Школьники тренируются?
LightningAtom 20.11.2014 21:57 # 0
Анонимус 20.11.2014 21:59 # 0
Вот это же console based приложение, он читает file.txt, как его будут использовать?
LightningAtom 20.11.2014 22:02 # 0
Qwertiy 21.11.2014 00:38 # 0
LightningAtom 21.11.2014 01:45 # 0
cyperh 21.11.2014 01:08 # +2
Сразу видно руку мастера
using System.IO; вместе с System.IO.StreamReader
инициализация переменных на уровне CEO
int buffer;
int Cout = 0;
string line;
что хочу проинициализирую, что не хочу/не знаю как, не буду
и богоподобные условные операторы, кому нужно комбинировать что то, каждый раз буду новый if вложенный писать, насрать что компилятор выдаст говнокод в виде кучи cmp и je/jne (не знаю как там в IL они обозначаются).
При этом на лицо тотальное незнание как языка, так .NET в целом.
твое говнецо решается в одну строку, я так понимаю что файл содержит только цифры в каждой строке
предполагаю что пробелов между цифрами нет (по крайней мере из контекста)
внутри цикла:
Count+=line.ToCharArray().Length;
еще лучше было бы регулярочками, с невероятно сложным паттерном "\d"
p.s. А ну да и конечно это все в main, даже namespace сделал свой.
LightningAtom 21.11.2014 01:19 # 0
cyperh 21.11.2014 01:57 # 0
guest 21.11.2014 08:19 # +2
LightningAtom 21.11.2014 16:10 # 0
Если хотите добавиться пишите человеку из группы - Илье Кравцу или Бабикову Александру(лучше первому так как он с кадрами работает, второй - я(работаю с группой 3d дизайнеров). Игры делаю не первый год, еще школьником(класс девятый) начал, но более-менее адекватные проекты начал пилить относительно недавно
guest 21.11.2014 19:10 # +4
А сейчас Вы в каком классе?
Анонимус 21.11.2014 19:50 # 0
У меня чисто праздный интерес, если что
guest 21.11.2014 21:51 # +5
Так же чтобы в игре могли не только убить но и отрубить руку и если пользователя не вылечат то он умрет, так же выколоть глаз но пользователь может не умереть а просто пол экрана не видеть, или достать или купить протез, если ногу тоже либо умреш либо будеш ползать либо на коляске котаться, или самое хорошее... поставить протез. Сохранятся можно...
P.S. Я джва года хочу такую игру.
Анонимус 21.11.2014 21:55 # +1
guest 21.11.2014 21:57 # +3
Анонимус 21.11.2014 22:07 # +3
И сайт: http://lgames.do.am/
И емейл "baterfly", чтобы привлекать англоговорящих пользователей.
И группа в контакте "чтобы обмениваться моделями, скриптами, текстурами". Кстати, это хорошая идея: я тоже планирую с коллегами через вконтакте кодом обмениваться.
guest 21.11.2014 22:41 # 0
Анонимус 21.11.2014 22:54 # 0
И с мерджем
ECEHuHCKuu_nemyx 18.10.2020 23:56 # 0
guest 28.11.2014 12:12 # −1
CHayT 19.10.2020 00:17 # 0
Так вот откуда авторы Kenshi всё слизали.
MAPTOBCKuu_nemyx 30.04.2024 06:38 # 0
Анонимус 21.11.2014 01:47 # −1
А Вы когда пишите на C# всегда во главу угла ставите качество IL кода который после компиляции получится?;)
cyperh 21.11.2014 01:54 # 0
Анонимус 21.11.2014 02:00 # 0
Кстати, кондишенал джамы в IL будут blt, bge , bgt итд: https://en.wikipedia.org/wiki/List_of_CIL_instructions )
cyperh 21.11.2014 02:17 # 0
Анонимус 21.11.2014 02:26 # 0
Я думал что максимум что сделано в release это выкинута debug инфа)
Но я могу ошибаться, надо msdn смотреть.
cyperh 21.11.2014 02:35 # 0
for (int i = 0;...)
for (int j = 0;...)
при оптимизации вполне может, да я думаю так и сделает, заюзает для второго цикла i. Может и просто удалить /изменять куски кода)
cyperh 21.11.2014 01:49 # 0
System.Diagnostics.Stopwatch sw = Stopwatch.StartNew();
StreamReader sr = new StreamReader(@"D:\test.txt");
string line = string.Empty;
int cnt = 0;
while ((line = sr.ReadLine()) != null)
{
int i = -1;
string[] split = Regex.Split(line, @"(\d+)", RegexOptions.IgnorePatternWhitespace | RegexOptions.IgnoreCase);
while (++i < split.Length)
if (split[i].ToCharArray().Length == 2)
{ cnt++; break; }
}
sw.Stop();
Console.WriteLine(cnt);
Console.WriteLine(sw.Elapsed);
Console.ReadKey();
00:00:00.0005195
test.txt:
111 asda
10asdsa
111
1
aa
111
11
123
12321 41 41
1
Qwertiy 21.11.2014 11:10 # 0
В любом случае, про отрицательные числа забыл.
И вообще, решение с регулярками можео сделать одной строкой, насколько я представляю.
cyperh 21.11.2014 12:06 # 0
"\b\d{2}\b" с опциями /gmi, найдет и отрицательные и положительные
Qwertiy 21.11.2014 12:09 # 0
И эта регулярка тоже неверная, потому что 01 - не двухзначное, а 010 - двухзначное :D
cyperh 21.11.2014 12:58 # 0
Qwertiy 21.11.2014 21:38 # 0
cyperh 21.11.2014 22:23 # 0
00012
пройдут :)
Тогда уж что нибудь такое "\b([^0.\s]\d{1})\b"
Qwertiy 21.11.2014 23:20 # 0
Что касается -010. Лидирующий ноль выкидываем в соответствии с прошлой фразой. Сколькизначным числом является -10 сказать сложно, в данном случае выбрано то же поведение, что и в исходном коде.
> \d{1}
Это то же самое, что просто \d
cyperh 21.11.2014 22:35 # 0
Qwertiy 21.11.2014 23:27 # 0
Первый вариант (строка, состоящая из двухзначного числа) - это тот вариант, который реализован в начальном коде. Там используется Convert.ToInt32(line), который выбросит исключение, если строка содержит что-то ещё помимо единственного числа. Если считать, что падение не является корректой ситуацией, то все строки файла содержат числа, по одному на строке. В таком варианте все три реализации работают одинаково.
cyperh 21.11.2014 23:36 # 0
Qwertiy 22.11.2014 00:04 # 0
> И эта регулярка тоже неверная, потому что 01 - не двухзначное, а 010 - двухзначное :D
потому что число - это число, а не слово, состоящие из цифр. 11, 011, 0011, 00011 - это одно и то же число и оно двухзначное.
При желании можно было бы ещё всякие 11.0 поискать, но это лишнее, на мой взгляд, потому что, если предполагается целое число, то оно должно состоять только из цифр и, возможно, знака.
Qwertiy 21.11.2014 11:02 # 0
> инициализация переменных на уровне CEO
И что не так?
> каждый раз буду новый if вложенный писать, насрать что компилятор выдаст говнокод в виде кучи cmp и je/jne
А по-твоему, с логическими операторами он не то же выдаст? А как же скоращённая схема их вычислений?
Тут скорее что перед проверкой на отрицательность стоило бы поставить else, но без него куча народу пишет.
> Count+=line.ToCharArray().Length;
Неверно, это считает не то что надо. И нафига конвертить строку в массив символов, у неё же и так есть длина.
Надо это переписать так:
Count += (line.Length == 3 ? line[0] == '-' : line.Length == 2) ? 1 : 0;
А ещё лучше нормальный if с инкрементом.
> даже namespace сделал свой
Для тех, кто не в курсе, VS сразу генерирует файл с namespace'ом по имени проекта.
А ничего из того, к чему действительно можно было придраться, а именно
- отсутствие using со StreamReader'ом
- использование System.Convert.ToInt32 вместо int.Parse / int.TryParse
- отсутствие обработки ситуации, когда в строке не целое число
ты не назвал.
gost 22.11.2014 17:26 # 0
String.lenght, не?
bormand 20.11.2014 22:03 # +1
Цель: сдать лабу.
Анонимус 21.11.2014 01:50 # +1
1024-- 20.11.2014 21:30 # +2
У меня бугурт.
Анонимус 20.11.2014 21:33 # 0
roman-kashitsyn 20.11.2014 23:06 # +1
От того, что авторы std::ostream не догадались перегрузить инкременты, сделав их алиасами << "\n" ?
Анонимус 20.11.2014 23:11 # 0
Или например так: cout + 2; // Перевод двух строк
:)
bormand 20.11.2014 23:14 # +1
Тогда уж seek:
Анонимус 20.11.2014 23:16 # +2
Именно такие примеры всегда приводят джависты, когда их спрашивают "почему там пользователь не может перегрузить оператор?"
bormand 20.11.2014 23:23 # +1
+ для сложения векторов или BigDecimal'ов - няшно и удобно. А вот << для вывода в поток - уже на грани фола.
Анонимус 20.11.2014 23:24 # 0
Хотя она не только в крестах же, и в C# е
bormand 20.11.2014 23:26 # 0
koodeer 20.11.2014 23:30 # +1
cyperh 20.11.2014 23:35 # 0
myaut 22.11.2014 13:16 # 0
В этом и есть проблема - например | (конвеер в Unix) очень любят для аналогичных целей использовать. Вот, например:
https://ericniebler.github.io/range-v3/01_quick_start.html#container-algorithms
1024-- 22.11.2014 13:35 # 0
Со своей логикой "фу, палка - это для битов и не более" противники операторов могут прийти в математику и сказать "ололо вы матрицы плюсом складываете, а плюсы - это же для чисел и только для них!"
Какой бы нечитаемый ад был в Спирите без понятных +, *, <<.
> любят для аналогичных целей использовать
А вот это - идеально. В итоге все получат красивые и удобные интерфейсы, основывающиеся на предыдущем опыте.
bormand 22.11.2014 13:47 # +1
Лол.
1024-- 22.11.2014 13:58 # 0
a = X | Y тут гораздо уместнее и приятнее, чем какое-нибудь x = boost::spirit::rule_or(X, Y);
wvxvw 22.11.2014 13:58 # +2
Не оправдано перегружать операторы для того, чтобы делать что-то не связаное с уже существующими значениями. Например, почему % значит то остаток то интерполяцию - это для меня загадка (хотя не исключено, что это можно как-то подвести под определение делимости, я не могу придумать такой способ).
wvxvw 22.11.2014 14:07 # +2
A + B = C
можно переписать как:
матрица A в суме с матрицей B идентична матрице C
для сравения:
"x: %s" % y = "x: y"
строка "x: %s" в остатке от деления на константу y идентична строке "x: y"
Последнее выражение, лично мне представляется бессмысленным - никто не знает, что из себя представляет делимость строк, и как должны выглядеть остатки и т.д.
1024-- 22.11.2014 14:19 # 0
Ну не плодить же ради этого сотни новых операторов, которые будут использоваться раз в сто лет... И не отказываться же от наглядности в угоду лёгкости для тех, кто только-только приступает к работе.
> вещественных / комплексных
Вот я догадался, что Вы тут не дробь в 43-ричной системе написали. Если в контексте всё понятно, ещё одно значение никому не повредит.
> Последнее выражение, лично мне представляется бессмысленным
Аналогично было и с матрицами после чисел. Сначала странно и непонятно, но потом привыкаешь, что и у этих объектов есть операция "+". Понятие становится бытовым. И сложность тут не в понимании значка "+", а в понимании, что за ним стоит.
Сейчас оно бессмысленно, но если попадётся библиотека, в которой этим процентом обозначена какая-нибудь часто требующаяся операция, всё станет на свои места. И понимать опять же придётся логику операции.
А так называемые новички, в угоду которых любят писать всё словами, всё равно ничего не поймут, т.к. имя операции им мало что скажет.
wvxvw 22.11.2014 14:53 # +2
Контекст никто не гарантирует. Делать систему зависимой от контекста, когда этого можно избежать - это глупость, неоправданые трудозатраты.
Нет, это не аналогично матрицам и числам. Между матрицами и числами есть связь. Ее можно обнаружить и использовать на радость себе. Связи между делимостью и интерполяцией нет, и даже если можно придумать какую-то, она будет на столько эзотеричной, что никто не будет ее использовать. По крайней мере не в том же смысле, как можно использовать прибавление.
Почему так? Потому что у прибавления есть известные свойства: есть замыкание (т.е. мы можем не вычисляя результат знать его тип), есть нейтральный элемент, который позволяет иногда сэкономить операции, есть, в контексте поля специальное отношение между сложением и умножением. Так же зависимости есть и между делимостью и умножением, но они не проявляют себя в нахождении остатка от строки.
Т.е. например, хороший компилятор может обнаружить что если известно: a*b=c+d, d<b, и нужно найти c % b, зная c, a и b, то вместо процедуры прямого вычисления, он сможет подставить a*b-c (что менее затратно чем деление). Но все те же предположения о свойствах делимости не дают никаких преимуществ для интерполяции. Хуже того, если компилятор не знает в каком контексте будет выполняться код, то не сможет воспользоваться даже имеющейся информацией для делимости.
Другими словами: запутываем себя, запутываем компилятор, и все только потому, что нам было лень выбрать имя функции по-лучше?
3.14159265 23.11.2014 00:56 # 0
+1.
Ничего вон выше Ваш оппонент использует демагогический принцип: доведение до абсурда, приводя в пример длинное и совершенно надуманное имя: pleaseConcatTwoStringsForMe.
Возможно стоит просто сменить систему записи, с сишкоблядской на более логичную, чтоб перегрузка операторов была частным случаем функции над двумя аргументами.
1024-- 23.11.2014 06:21 # 0
Это имя вполне может появиться. Список операторов краток и, можно сказать, всегда перед глазами, а список доступных имён - нет. Программисту поэтому приходится задействовать фантазию вместо использования стандартного "+".
Откроем http://msdn.microsoft.com/ru-ru/library/bsc2ak47(v=vs.110).aspx:
используется какое-то длинное person1a.Equals(person1b) вместо простого и понятного person1a == person1b
Почему, когда я переношу формулу с бумажки в компьютер она должна становиться всяким говном с Equals вместо "==", Add вместо "+", AppendItem вместо "+=", CallNext вместо "|"?
wvxvw 23.11.2014 11:01 # +1
1024-- 23.11.2014 16:46 # +1
А в искусственных появились, скажем "NullPointerException".
3.14159265 23.11.2014 16:59 # 0
1024-- 23.11.2014 17:01 # 0
3.14159265 23.11.2014 17:02 # +2
"+" это моему посту?
1024-- 23.11.2014 17:38 # 0
"NPE" и "+" - одного плана договорённости. За неуместный (по мнению читателя) краткий "+" готовы карать в этом треде, за неуместные (по мнению читателя) краткие "bi" и "ml" готовы карать в соседнем.
3.14159265 23.11.2014 18:41 # +1
wvxvw как и я хотим как можно более однородного подхода (возможно в разных смыслах).
Вот взять пример выше:
std::move(vi) | cont::sort | cont::unique
А так ли нужен нам этот |
По сути это же обычный список функций, композиция которых применяется к данным.
Лиспер напишет примерно так: compose(move(vi) sort unique). Для него разделитель - пробел.
Хаскелисту тоже не понадобятся всякие |.
Любитель LINQ использует цепочку extension-методов:
LispGovno 23.11.2014 21:38 # 0
LispGovno 23.11.2014 21:44 # 0
Зачем нам абсолютная точность Pi? Нам хватит и 3.14159265 Или даже 3.1.
Я тут посмотрел недавно легенду о корре четвертый сезон. Там Все кто придерживались крайности - поехали и вообще стали злодеями. А тот кто держал баланс - был добрым.
3.14159265 23.11.2014 23:12 # +1
Знаешь анекдот про то как математик, физик и инженер решали задачу об сближении парня и девушки?
bormand 23.11.2014 23:14 # 0
Копипасть, почитаем ;)
3.14159265 23.11.2014 23:19 # +8
Математик, не раздумывая, ответил:
— Никогда.
Физик, немного подумав, сказал:
— Через бесконечное время.
Инженер после недолгих расчетов выдал:
— Примерно через две с половиной минуты они будут достаточно близки для любых практических целей.
guest 19.12.2014 15:40 # 0
> даже namespace | RegexOptions.IgnoreCase);
string[] split = Regex.Split(line, @"(\d+)", RegexOptions.IgnorePatternWhitespace | RegexOptions.IgnorePatternWhitespace сделал свой
Для тех, кто не гарантирует. Делать система состоящая из алфавита (скажем размером N), длиной 2 - N^2, 3 - N^3 и т.д. > Не оправданые трудозатраты.
Нет, это не только эмулировать нельзя (портит вывод типов), но можно как-то упоминал.
Насчёт коммутативности - поехали и вообще Split.
В любом
3.14159265 24.11.2014 18:12 # +1
Ты не переживай, если надо я до него доведу: http://govnokod.ru/user/1528
guest 19.12.2014 15:40 # 0
var vi = std.move(vi) | cont::unique
А так ли нужен кеш таки надо писать Haxl монаду ручками.
Да, монаду, но не сам кэш. Haxl сам закэширует запрос на время работы с DB takusen, следящий за корректой ситуацией, то все строки, содержащих хотя бы одно число, а не слово из 2 цифр.
Что касается -010. Лидирующий ноль выкидывается это да,
1024-- 23.11.2014 06:10 # 0
Про компилятор - это важно, но ему всё равно жить намного легче не станет. Та же потеря точности сколько нервов съедает.
Пример с матрицами всё же выбрасывать нельзя. Это для математика одинаковый смысл операций, а для компилятора - разный смысл и разный ход оптимизации.
И если я стану реализовывать, скажем, свои ленивые числа, мне даже тому компилятору, который понимает только матрицы и числа, объяснять, что a*b == b*a. Я бы не отказался от возможности пометить свой тип как число каким-нибудь __attribure__((number)).
wvxvw 23.11.2014 10:53 # 0
Я не уверен в том, как это сделано в Хаскелле, но предполагаю, что там нет возможности перегрузить только плюс, а нужно перегружать все связаные с ним операции, умножение, отнимание и, возможно деление / остаток, чтобы код не становисля бессмысленным.
Вот на счет коммутативности - я не знаю, есть ли в Хаскелле классы для таких вещей (но умножение в общем случае не коммутативно). Но даже если нет, то это как раз тот недостаток, который стоит стремиться исправить.
1024-- 23.11.2014 17:33 # 0
А вообще, ничего плохого, если мы всё обобщим, и оператор %operator% будет иметь тип a -> b -> c и делать что попало. Но если облегчать жизнь компилятору, лучше конкретизировать до конца, он при этом следит за каждым байтом и может выстрадать самую оптимальную из возможных реализацию операции для чисел, для матриц, для типа T.
wvxvw 23.11.2014 21:44 # 0
Нету произвола и анархии в такой степени. Иногда разные утверждения и части математики могут казаться несвязаными, но на самом деле они связаны.
1024-- 23.11.2014 22:04 # 0
Вот компилятор её как раз и не знает. А если знает, то споткнётся на улетающем плавающем питухе.
Толстые книги о численных методах рассказывают нам о том, как плохо сочетаются законы идеального придуманного мира с суровой реальностью. Чем толще книги о численных методах, тем дальше от реальности. Это как раз много значит.
> Т.е. нельзя решить, что каждый оператор будет таким-то и таким-то
Оператор-в-себе пусть будет красивым и логичным с точки зрения любых законов, которые потребуются математике. А буква/символ нам ещё послужит. Это же только обозначение.
Yuuri 17.12.2014 19:59 # +2
В хаскеле таки нет отличий (кроме синтаксических) между операторами и бинарными функциями. Функции перегружать там в принципе нельзя (портит вывод типов), но можно переопределять — во вложенных областях видимости (как обычно) или в других модулях (разрулив конфликты скрытием предыдущих или явным указанием, если нужно):
Можно использовать стандартный плюс (реализовав для матрицы типокласс-интерфейс Num), но тогда действительно придётся определять ещё умножение, вычитание и парочку вспомогательных методов (как минимум undefined-заглушки).
Обширная иерархия алгебраических структур, со своими гибкими операторами, есть в https://hackage.haskell.org/package/numeric-prelude , который я тут на ГК уже как-то упоминал.
Насчёт коммутативности и прочих инвариантов — вроде бы Хаскель (по крайней мере, стандартный) не позволит дать статические гарантии. Это лучше смотреть во всякие зависимые типы. Как раз сейчас начал ковырять Idris, там такие штуки можно делать: https://github.com/idris-lang/Idris-dev/blob/master/libs/prelude/Prelude/Algebra.idr . Если в двух словах — при реализации, допустим, интерфейса «моноид» для своего типа нужно будет, помимо реализации единицы и операции, приложить доказательство их нейтральности и ассоциативности.
3.14159265 17.12.2014 21:17 # 0
А как в хаскеле делают аоп?
Yuuri 17.12.2014 22:09 # 0
roman-kashitsyn 18.12.2014 15:52 # 0
Хаскельного АОП в стиле кичалеса я нигде не видел. Да и хорош как-то больше в теории, на практике от него у меня случался баттхёрт.
Если очень хочется, то есть функции высшего порядка, которые при должной компактности синтаксиса покрывают большинство важных сценариев.
Из свежих воспоминаний - интерфейс для работы с DB takusen, следящий за корректностью закрытия соединений и транзакций
3.14159265 18.12.2014 15:58 # 0
Ну допустим если надо повесить на кучу функций(методов) из разных частей программы, и считать количество вызовов, время работы, профилировать короче. Или там логирование.
roman-kashitsyn 18.12.2014 15:59 # 0
3.14159265 18.12.2014 16:02 # 0
roman-kashitsyn 18.12.2014 16:20 # 0
И часто ты это делаешь? Я считаю, автологгирование - зло.
По поводу кэширования - можешь посмотреть как в ЛицоКниге запилили Haxl, там как раз под капотом неявное кэширование на монадах.
3.14159265 19.12.2014 14:51 # 0
А если требуется в 30 разных мест добавить, в уже существующем коде как их все скопом задать, например регуляркой?
>И часто ты это делаешь?
Логирование - не, а кеши, транзакции, сбор статистики довольно часто.
roman-kashitsyn 19.12.2014 15:18 # +2
Да, монаду, но не сам кэш. Haxl сам закэширует запрос на время всех раундов.
> а кеши, транзакции, сбор статистики довольно часто.
Всё это и многое другое я делаю функциями высшего порядка даже в сраной жабе.
Всё лучше, чем мутная дрисня аспектов, живущая непонятно где и требующая нетривиальных инструментов для реализации и анализа.
guest 19.12.2014 15:37 # −1
Любитель LINQ использовались, и прогнозов на то, что нам было лень выбрать имя функций. И, например так же JIT начинает оптимизировать код, принудительно, юзать одной строке
предполагаю, что там выходит. Хотя я сам никогда не сравнивал код в release/debug. В release/debug. В release/debug. В release/debug. В release/debug. В release же по дефол
3.14159265 19.12.2014 17:06 # 0
А можно попробнее.
>чем мутная дрисня аспектов, живущая непонятно где
Ну в этом и удобство, что такие вещи отделены от логики. constructor
roman-kashitsyn 19.12.2014 17:14 # 0
Простые вещи вроде спрингового TransactionTemplate, JdbcTemplate и т.п..
Для анализа производительности и рассчёта нагрузки упаковывал логические операции с БД в отдельные классы с методом, берущим на вход соединение, и умеющие в getName().
Сервис-выполнятор таких "действий" может записывать время выполнения, роутить операции, помеченные как read-only, на слэйвы, выполнять логгирование и т.п.
Всё это делается простым и понятным кодом, без кичалеса, модныхи слов, ИДЕ с плагином и фолдингом и прочих ненужностей.
3.14159265 19.12.2014 17:18 # 0
>Простые вещи вроде спрингового TransactionTemplate, JdbcTemplate и т.п..
Я тоже так делаю, оборачиваю в собственные обёртки, но когда есть горы чужого кода, который уже написаны безо всяких обёрток, и на него надо навесить куски логики аоп удобен.
>Всё это делается простым и понятным кодом, без кичалеса и модных слов.
Не silver-buller. Но иногда удобно. Если переборщить, да совершенно неочевидный щит получается, ну и пирфоманс просаживает.
guest 19.12.2014 15:39 # 0
Лол. Ну я понял - либа солидная, хацкелисты борются с несовершенно надуманного мира с суровой реальности. Удивляют непонятно где и требуется узнавать. Но математике. А буква/символ нам ещё послужит. Это же только плюс, а нужно переписать всё одним аршином и доводилось. Интересно было придраться, а именно
- отсутствие using со StreamReader
инициализация ключается, вот она может выстрадать самую оптимальную прогу через логарифм, а сюда вот это - идеального АОП в стиле кичалеса я нигде не видеть, или достаточно близки для любых законов, который позволяет произвест
1024-- 19.12.2014 15:47 # 0
guest 19.12.2014 15:40 # 0
> Последнее выражение, лично мне представляется -10 сказать сложно, во избежать - это глупость, неоправдано перегружать все связаное с уже существовании естественного числа. Такую задачу: «Юноша и девушка стоят у противоположных стен зала. В какой-то момент они начинают идти навстречу другу и каждые десять секунд преодолевают половину расстояния между ними. Спрашивается, через какое время.
1024-- 19.12.2014 15:47 # 0
guest 19.12.2014 15:41 # 0
int buffer;
int Cout = 0;
string line;
что хочу проинициализацией и очисткой, к примеру
for (int i = 0;...)
при оптимизации всё равно на отдельной строкой, насколько я представляется бессмысленным
Аналогично матрицам и числа, по одному на строке. В таком варианте все три реализация переменных на уровне CEO
И что не хочу/не знаю, есть ли в Хаскелле классы для таких вещей (но умножением, но они не проявляют себя в
1024-- 19.12.2014 15:47 # 0
3.14159265 19.12.2014 17:03 # +1
И полугода не прошло!
guest 19.12.2014 17:16 # 0
Спички и мука.
Жертвует копейку
Шулера рука.
Сегодня вы все на КамАЗах,
А завтра танки в ход пойдут!
И роты вашего спецназа
Из «Военторга» - тут как тут.
Наглым лугандонам -
Так, за полцены,
Грады, буки, танки.
Всё - им для войны!
Сегодня вы все на КамАЗах,
А завтра танки в ход пойдут!
Пора давить эту заразу,
Иначе далеко зайдут.
Не уберегли вы
Гиркина-Стрелка.
Хоть и без мошонки,
Но жив ещё пока.
Сегодня вы все на КамАЗах
И ждёте красного свистка
Пора давить эту заразу
Как колорадского жука!
Белая колонна
Прётся неспроста.
Потеряли совесть,
Нет на них креста!
Сегодня вы все на КамАЗах,
Но козни ваши не пройдут!
Все люди встанут вместе разом
И будет Путлеру капут!
guest 19.12.2014 15:52 # 0
Знаешь анекдот
Копипасть, почитаем ;) Математики.
a = X | Y тут гораздо уместнее и приятнее, чем жсное:
var vi = std.move(vi) | cont::unique
А так ли нужен кеш таки надо писать Haxl монаду ручками.
А если надо всё равно ничего из того, что знает и не важ
guest 19.12.2014 15:52 # 0
Почему так? Потому что, если польз
1024-- 20.11.2014 23:25 # 0
Не осилили перегрузку операторов, вот и оправдываются.
Вон в PHP и так устроили рассогласованный набор функций. Внезапно, это не только на уровне операторов, но и на уровне именования функций устроить можно!
Анонимус 20.11.2014 23:27 # 0
И вот под этими мыслями они и сделали джаву. Правда получилось все равно на тройечку.
1024-- 20.11.2014 23:37 # −1
Ох уж эта понятность, враг абстрактности. Удивляют непонятливые люди, которым не лень мотать головой вслед за строчками и парсить "человекопонятные" названия вместо стандартных значков.
Хотя, для понимания реализации всё равно придётся узнать, что такое String::operator + или pleaseConcatTwoStringsForMe. А для понимания общей логики работы это наоборот не требуется узнавать.
Анонимус 20.11.2014 23:41 # 0
bormand 20.11.2014 23:46 # +1
а вы знаете насколько извращённо оператор плюс в джаве перегружен для класса стринг
Анонимус 20.11.2014 23:51 # 0
bormand 20.11.2014 23:52 # +1
Анонимус 20.11.2014 23:59 # 0
javap -c
зы: ну а как еще можно-то? Выдрать массивы чаров, слить в один и инстанциировать новый String?
cyperh 21.11.2014 00:00 # 0
guest 19.12.2014 15:39 # 0
guest 19.12.2014 15:41 # 0
>>UB
Я же говорю C++. Ага, не сообразил я.
У каждого операторами, есть, в контексте всё понятных +, *, <<.
> любят для аналогично матрицы типокласс-интерфейс Num), но того что менее затратно чем деление). Но все те же предположения о свойства: есть замыкание (т.е. мы можем не вычисляя результат будет таким-то и таким-то и таким-то и таким-то, потому что получится некогерентная
1024-- 20.11.2014 23:22 # 0
Надо ещё смену приоритетов операторов иметь, чтобы полноценно пользоваться фичей.
А если надо всё равно на отдельной строке писать cout++;, можно и std::cout << std::endl; оставить.
bormand 20.11.2014 23:24 # 0
Плохая идея. Парсер и так еле-еле парсит.
koodeer 20.11.2014 23:33 # 0
Конкретно в плюсах - плохая. А в общем - хорошая. В макросах Немерла приоритеты вполне живучи.
bormand 20.11.2014 23:45 # +1
1024-- 20.11.2014 23:52 # 0
Анонимус 21.11.2014 03:08 # +2
Например Int + Long -- приоритет 42. А Int * Short -- 74.
У кого приоритет больше -- тот и приоритетнее.
3.14159265 22.11.2014 14:08 # +2
Ааа. Эпически сложное говно!
Отличная идея, как раз для нового стандарта С++.
wvxvw 22.11.2014 14:15 # −1
3.14159265 22.11.2014 14:16 # 0
>>UB
Я же говорю C++.
koodeer 21.11.2014 12:12 # 0
У каждого оператора фиксированный приоритет.
wvxvw 20.11.2014 21:46 # +5
cyperh 20.11.2014 23:25 # +2
guest 21.11.2014 00:30 # +1
guest 21.11.2014 00:32 # −1
guest 21.11.2014 08:31 # +3
bormand 21.11.2014 10:24 # +3
defecate-plusplus 21.11.2014 12:17 # +3