Re[2]: Об обучении программированию в некоторых престижных вузах
От: LaptevVV Россия  
Дата: 27.10.14 10:43
Оценка: :))
Здравствуйте, elmal, Вы писали:

E>Здравствуйте, LaptevVV, Вы писали:


LVV>>Все-таки я решил написать.

E>Welcome to the real world, Neo .
Мы-то как раз в реальном мире живем.
Вот тебе пример нашей работы.
Наш выпускник (мой дипломник и аспирант) работает в нашей астраханской конторе Агент Плюс.
Техническим директором.
У него под началом работает дофига наших выпускников последующих выпусков.
И вот недавно он приходит и говорит, что есть тема для магистерской.
Реальная, необходимая.
Они там пишут чего-то под мобильные устройства — для контор, у которых есть мобильные сотрудники.
И вот, говорит, проблема:
мобильный сотрудник утром первое, что делает — входит в систему. Со своей мобилы.
А поскольку таких сотрудников дофига — получается пиковая нагрузка в очень короткий промежуток времени. Сервер не справляется.
И такое — 2-4 раза в день.
Необходимо реально поисследовать этот процесс и предложить решение.

Это только один пример.
А бакалаврских работ, которые реально делают что-то в ихней системе — просто без счета.

E>А если еще познакомиться с кучей студентов этих престижных российских вузов, у которых диплом именно по специальности — будет новое прозрение . Де факто в России получают образование по ИТ специальности не в институтах, а самостоятельно по книжкам и инету. В результате зачастую получаются весьма конкурентоспособные специалисты. Вот только не очень понятно, почему эти специалисты должны молиться на государство за свой бесплатный диплом — книжки то они читали самостоятельно, причем эти книжки были сплошняком буржуйских авторов.

Книжки буржуйских авторов — по моему опыту — приходится заставлять читать до 75% студентов (выкручивая руки, что спрошу на экзамене) .
Иначе читают весьма сомнительные источники в интернете без ссылок на оригиналы.
E>Да, государство читать то научило, но на этом уровне как то государство справляется почти в любых странах.
Не все ныне умеют читать.
Информация из первых рук — в 9 классе встретился одной учительнице перец, который читать не умел.
От нее же информация, что в одной школе не получили аттестата 12 выпускников, в другой — 17.
Это те, кто не набрал обязательного минимума по обязательным предметам.
Прикинь, какие сейчас выпуски.
В нашей Астрахани — максимум 2 класса человек по 25. И вот до 1/3 из них — без аттестата!
В советское время такое было просто невозможно.
Читать, писать и считать умели все.
Хочешь быть счастливым — будь им!
Без булдырабыз!!!
Re[3]: Об обучении программированию в некоторых престижных вузах
От: kleng  
Дата: 27.10.14 11:08
Оценка: +1
Здравствуйте, LaptevVV, Вы писали:

LVV>Они там пишут чего-то под мобильные устройства — для контор, у которых есть мобильные сотрудники.

LVV>И вот, говорит, проблема:
LVV>мобильный сотрудник утром первое, что делает — входит в систему. Со своей мобилы.
LVV>А поскольку таких сотрудников дофига — получается пиковая нагрузка в очень короткий промежуток времени. Сервер не справляется.
LVV>И такое — 2-4 раза в день.

У них там сколько сотрудников, миллионы?
Re[4]: Об обучении программированию в некоторых престижных вузах
От: LaptevVV Россия  
Дата: 27.10.14 11:30
Оценка:
Здравствуйте, kleng, Вы писали:

K>Здравствуйте, LaptevVV, Вы писали:


LVV>>Они там пишут чего-то под мобильные устройства — для контор, у которых есть мобильные сотрудники.

LVV>>И вот, говорит, проблема:
LVV>>мобильный сотрудник утром первое, что делает — входит в систему. Со своей мобилы.
LVV>>А поскольку таких сотрудников дофига — получается пиковая нагрузка в очень короткий промежуток времени. Сервер не справляется.
LVV>>И такое — 2-4 раза в день.

K>У них там сколько сотрудников, миллионы?

