- 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
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
- 49
- 50
- 51
- 52
- 53
- 54
- 55
- 56
- 57
- 58
- 59
- 60
- 61
- 62
class Functions //здесь функции
{
static void PrintInfo(String[] args) //инфа из стандартного ввода
{
try( BufferedReader br = new BufferedReader(new InputStreamReader(System.in)) )
{
int lines=0;
int words=0;
int symbols=0;
String s;
while( (s=br.readLine()) != null )
{
lines++;
words+=Functions.NumberWords(s);
symbols+=Functions.NumberSymbols(s);
}
if(args.length == 0) {
System.out.format("%7d%7d%7d\n", --lines, words, --symbols);
}
}
catch(IOException e) {
System.out.println("Ошибка: "+e);
}
}
static int NumberWords(String s) //количество слов в строке
{
char c='-';
int num=0;
boolean change=false; //сделано чтобы пустые строки не прибавляли значение num
for(int i=0; i<s.length(); i++) {
if( s.charAt(i)==' ' && (c!=' ' && c!='\t')
|| s.charAt(i)=='\t' && (c!=' ' && c!='\t') ) num++; //новое слово
c = s.charAt(i);
if(!change ) change=true;
}
if(change && c!=' ') num++; //последнее слово
return num;
}
static int NumberSymbols(String s)
{
int count=0;
for(int i=0; i<=s.length(); i++)
count++;
return count;
}
static void getInfo()
{
try( BufferedReader b = new BufferedReader(new FileReader("help")) )
{
String s;
while( (s=b.readLine()) != null )
System.out.println(s);
}
catch(IOException e) {
System.out.println("Файл справки отсутствует");
}
}
}
Переписываю все программы из linux на java, это говно-наработки
Какой замечательный пример Java-style и следования философии Java!
> class Functions //здесь функции
Блядь. Вот не понимаю я этого. class Functions, блядь. Functions - это класс. Класс чего, сука? Какой объект описывает класс Functions? Вот нахуя писать код, семантика которого полностью, мать его, контринтуитивна? Говно какое-то, пидоры, блядь, ебанные! Всех разъебал бы!
Извините, накипело.
mdaaa..
2. Засираем оперативку лишними копиями входных данных.
3. Бизнес-логику внедряем в совершенно неподходящий по семантике метод intValue.
4. Экземпляр класса отдаём на съедение мусоросборщику.
5. Отравляем жизнь пользователям библиотеки уродским синтаксисом (необходимостью писать «new» и всё такое).
Всё посчитал или что-то забыл?
А жава не умеет оптимизировать 1, 2 и 4? В плюсах от этого всего остается просто сравнение https://godbolt.org/g/spFscH
Либо я не умею им пользоваться...
Значит, шансы найти оптимизирующий компилятор малы по причине идеологии Java?
И по этим таблицам и текущему instruction pointer'у вполне можно воссоздать подразумеваемые фреймы заинлайненных функций.
Разве что оптимизация хвостовой рекурсии необратимо портит бектрейс.
После инлайна:
Из отладочной инфы отладчик знает, куда компилятор заинлайнил функцию f. Если он видит, что деление на ноль произошло между '// begin f()' и '// end f()', то может добавить вызов f() в стектрейс. Очевидно же.
Но как первое приближение - сойдёт.
А вот определить такие уже задача не такая тривиальная, учитывая что ыксепшн может перехватываться в какой-нибудь другой библиотеке.
В примере выше информация о том, какой из двух рекурсивных вызовов сработал на каждой итерации, будет потеряна при оптимизации хвостовой рекурсии.
А если там разные функции tail call'ятся - то и счётчик будет сложно хранить.
Согласен. Кстати, в Scala/Clojure такая оптимизация не работает, там trampolines приходится использовать. Скала, правда, никакие счётчики для генерации стек-трейсов они не хранит, просто превращают рекурсию в цикл в байткоде.
Что-то у вас, батенька, пример расходящийся
MaxToIntConvertStrategy str = BeanLookupManager.getInstance().getBean( MaxToIntConvertStrategy.class);
MaxConvertedToInt toInt = str.convert(max);
int foo = toInt.asInt();
<? if ($a > $b)
{echo "<b>это число больше</b>"}?>
<? if ($a < $b)
{echo "<b>это число меньше</b>"}?>
Дали обезьяне молоток, обезьяна постучала по кокосу, попила молоко — вкусно!
С тех пор бегает она с одним молотком в лапе и пытается разжечь им костёр — ну, чтобы эволюционировать в человека. Пока не получилось — ни первого, ни второго.