Это не их сотрудники. А сотрудники фирм, которым они продали свои системы.
В общем, потребовалось поисследовать.
Хочешь быть счастливым — будь им!
Без булдырабыз!!!
Re[3]: Об обучении программированию в некоторых престижных вузах
От: elmal  
Дата: 27.10.14 11:48
Оценка:
Здравствуйте, LaptevVV, Вы писали:

LVV>Необходимо реально поисследовать этот процесс и предложить решение.

Не очень понятно что там может юыть сложного? Кеширование и предварительная выборка данных что, уже не помогает? Ну раз не помогает, тогда уже кластеризацию фигачить. Сервера держать в облаке, перед предварительной нагрузкой заранее повышать количество нод, после того как пик пройден — уменьшать. Или уже и это сделали, и это не помогает?

LVV>В советское время такое было просто невозможно.

LVV>Читать, писать и считать умели все.
Писать грамотно не все, далеко не все могли. Да и читать — из старшего поколения весьма немало неграмотных, не прочитавших в жизни ни одной книжки. Ибо вполне можно было прожить без этого. Сейчас как то стимул к умению читать есть у любого гопника. Ту же порнуху он как искать будет ? Нет, у гопников конечно с бабами проблем нет, но в 9-то классе еще не все же извращения то попробовал, соответственно из порнухи может что и интересное почерпнуть. Соответственно охрененный стимул для того, чтоб научиться читать .
Re[5]: Об обучении программированию в некоторых престижных вузах
От: kleng  
Дата: 27.10.14 11:50
Оценка:
Здравствуйте, LaptevVV, Вы писали:

LVV>Это не их сотрудники. А сотрудники фирм, которым они продали свои системы.

LVV>В общем, потребовалось поисследовать.

Да без разницы. Сколько их?
Re[4]: Об обучении программированию в некоторых престижных вузах
От: LaptevVV Россия  
Дата: 27.10.14 13:54
Оценка:
Здравствуйте, elmal, Вы писали:

E>Здравствуйте, LaptevVV, Вы писали:


LVV>>Необходимо реально поисследовать этот процесс и предложить решение.

E>Не очень понятно что там может юыть сложного? Кеширование и предварительная выборка данных что, уже не помогает? Ну раз не помогает, тогда уже кластеризацию фигачить. Сервера держать в облаке, перед предварительной нагрузкой заранее повышать количество нод, после того как пик пройден — уменьшать. Или уже и это сделали, и это не помогает?
Подробности надо узнавать у Морозова.
LVV>>В советское время такое было просто невозможно.
LVV>>Читать, писать и считать умели все.
E>Писать грамотно не все, далеко не все могли. Да и читать — из старшего поколения весьма немало неграмотных, не прочитавших в жизни ни одной книжки. Ибо вполне можно было прожить без этого. Сейчас как то стимул к умению читать есть у любого гопника. Ту же порнуху он как искать будет ? Нет, у гопников конечно с бабами проблем нет, но в 9-то классе еще не все же извращения то попробовал, соответственно из порнухи может что и интересное почерпнуть. Соответственно охрененный стимул для того, чтоб научиться читать .
А, ну да.
Я ж и грамотной половины. Опять же — универ. Там неграмотных просто не было.
Согласен, в деревнях могли и не уметь.
Но вот моя бабушка 1890 года рождения писать умела.
Не говоря уж о считать.
Хотя была из деревни. Как так получилось — уже не спросишь...
Хочешь быть счастливым — будь им!
Без булдырабыз!!!
Re[6]: Об обучении программированию в некоторых престижных вузах
От: LaptevVV Россия  
Дата: 27.10.14 13:55
Оценка: :)
Здравствуйте, kleng, Вы писали:

K>Здравствуйте, LaptevVV, Вы писали:


LVV>>Это не их сотрудники. А сотрудники фирм, которым они продали свои системы.

LVV>>В общем, потребовалось поисследовать.

K>Да без разницы. Сколько их?

Подробности у Морозова надо спрашивать. А он — уехал в командировку...
Хочешь быть счастливым — будь им!
Без булдырабыз!!!
Re[3]: Об обучении программированию в некоторых престижных вузах
От: Философ Ад http://vk.com/id10256428
Дата: 27.10.14 14:28
Оценка:
Здравствуйте, LaptevVV, Вы писали:

LVV>Здравствуйте, vpchelko, Вы писали:


V>>Такое впечатление, что кого-то обители. У каждого свои взгляды на ООП. Это не только С++ с STL. А про Java вообще не вспоминали! Безобразие

LVV>Радость моя.
LVV>1. ООП — он и в Африке ООП. Хоть на Яве, хоть на С++.

о! кстати!
а в Smalltalk'e Objective-C как, тоже?
Всё сказанное выше — личное мнение, если не указано обратное.
Re[5]: Об обучении программированию в некоторых престижных вузах
От: -n1l-  
Дата: 27.10.14 14:39
Оценка:
А как это относится к конечным автоматам?
Re[4]: Об обучении программированию в некоторых престижных вузах
От: LaptevVV Россия  
Дата: 27.10.14 15:10
Оценка: -1 :)
Здравствуйте, Философ, Вы писали:

LVV>>1. ООП — он и в Африке ООП. Хоть на Яве, хоть на С++.


Ф>о! кстати!

Ф>а в Smalltalk'e Objective-C как, тоже?
Да. Семантика — одна и та же.
Хочешь быть счастливым — будь им!
Без булдырабыз!!!
Re[6]: Об обучении программированию в некоторых престижных вузах
От: LaptevVV Россия  
Дата: 27.10.14 15:11
Оценка:
Здравствуйте, -n1l-, Вы писали:

N>А как это относится к конечным автоматам?

Если не читал книжку — советую.
Это относится так. что с помощью этого приема можно реализовать конечный автомат без использования переключателя.
Функция — сама себе состояние.
Хочешь быть счастливым — будь им!
Без булдырабыз!!!
Re[3]: Об обучении программированию в некоторых престижных вузах
От: elmal  
Дата: 27.10.14 15:26
Оценка:
Здравствуйте, LaptevVV, Вы писали:

LVV>1. ООП — он и в Африке ООП. Хоть на Яве, хоть на С++.

А на чистом Си ? Можно ли на Яве писать процедурно, а на чистом Си объектно ориентированно ?
Re[4]: Об обучении программированию в некоторых престижных вузах
От: LaptevVV Россия  
Дата: 27.10.14 15:59
Оценка: +1
Здравствуйте, elmal, Вы писали:

E>Здравствуйте, LaptevVV, Вы писали:


LVV>>1. ООП — он и в Африке ООП. Хоть на Яве, хоть на С++.

E>А на чистом Си ? Можно ли на Яве писать процедурно, а на чистом Си объектно ориентированно ?
Да запросто!
Хочешь быть счастливым — будь им!
Без булдырабыз!!!
Re[7]: Об обучении программированию в некоторых престижных вузах
От: -n1l-  
Дата: 27.10.14 16:12
Оценка:
Спасибо, Валерий Викторович.
Re[8]: Вот тебе пример кода
От: LaptevVV Россия  
Дата: 27.10.14 16:23
Оценка:
// автомат-преобразователь для целых чисел
// с установкой кода ошибки разбирается вызывающая функция!
struct Data
{   int N;            // число
    int sign;
    byte B;            // основание системы счисления
};
const int notDigit = -1;
int digit(char ch, byte B = 10)
{ string digits = "0123456789abcdef";
  int d;                // возвращаемая цифра 
  for(d = 0; d < B; ++d)
    if(ch == digits[d]) return d;
  string xdigits = "ABCDEF";        // если большая шестнадцатеричная
  for(d = 0; d < 6; ++d)
    if(ch == xdigits[d]) return d+10;
  return notDigit;            // символ - не цифра
}
// класс-преобразователь типа
class State;
typedef State (*function) (char ch, Data &D);
class State
{ public:
    State(function f = NULL): F(f) {}
    operator function() { return F; }
  private:
    function F;
};
// состояние – поступила очередная цифра
State s2(char ch, Data &D)
{   int d = digit(ch, D.B);
    if(d == notDigit)            // ОШИБКА - неправильный символ
    throw IllegalInteger();    // генерируется исключение
    else                // накапливаем
    { D.N = D.N * D.B + d; 
      return s2;             // в состояние s2
    }
}
// состояние – после первого нуля!
State s1(char ch, Data &D)
{ if     ((ch == 'x')||(ch == 'X')) D.B = 16;
  else if((ch == 'b')||(ch == 'B')) D.B = 2;
  else                                 // ОШИБКА - неправильный символ
    throw IllegalInteger();
  D.sign = +1;                // не десятичные - беззнаковые
  return s2;                // в состояние s2
}
// состояние – первый символ
State start(char ch, Data &D)
{ if(ch == '0')      return s1;    // в состояние s1 
                    // первый символ - знак
  else if (ch == '-') { D.sign = -1; D.B = 10; }              
  else if (ch == '+') { D.sign = +1; D.B = 10; }
  else                    // первая цифра - десятичная
  { D.sign = +1;            // число положительное
    int d = digit(ch);
    if (d == notDigit)        // ОШИБКА - неправильный символ
       throw IllegalInteger();
    else                // если-таки десятичная цифра
    { D.B = 10; D.N = d; }
  }
  return s2;                 // в состояние s2
}
// основная программа автомата
int Integer(const string &str)
{ Data D = {0};
  State s = start;
  typedef basic_string<char>::const_iterator Iterator;
  Iterator it = str.begin();
  while(it != str.end())        // основной цикл по состояниям
  { 
    s = s(*it++, D);        // переходы по состояниям
  }
  return D.N * D.sign;
}

Переводит числа десятичные, шестнадцатеричные (0хD...D), двоичные (0bD...D)

Обратите внимание, насколько короче оказалась основная функция преобразователя: цикл «выродился» в единственную строку — смену состояния. Сам цикл ДКА выполняется до конца строки, или до «нулевого состояния». Нулевое состояние State() возникает либо в случае ошибки, либо при распознавании суффикса беззнаковости .
Проверка работоспособности преобразователя делается просто:

string c1 = "100";                // десятичная константа
string d1 = + 34;
string d2 = -56;
string c2 = "0x1a0e";                // шестнадцатиричная константа
string c3 = "0b10010101";            // двоичная константа
// проверка работоспособности автомата
cout << "c1 =" << Integer(c1) << endl;
cout << "d1 =" << Integer(d1) << endl;
cout << "d2 =" << Integer(d2) << endl;
cout << "c2 =" << hex << Integer(c2) << endl;
cout << "c3 =" << hex << Integer(c3) << endl;

Наша функция переводит символьную строку в число, а при выводе в стандартный поток система выполняет перевод числа обратно в символьный вид. Значения, получаемые системой, совпадают со строковыми константами, что и подтверждает правильность работы преобразователя.

Нужно подчеркнуть, что модифицировать такую реализацию автомата значительно проще, чем многоальтернативный switch: изменения в работе некоторого состояния затрагивают только одну функцию. Если же требуется ввести новое состояние, то достаточно добавить новую функцию с таким же прототипом, не затрагивая основной функции. Например, в нашем автомате отсутствует состояние ошибки — просто генерируется исключение. В состояние ошибки автомат может переходить либо из стартового состояния, если первый же символ оказался не цифрой, либо из состояния s1, если второй символ не является символом «x» или «b», либо из состояния s2, если очередной символ — не цифра. Для обработки ошибок нам достаточно определить функцию-состояние Error(), и в состояниях start, s1 и s2 вместо возврата State() возвращать Error. Инкапсуляция — в действии!

Еще несколько замечаний по реализации. Во-первых, не учитываются беззнаковые десятичные константы. Исправить этот недостаток несложно — оставляем это читателю в качестве упражнения. Во-вторых, могут возникнуть проблемы переполнения (см. раздел «Контрольные вопросы и упражнения»).
Внимательный читатель должен обратить внимание на то, что для вычисления длинных целых констант требуется другой автомат-преобразователь. Сами функции-состояния остаются теми же, но структура Data должна содержать поле для длинного целого.

Хочешь быть счастливым — будь им!
Без булдырабыз!!!
Re[5]: Об обучении программированию в некоторых престижных вузах
От: elmal  
Дата: 27.10.14 17:46
Оценка:
Здравствуйте, LaptevVV, Вы писали:

LVV>Да запросто!

Это хорошо . А то вот очень многие говорят, что такое невозможно, и программа автоматически становится ООП, если написана на яве, и процедурной, если написана на си .
Re[9]: Вот тебе пример кода
От: elmal  
Дата: 27.10.14 17:55
Оценка:
Здравствуйте, LaptevVV, Вы писали:

LVV>
LVV>// автомат-преобразователь для целых чисел
LVV>

О, господи. Это у Саттера чтоль такой стиль????? Прям прекрасный вопрос на собеседованиях — что вы думаете об этом коде и как его исправить . Я надеюсь это не код полностью готового к практической работе суперспециалиста ?
Re: Об обучении программированию в некоторых престижных вуза
От: sourcerer Германия  
Дата: 27.10.14 18:07
Оценка:
Здравствуйте, LaptevVV, Вы писали:

LVV>Купил я тут намедни на Озоне книжку: Иванова, Нечушкина. Объектно-ориентированное программирование. Учебник.

LVV>Вот на Озоне: https://www.ozon.ru/context/detail/id/29374512/
LVV>Обращаю внимание — это УЧЕБНИК, написанный в Бауманке. В 2014 году.
LVV>Бауманка, чтоб вы все знали — это российский законодатель в направлениях по ИТ.

А в немецком Уни вообще — общими были только вопросы и задачи, а как и по какому учебнику — это личное делo каждого (правда — это был продвинутый курс по программированию в автомотиве, я там вообще-то мастера-информатика делал, имея уже российский диплом инженера-программиста), но тем не менее — на учебниках никто особого внимания не акцентировал, главное — чтобы на вопросы правильно отвечал и лабораторные сдавал.
Недостатки прощаются, достоинства — никогда.
Отредактировано 27.10.2014 18:10 sourcerer . Предыдущая версия .
Re[9]: Вот тебе пример кода
От: velkin Удмуртия https://kisa.biz
Дата: 27.10.14 18:14
Оценка: -1
Здравствуйте, LaptevVV, Вы писали:

LVV>Нужно подчеркнуть, что модифицировать такую реализацию автомата значительно проще, чем многоальтернативный switch


Только вот switch прост и его все понимают, а это велосипед. В ядре Qt есть машина состояний, в бусте, можно ещё что-нибудь найти. Я вот думаю для себя, может вредно читать заумные книжки по STL и начинать надо с более простых. Насколько логично использовать итераторы в связке с циклами, а не алгоритмами? По идее итератор должен заменять цикл, а алгоритм прописываться отдельно. Но это по идее. Да и в целом, в С++ вроде бы или пишешь в ООП с инкапсуляцией, наследованием и полиморфизмом, или в обобщённом программировании (шаблоны C++), а там правила уже совсем другие. Можно писать в процедурном стиле, и засунуть в код детали от ООП и обобщённого, но зачем? В итоге это всё равно процедурное программирование.
Re[5]: Об обучении программированию в некоторых престижных вузах
От: Философ Ад http://vk.com/id10256428
Дата: 27.10.14 18:15
Оценка:
Здравствуйте, LaptevVV, Вы писали:

LVV>Здравствуйте, Философ, Вы писали:


LVV>>>1. ООП — он и в Африке ООП. Хоть на Яве, хоть на С++.


Ф>>о! кстати!

Ф>>а в Smalltalk'e Objective-C как, тоже?
LVV>Да. Семантика — одна и та же.

гм... смотря что понимать под семантикой...
вы что в данном случае понимаете здесь под этим словом?
Всё сказанное выше — личное мнение, если не указано обратное.
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.