Re[2]: Раннее знакомство с Java калечит судьбы программистов
От: frёёm Россия  
Дата: 17.01.08 12:13
Оценка: 13 (2) +3 -4
Имхо ничего лучше досового обжект паскаля, для изначального обучения не прудмано...

Дельфи разжижает мозг своим дизайнером форм.
Начинать сразу с си++ сложно, и синтаксис у него схода не так понятен.

Так что вариантов по моему не много...Фаронов жжот...
Ни что в жизни ни даёться так просто как... хотелось бы...
Re[7]: Раннее знакомство с Java калечит судьбы программистов
От: Pavel Dvorkin Россия  
Дата: 28.01.08 07:06
Оценка: 40 (5) -1
Здравствуйте, IT, Вы писали:

IT>Здравствуйте, Pavel Dvorkin, Вы писали:


PD>>В C (даже не С++) весь практически файловый (и не только) ввод/вывод можно сделать на полутора десятках функций из stdio.h, ну а там где не хватит, придется кое-что из io.h брать. . Если инкапсулировать их, то 2 класса получится. В крайнем случае еще Win32 добавим — еще пара десятков функций.


IT>"В огороде бузина, а в Киеве дядька". Мы сравниваем стандартные библиотеки или написанный с помощью этих библиотек код? К библиотекам и фреймворкам предъявляются совершенно другие требования. В частности имено из-за бедности, я бы даже сказал из-за нищеты, стандартных библиотек C/C++, каждая уважающая себя C++ библиотека реализует в том или ином виде свой собственный класс XXXString.


А нельзя ли объяснить, какое отношение XXXString имеет к вводу/выводу ? Подмена объекта обсуждения — не лучший способ дискутировать. Что же касается string — я думаю, не надо объяснять, что он есть в STL, примерно с теми же возможностями, что и в C#.


>Да и вообще это первопричина всей той вакханалии с библиотеками, которая свирепствует в C/C++.


И в чем эта вакханалия заключается, если не секрет ? Что-то мы до сих пор ее как-то не замечали...

IT>Но вернёмся к файлам, чтобы продемонстрировать всю нелепость сравнения теплого с мягким. Неважно сколько классов в стандартной библиотеке, важно сколько кода у меня получится после пременения всего этого добра. Вот так, например, в одну строчку я могу решить задачу чтения строки из небольшого файла по номеру:


IT>
IT>string GetLine(int n)
IT>{
IT>    return File.ReadAllText("filename.ext").Split('\n')[n];
IT>}
IT>

IT>Прошу заметить, что этот код абсолютно корректно обработает все исключительные ситуации и выбросит вменяемые исключения.

IT>Маэстро может привести свой вариант на C/C++, а мы посмотрим.


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


Да, твой код выглядит очень просто. Мой будет несколько сложнее, поскольку такого класса под руками нет. Могу написать, а впрочем, уже написал почти — см. http://rsdn.ru/forum/message/2811970.1.aspx
Автор: Pavel Dvorkin
Дата: 25.01.08
, легкая модификация его даст то, что ты хочешь, ну а что касается исключительных ситуаций — то в самом чтении строки их попросту не будет (кроме недопустимого номера, конечно), а что касается открытия файла и т.д. — это я не сделал там, но это работы на 5 минут. Инкапсулировать этот код в класс проблемы не составит.

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

А теперь берем твой File.ReadAllText и запускаем Reflector


public static string ReadAllText(string path, Encoding encoding)
{
    using (StreamReader reader = new StreamReader(path, encoding))
    {
        return reader.ReadToEnd();
    }
}



public virtual string ReadToEnd()
{
    int num;
    char[] buffer = new char[0x1000];
    StringBuilder builder = new StringBuilder(0x1000);
    while ((num = this.Read(buffer, 0, buffer.Length)) != 0)
    {
        builder.Append(buffer, 0, num);
    }
    return builder.ToString();
}


Красота! Сначала читаем в буфер размером почему-то в 0x1000 байт. Внутри этой Read стоит цикл


   do
    {
        int num2 = this.Read();
        if (num2 == -1)
        {
            return num;
        }
        buffer[index + num++] = (char) num2;
    }
    while (num < count);




что само по себе просто прелесть. Читать по одному байту из файла — это просто чудо.
Теперь этот буфер присоединяется к StringBuilder'у

Итак, в буфер перекачали весь файл побайтно. В виде одной строки.

Теперь Split. Тут и без рефлектора обойдемся. Хватит и MSDN

The Split methods allocate memory for the return value array object and a String object for each array element

Итак, из этой строки (== файл) сделали массив строк, размер которого никак уж не меньше исходной строки.

Итого — два буфера размером в исходный файл и чтение побайтно из этого файла.

Это к вопросу о том "важно сколько кода у меня получится после пременения всего этого добра".

ИМХО лучшей демонстрации того, как не надо делать, я еще не видел. Я в свое время, когда вел у студентов курс по структурам данным, за такое программирование безжалостно требовал переделки целиком.

Эх, ладно. Пропустим тест. Исходный файл имеет размер 12 Мб, состоит из повторяющегося фрагмента

Пример
Юникодного
файла

и так 239616 раз (делал его с помощью Copy-Paste

Мой код — см.http://rsdn.ru/forum/message/2811970.1.aspx
Автор: Pavel Dvorkin
Дата: 25.01.08
, чтобы он печатал последнюю строку, надо лишь один printf добавить, так что время остается то, что в этом сообщении —

Time 0,015000 сек. VS 2005, Release

Беру твой код. VS 2005, Release


    class Program
    {
        static string GetLine(int n)
        {
            return File.ReadAllText("D:\\пример1.txt").Split('\n')[n];
        }

        static void Main(string[] args)
        {
            DateTime dtStart = DateTime.Now;
            string res = GetLine(718847);
            DateTime dtEnd = DateTime.Now;
            Console.Out.WriteLine(dtEnd - dtStart);
        }
    }


Время колеблется от 0.5 сек до 2.5 сек. Берем по минимуму, 0.5 сек.

0.5/0.015 = 33 раза

С чем тебя и поздравляю. Воистину бесплатный сыр бывает только в мышеловках!
With best regards
Pavel Dvorkin
Re[7]: Чрезвычайно важное дополнение
От: Геннадий Васильев Россия http://www.livejournal.com/users/gesha_x
Дата: 19.01.08 04:32
Оценка: 32 (5) +1
Здравствуйте, SergH,

Заметил тонкую подмену, которую допустили авторы. Любопытно.

Парадокс в том, что на самом деле взаимозаменяемы именно высококлассные специалисты. То, что зачастую подразумевается под "взаимозаменяемостью", это взаимозаменяемость низкоквалифицированного персонала в рамках довольно таки узкой специализации. Ну, типа, одна PHP-обезьянка с лёгкостью заменит другую PHP-обезьянку. А вот .Net-обезьянку PHP-обезьянка заменить не сможет.

А те, кто повыше квалификацией, уже не так сильно зависят от языков, технологий и процессов. Хотя могут каких-то деталей и не знать в данный определённый момент. Вот потому они взаимозаменяемы, и в конечном итоге их цена оказывается приемлемой. Тогда как "взаимозаменяемые" обезьянки на практике невероятно дороги, потому что:

— Развитое деление по специализациям. Нужно искать отдельных людей на каждую технологийку;
— Требуется постоянный контроль;
— Если возникает мало-мальски нетривиальная задача, то на глубокие и детальные объяснения с последующим контролем отвлекаются силы гораздо более дорогих специалистов.

И кому такое положение дел может быть выгодно? Это ж катастрофа! Незаживающая язва!

Вот и получается, что ратуют профессора как раз за выпуск действительно взаимозаменяемых специалистов. Только заменяться они смогут в контексте "программирования" вообще, а не вокруг ",Grid 10 Universe Edition".
Я знаю только две бесконечные вещи — Вселенную и человеческую глупость, и я не совсем уверен насчёт Вселенной. (c) А. Эйнштейн
P.S.: Винодельческие провинции — это есть рулез!
Re: Раннее знакомство с Java калечит судьбы программистов
От: Pavel Dvorkin Россия  
Дата: 18.01.08 10:42
Оценка: 2 (1) +2 -3
Здравствуйте, fplab, Вы писали:

Ох, не говори!

Вот сейчас сижу и разбираюсь с Ява- программой, которая, в общем-то, довольно простые действия делает. Черт знает что. Несколько десятков классов, тысячи строк, интерфейсы, геттеры, сеттеры, какие-то синхронизированные очереди. Пока разберешься в этом взаимодействии классов — голова опухнет. Так хочется ее на С++ переписать — думаю, строк в 500 уложился бы наверняка...

У меня вообще подозрение, что если сравнивать код C++ и (Java, C#), по числу строк, то надо за одну строку на C++ 5 строк Java давать. Столько там чистого оверхеда...
With best regards
Pavel Dvorkin
Re[5]: Раннее знакомство с Java калечит судьбы программистов
От: Pavel Dvorkin Россия  
Дата: 25.01.08 07:52
Оценка: -3 :)))
Здравствуйте, IT, Вы писали:

IT>Количество классов в количестве раз в 5 превышающим реально необходимое от языка не зависит. Это зависит от радиуса кривизны ручек.

Ну тогда, видимо, в Microsoft и Sun очень криворукие программисты .

В C (даже не С++) весь практически файловый (и не только) ввод/вывод можно сделать на полутора десятках функций из stdio.h, ну а там где не хватит, придется кое-что из io.h брать. . Если инкапсулировать их, то 2 класса получится. В крайнем случае еще Win32 добавим — еще пара десятков функций.

Собственно, в MFC оно так и есть — CFile с наследниками для собственно в/в и CFindFile для работы с каталогами. Ну еще CArchive для любителей потоков.

А теперь берем C#

Directory
DirectoryInfo
DriveInfo
File
FileInfo
FileStream
BufferedStream
FileSystemInfo
BinaryReader
BinaryWriter
StreamReader
StreamWriter
TextReader
TextWriter

Я ничего не забыл ? Да, еще с десяток exception-классов. Ну нельзя же конец файла обработать иначе, как не создав для этой цели EndOfStreamException



Ну можно и в Яву заглянуть. Тут побольше будет.

java.io.File
java.io.InputStream
java.io.ByteArrayInputStream
java.io.FileInputStream
java.io.FilterInputStream
java.io.BufferedInputStream
java.io.DataInputStream
java.io.LineNumberInputStream
java.io.PushbackInputStream
java.io.ObjectInputStream
java.io.PipedInputStream
java.io.SequenceInputStream
java.io.StringBufferInputStream
java.io.ObjectStreamClass
java.io.OutputStream
java.io.ByteArrayOutputStream
java.io.FileOutputStream
java.io.FilterOutputStream
java.io.BufferedOutputStream
java.io.DataOutputStream
java.io.PrintStream
java.io.ObjectOutputStream
java.io.PipedOutputStream
java.io.RandomAccessFile
java.io.Reader
java.io.BufferedReader
java.io.LineNumberReader
java.io.CharArrayReader
java.io.FilterReader
java.io.PushbackReader
java.io.InputStreamReader
java.io.FileReader
java.io.PipedReader
java.io.StringReader

(Взял как есть из документации, так что если что-то лишнее попало — не ругайте. Суть дела это не изменит).
With best regards
Pavel Dvorkin
Re[8]: Раннее знакомство с Java калечит судьбы программистов
От: IT Россия linq2db.com
Дата: 28.01.08 15:43
Оценка: +4 -1 :)
Здравствуйте, Pavel Dvorkin, Вы писали:

PD>А нельзя ли объяснить, какое отношение XXXString имеет к вводу/выводу ? Подмена объекта обсуждения — не лучший способ дискутировать.


Это имеет прямое отношение к стандартным библиотекам.

PD>Что же касается string — я думаю, не надо объяснять, что он есть в STL, примерно с теми же возможностями, что и в C#.


Редкостное дерьмо ваш STL, вы уж извините мне мой французский.

>>Да и вообще это первопричина всей той вакханалии с библиотеками, которая свирепствует в C/C++.


PD>И в чем эта вакханалия заключается, если не секрет ? Что-то мы до сих пор ее как-то не замечали...


А я замечал пока писал на C/C++ и могу сказать, что нужно очень крепко зажмуриться, чтобы этого не замечать.

IT>>Маэстро может привести свой вариант на C/C++, а мы посмотрим.


PD>Печально, что дискуссия уходит в другую сторону. Я ведь не о том говорил, сколько кода получится,


У меня вообще подозрение, что если сравнивать код C++ и (Java, C#), по числу строк, то надо за одну строку на C++ 5 строк Java давать. Столько там чистого оверхеда...

Твоё?

PD>Да, твой код выглядит очень просто. Мой будет несколько сложнее, поскольку такого класса под руками нет.


Он будет не просто сложнее, он будет в десятки раз сложнее. Вместо одной строчки у тебя будет 33. А если у меня будет код в 1000 строк, то у тебя будет все 33,000?

PD>Итого — два буфера размером в исходный файл и чтение побайтно из этого файла.


Ты, конечно, молодец, что так постарался и покопался в этом деле рефлектором. Но знаешь что я тебе скажу? Мне пофиг как оно там внутри работает. Оно работает, решает свою задачу с приемлемой для моих задач производительностью и мне этого достаточно. А вот то что я решаю это всё в одну строку — это огромный плюс, потому что строк у меня таких не одна, а десятки тысяч и увеличение объёма кода в 33 раза, как в твоём случае для меня неприемлемо. Я не из тех, кто любит хвастаться проектами в миллионы бестолковых строк.

PD>Это к вопросу о том "важно сколько кода у меня получится после пременения всего этого добра".


Конечно важно. У меня это 1 (одна) строка.

PD>Эх, ладно. Пропустим тест. Исходный файл имеет размер 12 Мб, состоит из повторяющегося фрагмента


Тут ты явно перестарался. Речь шла о небольших файлах. Впрочем и с большими разница не существенная. Гигабайтные файлы тоже в своё время приходилось обрабатывать. Не таким образом, но тоже на C#. Если не ошибаюсь, парсинг 3-х гигабайтного файла занимал что-то около 20 секунд, а потом шла вставка в БД 11 миллионов строк. Так вот, внимание, вставка в БД занимала почти час. Теперь ответь мне какая разница будет между C++ и C#, если на C# это занимает 20 секунд и 1000 строк, а на C++ одну секунду и 20,000 строк? А я тебе скажу. Написание всего того кода у меня заняло пару дней + нулевые усилия на сопровождение. Примерно в тоже время ко мне на интервью приходил чувак, которые точно такой же фигнёй занимался на C... теперь читаем внимательно... ЧЕТЫРЕ ГОДА!

PD>Время колеблется от 0.5 сек до 2.5 сек. Берем по минимуму, 0.5 сек.


PD>0.5/0.015 = 33 раза


Я сейчас умру от смеха

PD>С чем тебя и поздравляю. Воистину бесплатный сыр бывает только в мышеловках!


Этот сыр очень дорогого стоит. Небольшое падение производительности (которого, кстати, в моём случае на небольших файлах вовсе нет) — это ерунда. Мои продакшин сервера один фиг загружены максимум на 5%. А вот написание, отладка и поддержка кода, который в десятки раз больше — это существенный нюанс.
... << RSDN@Home 1.2.0 alpha rev. 771>>
Если нам не помогут, то мы тоже никого не пощадим.
Re[7]: Раннее знакомство с Java калечит судьбы программистов
От: LaptevVV Россия  
Дата: 18.01.08 08:03
Оценка: 4 (3) +2
Здравствуйте, kaa.python, Вы писали:

LVV>>И наша практика показала, что после паскаля большие трудности при освоении некоторых мест С++ возникают. Например, передача указателя в качестве параметра.

KP>А если давать Java/C#, разве проблем не больше будет? В паскале хотя бы есть понятие указатель (если мне память не изменяет).
Дык мы Додиез только после С++ даем!
KP>Разве GNU Lisp простенький? Кроме того, бесплатный и с кучей документации. Т.е. для реальной работы может он и простоват (трудно судить не имею опыта коммерческой разработки на нем), но для обучения самое оно, на мой взгляд.
KP>Ну, кроме того, можно ту же Схему взять
Спасибо за наводку — я как-то о ГНУ и забыл...
Эт все правильно. НО!... Одна единственная причина на корню губит все благие намерения: кто преподает?!
Мало кто из преподов способен учить первачков на Лиспе или Схеме. Это ж самим нужно сначала научиться!
А в вузе сейчас мало таких профи. А те, кто есть (молодые аспиранты) — они не профи в области преподавания. Тоже проблема ж. Например, работает аспирант в отделе АСУ, пишет проги на додиезе, реальные проги. Знаем много, умеет много. Но преподать — проблема! Студенты у него как правило с трудом сдают, даже самые лучшие. И понятно почему. Он — программер, а не препод. Это две разные профессии.

Еще один скользкий момент может в наше время случиться при обучении студентов скале или лиспу. Всегда есть на курсе ряд активных студентов, которые постоянно возникают по поводу того, чему их учат. Скала или Лисп — это в нашей российской действительности фактически неупотребляемые вещи. Запросто может возникнуть ситуация, когда группа студентов пойдет в деканат и заявит, что учат их всякой фигне. И начнется разбор полетов на уровне декана. Оно нам надо?
С== — это по-любому в струе, тут ни один студент не сможет заявить, что он типа не сдал, потому как учат всякой фигне...
Вот такая нынче демократия...
Хочешь быть счастливым — будь им!
Без булдырабыз!!!
Re[9]: Раннее знакомство с Java калечит судьбы программистов
От: Аноним  
Дата: 29.01.08 16:23
Оценка: +4 -1
Здравствуйте, Pavel Dvorkin, Вы писали:

PD>P.S. Задачу, подобную этой , я студентам даю в качестве упражнения по memory-mapped файлам.


Павел, вы плохим вещам бедных наивных деток учите.

Если задача стоит так, что требуется максимальная скорость доступа к записи с произвольным номером, то что из этого следует? Из этого следует, что файл должен быть организован так, что произвольный доступ стоил бы O(1). Точка. Другие варианты не обсуждаются. Вы же издрючиваетесь хитрыми системнозависимыми подвыпердыхтами, оптимизируя до посинения свой O(n). Это плохо. Очень плохо. Не культурно. В приличном обществе такой код не демонстрируют, трусами стыдливо прикрывают.

Если скорость не важна, и надо просто в приемлимое время прочитать n-ю строку из простого текстового файла (и у нас ОС из разряда потомков Юникса, не знающая никаких RMS), то и выпендриваться не надо, решение многоуважаемого IT канает на раз-два. Если скорость принципиальна, то за использование плоского текстового файла надо карать жестоко, а при использовании правильной структуры скорость работы от языка реализации и используемой библиотеки зависеть не будет практически никак.
Re[9]: Раннее знакомство с Java калечит судьбы программистов
От: Геннадий Васильев Россия http://www.livejournal.com/users/gesha_x
Дата: 28.01.08 17:55
Оценка: 34 (3) :)
Здравствуйте, IT, Вы писали:

PD>>Да, твой код выглядит очень просто. Мой будет несколько сложнее, поскольку такого класса под руками нет.

IT>Он будет не просто сложнее, он будет в десятки раз сложнее. Вместо одной строчки у тебя будет 33. А если у меня будет код в 1000 строк, то у тебя будет все 33,000?

Да ну?!

bool get_line(std::string *s, int n)
{
  std::ifstream istr("myfile.txt");
  while(n-- && std::getline(istr, *s));
  return n < 0;
}


Только STL.

IT>Но знаешь что я тебе скажу? Мне пофиг как оно там внутри работает. Оно работает, решает свою задачу с приемлемой для моих задач производительностью и мне этого достаточно. А вот то что я решаю это всё в одну строку — это огромный плюс, потому что строк у меня таких не одна, а десятки тысяч и увеличение объёма кода в 33 раза, как в твоём случае для меня неприемлемо.


Охренеть. И все десятки тысяч читают из файла строчки по номеру?

IT>Я не из тех, кто любит хвастаться проектами в миллионы бестолковых строк.


Особенно — мифических.

PD>>Это к вопросу о том "важно сколько кода у меня получится после пременения всего этого добра".

IT>Конечно важно. У меня это 1 (одна) строка.

Стыдюсь. Целых две! return не считаем, у тебя его нет.

PD>>Эх, ладно. Пропустим тест. Исходный файл имеет размер 12 Мб, состоит из повторяющегося фрагмента

IT>Тут ты явно перестарался. Речь шла о небольших файлах. Впрочем и с большими разница не существенная. Гигабайтные файлы тоже в своё время приходилось обрабатывать. Не таким образом, но тоже на C#. Если не ошибаюсь, парсинг 3-х гигабайтного файла занимал что-то около 20 секунд, а потом шла вставка в БД 11 миллионов строк. Так вот, внимание, вставка в БД занимала почти час. Теперь ответь мне какая разница будет между C++ и C#, если на C# это занимает 20 секунд и 1000 строк, а на C++ одну секунду и 20,000 строк?

Хм. Только что было 33:1, сейчас — 20:1. Тебя не разберёшь.

IT>А я тебе скажу. Написание всего того кода у меня заняло пару дней + нулевые усилия на сопровождение. Примерно в тоже время ко мне на интервью приходил чувак, которые точно такой же фигнёй занимался на C... теперь читаем внимательно... ЧЕТЫРЕ ГОДА!


Ну давай, зови сюда своего "чувака", пущай расскажет — почему. Вот тогда и видно будет, кто чего и почему написал.

PD>>Время колеблется от 0.5 сек до 2.5 сек. Берем по минимуму, 0.5 сек.

PD>>0.5/0.015 = 33 раза
IT>Я сейчас умру от смеха

Прежде "чувака" позови!

PD>>С чем тебя и поздравляю. Воистину бесплатный сыр бывает только в мышеловках!


IT>Этот сыр очень дорогого стоит. Небольшое падение производительности (которого, кстати, в моём случае на небольших файлах вовсе нет) — это ерунда. Мои продакшин сервера один фиг загружены максимум на 5%. А вот написание, отладка и поддержка кода, который в десятки раз больше — это существенный нюанс.


Уже просто "в десятки". Ладно, подождём следующей итерации.
Я знаю только две бесконечные вещи — Вселенную и человеческую глупость, и я не совсем уверен насчёт Вселенной. (c) А. Эйнштейн
P.S.: Винодельческие провинции — это есть рулез!
Re[22]: Раннее знакомство с Java калечит судьбы программисто
От: FR  
Дата: 31.01.08 09:36
Оценка: 34 (3) +1
Здравствуйте, CreatorCray, Вы писали:



SH>>Питон относится к этому проще.. Например, Питоновский int никогда не переполняется.

CC>угу. И 287368235523^1024 * 76523876532^512 тоже посчитает и будет хранить?

In [3]: 287368235523**1024 * 76523876532**512
Out[3]: 881731476847030925412266342176498065789402947529274810480513659110969348
79195923611007134110266210912455811459881406953515522791745335429250066035076552
81679228783465369757542723226725730170839250060689379869047278174216968518995517
84064926709107406322466746702361373383826523334040078499332234153028646144981394
69565584612617052222703321922756323827538809347702021203195632345539155948975880
94396380045568316752195708092979134322817513054876474864439751993723630526722015
70299778472214504455778303309185235695121377762579964164708533970148925779177175
95630497471002398142903635849824243175974964756506623650542452528149104080789059
33743501144351138240440999734377906464203436796705788241626916310824999341985028
02509279068698984272854580596800233547914064088576769782906414928237967721153524
53692069790431387906926762588792454097635096015349194464078217749077514454676172
07227658660086804270975698491137159804986678553312126142697522937614389288418568
86769229470425851128709328958728032870553642748497139091229239388160381246565529
73796587638379009782188781584845450710096128753795758982159730057231660652563528
92749916109731921297283205832320063134024270215692552815146781647724135518171005
31781870409936441306432700387677941667561136524798208598678816402158499053774676
01727314208518552774267422361863692087734567367827805047506158760499742380123789
47102293839101322572561969834524880160637292218525587853590350469501449270462439
31257375884554050883983149299402794376576345430404067729579850405322093059771070
07351172699780914845762568443984034533541889653836437497916263941945963887173648
32829105236993729434902607096045816099888273523312865918853350394632091037320080
85258677946950929194333267224144188460643776503502678637510920794083155728903038
68951317623690318137901270413405361902599003448205712289912527881493853013010105
22776065637443740009732543554370959266669106783036610717094449266382326597597098
03653920387508001672164604649809944418102688148748787854816904947293484611129251
58365231344214559341276261409246203983161148701458828962125123517773203341257535
80756651500968877491833018162384162160694630867391544631551599662673756373937013
34554499808592103342656828868082094937529225137729246602277951595433976154583791
11448774438740847942492765147063599621368129633237524426121743996049430333607236
38826943092641522662301782797982308426359582920123116306035248498734582840724615
33676898845393013427160175656775849257314150445020338921570244915976750805171188
96273019323877581494827960164105320354885905668066797301906729275273023230693882
82599532371885811014069930617927377212814679092636058423733195581055859403603970
41834103893100932063682615836027041969970699700406508346447352933867114144239760
53643988971273334026591692028665240904602907067017829940350360374787418976385232
85573458430006545475665254706214528409367583817050887159711161735011651463219787
75760238579877697847553131958540925393428446213923112594781623757596667850689460
58227829542766861567176231147188949539658440587828229547266240043836283875431746
23269564764474062702845201962013194255434979187065005891449036566566070469255910
00789570935243993542830262903482599426713385918703757595529454665864448337833625
43549833025951200908919016587646995214206064771689538505317537832763473851594300
08228065774182816012004091444852480645466468080270038266198567926950765628366784
93526054747009805556643391795596308761383378441140598077324213917981484975903922
25739834535442802001145660269657240491530494136116393068822900265405953617685760
74210966243023624288164529173236062835151156327808204408679635537581696022658414
00834313529054544069983944774298262705683676078576173497450667012526737887470606
56216870142046602949745710420002134171786136433561098501330985180347458469517374
92612227111472307496227302635018460383354154476598122588746461518865641036346152
08550639146311220727869884862024591780131115550043027930494437891717058199720773
72393839102527484257660656576763212108240748248215908416861571602137745932907173
81574080523380839058082120621231381097877165791120950477747468340900423785492550
24135075834976184760140548601679564689271370630486227493200747619164704552077687
37152211600226490883105779668774505922213846135636727474414082815183337815694298
28711278101005910490758266901369362273246981237384798150242949343431127351853373
04622162160956796353994902826470243670720949923752990735546669170378503883625823
79280220659758040871415009071667155392440998926910885932393884603539299497808034
62273800942000567435393728251806931815324877447724259429061420638300380950785615
15350383337086060715004644696633210200556074476704902595848142059929852528056415
28038408025930986703939902255648333294951815898510193307254511628569867341012131
81158343234507965061872022559139561926600314204560283434940010143160814270526954
57387135946428960768816366084816427479520696923579192644333657238313434399318527
22074879087078170048108393454517177757598810200895367097913931326578553991736698
55263382691698261808972919103620110741690851455490605679860488602381402377240636
92959413272295961954695478058369020185278272406368265979076329508376167244310411
78888364711204554370630867536799973587636625601984943682694693863153757517955311
77351516753281054658557846051092045109236848290353526408070959876088570478149573
55633235546821300168704498944888976602725323445907714745375832800114193743511286
42494352761684477412800699525317030854872523747148471171408339232981200574547320
21440272365784473927566702582741516721857608531116280577649673151845332501355440
09240946058978288360423343484914775128955450080455310203036765993560340708389745
96030265587690234508632573647182410939958075622973752785693375197448596998881490
04135595055606723390461934284095263240923400163736064887957568960291717308782773
68810850053368988351311033612463868757148582096492790189155506792878925166982017
62364593292734587056167896742482012283288669938138468523001840776537581067894830
06733486405479671416639340037202078248418411631595172521186900433369100704526000
24764517811594375977593293374001001569497713323161199968546674514397559979292971
31840157835276970794909736882885161381913881024544461610604709702211522161830059
79418900119314163001630071870722543286503162440019861697570252307878362294514073
58415785710575083031335618394903113858442294087626363645521434823205838611015726
82149021121912621225965830999875353089742166994697236599793679951243890015489526
20095694013225686647706832315540858324028238972982553036463103070608980130197242
92613981818726042741945297126556140636653933712744817995679713725685140472845429
45494802672253164571378512546550263457836153961438852385344449009091285344460049
82068415161639127466648024913087530916412926874322152299843674805227102269438239
55365732706228975915417574193439051337038987248783573897605466615303172525924562
40436463313852900788302797805890867387245060040537728574334458529919288594821059
90932754644714316321343367863102983000216468623527294486209069872284765395478598
58177609539195061785216661301473979925999259120224276557770675829173131829962855
44862277661082258280054980493162400749559242829091075897176726842287228733054787
16963732812354368301580660292405509765025444209529868992224270612285227532760488
84105050807785922013149923888565355006730206581897434268754421859602970913504674
85987495262908279571204295212219699326535271057465384195333473473846926243991720
04041278904216261328442178021842428289365025060979206834136156417064978536824994
08132495744410203917819391651663905235483438005024881875672782929488468617012018
24007259527093056181466138013776456921116160947322389093332412362054755438258226
75133628768890185842234487483345144539528603106517831377948238141997786719696757
18916756278660006364983498251744002264207360009477683904379463198102596973848992
08365039414097531880840825099331394605386247294517347229045240721300966962612159
15228035874979590570791933790519828097637330183054668014921291904650973187103538
72289400018853970581124857641470022583462763938083501061677445864989568453004879
57881948875564066405173991283034397349647788697645932609886187614460575887650602
92070045766722422238900239742045418875022105995468630070403059961836505342144876
80877901957299656556318553682487512338217015321424007646876409036416507647908789
45078229391515280782068771259173154607718296620770100447078549403354803465686600
60558427663322633499928299929362589862635265703868913199929292011554081086901425
35790178980455955190874080650017865448682822181883322078815762872984896126519060
27510244836388199493680810632446505344932366207787580607235597333929100825950954
56917099120070816788452367908834983006525969506456629981803289659196486719111030
66715807952322064018454754988527096209280680833694644003948994722664215380686308
80350751564679517472654923414951407396209487285990168300258843014909007749353768
66884939442413616339495669750371316616953155998898956182683217183078502735057537
28097017635817511427177120200597001284070107419468889557042560206484056372945070
35666498105372311852239921440045016539139480147752092004505536669722173062050261
04638838698784474080217107321847908381469271802816004269144961824576509879233897
35318696293131684124159008269946650440434330974170949386418913688661313817802117
21135540397701424717573173731085567034466365900462481043926386391727132832724140
01548624313145082560183942563740527231675920478718707527898937312910267562581602
33993749207298998136314443145035337961363252694255909252003700108500654428688206
64180241260337733056383616387190507038349654043071437450792696073729128440565825
52923825832892338930345214891481010610604504084946008138822707348643369434484809
33786972045076047045547429443534458885867909726826432168546465965442324099140093
90802224297502739953160569510346767937992245038708432635208830218815822211506212
99450638792998089384463843132914447291909304208249695568454897804612328808567584
81865472741924040820833385221334739252559067297995613181534358292541794713961500
57214054096006287630302884399375694156092761868050469548672262831630938537587522
51220594924229963744390031757808664127680069383129285038272926355739713035783815
42595776464551695168667041438775601280816812680141725975989744475912378909687782
11601175118613381693664439457613236947351627460842359007461288233548143562701547
81322804280413932640404964596148473982684673096487114252081305272872203434550825
24971426858945867300719854930631092550088105429677689273069676705296059960995611
90346637123805522605480971694777669224564979434724681968307920836691440431045500
39755629586856162122904857863112077860056881847414330747278425521192753515373813
22626065789873510978793635362314433841512933986314077273845096452494703391515951
04312045187995010315513324593562942125714855591957716954338443298560540405648275
46434485768897851378337063153216946067025469484980932113488549349958631405393087
27973846447222039483506110520042376555000405376517187083868029357683237262607402
64762012185788602489168826566156777854563908977192679192843984736202900932926178
54388178013338391815460611653466064905002827362978379047806098248775860207649640
74555143017738580558611333189975342774732320038266778717040450136740155024065108
23424435124341345849168349449128307707118868855688138864834283850344523584638605
96222335032595460278498776776923901475671339721478870279207279027409928123273112
07434497375735413723959160453886825723470430636407935158258239668003995219158450
02115612448898606520623533355562482274933608086569025087561875149741956888814127
80984262735447635510263291020136687100690695048023240435586543551524570072539235
64164479206166745474534611696700578612204770500761419895027487196723841217902939
15436834636764636208448234969200682469618023024906917795232635763982697741191275
86431052573718816080879983809970714891330933242590772292446921870309051464955733
17791910939876157093883974714366654771222393696877534586589339327885932557960765
50514900624451740702648689130971536456714346701788040991197317516005468624080473
64129529311380552126411935210867411583624312654296232525113896073897732911388458
77502119395553829877657265222514896372971819315645333622811254384553756900945050
65176885550495443231503737477589612638826486330621616866891579839828446742673397
98982135674418280340886335035550388073962639641356520743320002554414575058600787
35666453369533289294901344273029921801326060777310070925819067299961528364678787
05778579329032609631087735896164474630349979017092515581846464836442892449796874
83262413634940391780192095613480712558046973831006469904034608550046644916358980
71572611752174288805224356974792888400849084939186300727315174250411760088834241
17693906982193873627781318815158488590607655479759407297982033880721021748734513
16421799302929008357063446129633951894178272370361864871818642889751277538466837
73376644707675869620049509596457465762392797101712272101080665101314757110260262
00970616322418174454570314807196880426531167270450071389686828080416540257173909
81622807914601593639842754202216471807696663280162669172077115129104980395487881
61767570687128519064108450954132183157902034796403417748477471586935653120534349
10498760550144456195976529950769635773147729279650849466107211936945148004869760
97464252215686499755414740728961463617168921454144199442564800437462397290899809
10415455358810438818200705986602034947138203942704421465448362178853892356572831
83807837626211576065369340240227725769937643407543418481476486827960341512849197
71159082510934198233855815891351019386296901716591421270236078969798996455509930
11377762449632759625175103207392988199639965376288712773044014505700414258550236
69192095681068242720046459406296277337349765717895821221510133765783842987785868
26557615247841659973596974539734809475861556071080209196663682005302958459627458
92466757875687605447779450695430642332554463765685742484952260058789195655543624
38395081829563395885655059967285801625487464578952563703721247736667409800436360
49656625463347734493154313827414110219861723255423241438825321911960236601924872
86272984994494991607597842159401617674960472567145244709295724063574411001124726
38179049605557723651052490376803118041011479219532786844155176744325762150457094
99097202623968624017662220713990917538888951202400291074258827725846751334209290
24770924525221299297567274863760512618896210178415497210183975398903608534907183
69510635291314954242038646606153440613542013654374557339520879143264713628812336
68263207501867274362489508493061286789838319344490435823625771424872379403253563
70740384280298917563501994432144662885443353657476045804921785563185724252217175
18624574249664631492220649320633008981975366656547123411409738613809041049083775
58641667473744674206974018996314157089264750347965429284718157285915995880608649
76214943969530981442941215154316943789380803980373156442367841491721498040189668
64660122721532829312200280448580487999302102156762708505561662397999104151390542
16736128066169751479893529595638923144567932945297779842856351518544383278821744
80423813489926217108196582046502956622403991603733557727414876260496517112006188
78399513934403262619216959073100074191087668719774117706039161128934827394586335
41570258186277370848942129476004191378030961880827254473186143407371007067031805
57154497989641418052513784668752076420489949413248391887260883532172941970250048
31377846062261624865306031545293593282222598400655623635598095614624232150639250
28096037754776661586090979445079750539653330953006561539035366099411914971444343
10523485096521179170988159488840186804240601096278467748083717575151476961288834
65000440304292011024509544703903369290549055237014126117185884532084093034092895
70268874628920679488047532775336462744374134626020356510926948443140855092774220
55400055561002402994968318977069929279471090058836973222921217261295223759990576
81233010416832196948579343614961262680563427051386504048830884334255411829839979
13001501672879059747970994190027304957822227808380084890197886225494768126334514
38254289594504890583962256230995721175902117645433924196070317092931670613677360
96142024131862568882602670904925529751541387802934510133460921618170863692648981
83553665422747734492002559166599731786238185313338148867863416212038870244880486
86468192398034836601363318487341421842957170507549396449859738620824822504210200
85031104027212680984320727645826433043605651246747073330199780538421753484435156
93657736679696846648093652082138977393084577653859286932079232737620714935697619
08953115034578388432011129905441154620537905234338423286506447359668534092677366
38737527543719989290030425730117425063196923507284654059613488446729937915380742
18661923908396316155600309685257937504759521952299921882765579269422262148627460
10809809137515089652096126013763518167682815430402363153141692121431584927775152
56732688385842806768501197529690215652672247996145149041652388006464138351525082
94950129581781566407601302842824143536026302530714427749781940118451127970485369
34804962291747129684778570386922101726879220169545560144865785322724888523637722
11852241735434462517830012500934500279600735895594432389373952876032308748137686
93155113212080876697335653809530753191172943078039564848247840019063020267695810
51146485646168598177915675270733538244149676512143478826497012842424646619574471
84410712612045917300016337526477698085467474886730108888264054503987045998292314
24018052061297377112555495294706836082536814445575114382648873043089086969844763
4908873545732133980519986433622016L
Re: Раннее знакомство с Java калечит судьбы программистов
От: Геннадий Васильев Россия http://www.livejournal.com/users/gesha_x
Дата: 17.01.08 15:22
Оценка: +4
Здравствуйте, fplab, Вы писали:

F>здесь


Жалко, что нет ссылки на исходник, а копаться лень. Сам перевод, конечно, точностью не блещет, одни "значения семантических указателей" чего стоят. Короче говоря, по-моему, тут перепутана причина со следствием: "падение уровня" отмечается уже давно, а Java заменила Scheme относительно недавно и, собственно, явилась своеобразным ответом образовательного процесса на общую деградацию индустрии. Возможно, есть и какие-то ещё, более ясные и точные причины, но мне они неведомы.

Кстати, если говорить о первом языке программирования, то сейчас я уже, пожалуй, склоняюсь к тому, что им должен быть либо LISP, либо, на худой конец — Pascal. Но уж точно — не Java.
Я знаю только две бесконечные вещи — Вселенную и человеческую глупость, и я не совсем уверен насчёт Вселенной. (c) А. Эйнштейн
P.S.: Винодельческие провинции — это есть рулез!
Re[21]: Раннее знакомство с Java калечит судьбы программисто
От: Аноним  
Дата: 21.01.08 14:48
Оценка: 41 (3)
Здравствуйте, Курилка, Вы писали:

К>Такой скачок вполне можно сделать.


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

А>>P.S. Вы читали Захара Оскотского? Рекомендую. Он правильно мыслит.

К>Не слышал даже, линка нет под рукой?

http://lit.lib.ru/o/oskotskij_z_g/text_0004_humanebullet.shtml
Раннее знакомство с Java калечит судьбы программистов
От: fplab Россия http://fplab.h10.ru http://fplab.blogspot.com/
Дата: 17.01.08 11:44
Оценка: 6 (1) -1 :)
здесь


17.01.08 14:47: Перенесено модератором из 'Java' — Blazkowicz
Приходиться заниматься гадостью — зарабатывать на жизнь честным трудом (Б.Шоу)
Re[7]: Раннее знакомство с Java калечит судьбы программистов
От: Pavel Dvorkin Россия  
Дата: 25.01.08 09:29
Оценка: 1 (1) -2
Здравствуйте, sndanil, Вы писали:

S>Здравствуйте, Pavel Dvorkin, Вы писали:


PD>>А теперь берем C#


PD>>Directory

PD>>DirectoryInfo
PD>>DriveInfo
PD>>File
PD>>FileInfo
PD>>FileStream
PD>>BufferedStream
PD>>FileSystemInfo
PD>>BinaryReader
PD>>BinaryWriter
PD>>StreamReader
PD>>StreamWriter
PD>>TextReader
PD>>TextWriter

S>значит ли это что когда ты будешь писать в файл, то тебе придется использовать все эти классы?


Может, и не придется, но для того чтобы писать в файл грамотно, я должен знать, что именно использовать или можно то, что первым попадется ? Вот скажи просто так, не раздумывая, что лучше :

FileStream

public override int Read (
[InAttribute] [OutAttribute] byte[] array,
int offset,
int count
)


или

BinaryReader

public virtual byte[] ReadBytes (
int count
)

при условии, что ты начинающий программист на C#.

А на C тут и думать нечего : fread и все. Хоть в байтовый массив, хоть в небайтовый, хоть не в массив вообще.


> ... что бы действительно сравнить, просто набросай пример и все станет ясно ...


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

Думаешь, утрирую ? Отнюдь.

Вот тебе пример из моей личной практики, правда, Ява, а не C#

Если хочешь, посмотри отсюда и ниже по ветке

http://www.rsdn.ru/forum/message/2746671.1.aspx
Автор: Pavel Dvorkin
Дата: 28.11.07


Andrei N.Sobchuck (http://www.rsdn.ru/forum/message/2747934.1.aspx
Автор: Andrei N.Sobchuck
Дата: 29.11.07

) порекомендовал PrintWriter. Я бы сам ни за что не догадался, разве что потратил бы несколько дней на изучение исходников всех стримов, ридеров, райтеров и т.д.
With best regards
Pavel Dvorkin
Re[3]: Раннее знакомство с Java калечит судьбы программистов
От: Геннадий Васильев Россия http://www.livejournal.com/users/gesha_x
Дата: 17.01.08 15:56
Оценка: +3
Здравствуйте, SergH, Вы писали:

SH>Здравствуйте, Геннадий Васильев, Вы писали:


ГВ>>Жалко, что нет ссылки на исходник, а копаться лень.


SH>http://www.stsc.hill.af.mil/crossTalk/2008/01/0801DewarSchonberg.html


Спасибо, интересно. Как я и думал — на cnews пробежали мимо слона.

...worrisome trends in CS education. [...]

1. Mathematics requirements in CS programs are shrinking.
2. The development of programming skills in several languages is giving way to cookbook approaches using large libraries and special-purpose packages.
3. The resulting set of skills is insufficient for today’s software industry (in particular for safety and security purposes) and, unfortunately, matches well what the outsourcing industry can offer. We are training easily replaceable professionals. (Вот это вообще блеск, поскольку здесь они открыто называют проблемой то, к чему некоторые стремятся. — Г.В.)


В общем, профессора-то в корень зрят.

ГВ>>.. а Java заменила Scheme относительно недавно ..


SH>Если ты про MIT, то там, насколько я помню, не Java, а Python. И жалуются отнюдь не MIT-овцы. Покрайней мере, здесь — не они.


Хмм... Да, это я попытался вспомнить дискуссии в ФП некоторое время назад.
Я знаю только две бесконечные вещи — Вселенную и человеческую глупость, и я не совсем уверен насчёт Вселенной. (c) А. Эйнштейн
P.S.: Винодельческие провинции — это есть рулез!
Re[15]: Раннее знакомство с Java калечит судьбы программисто
От: Аноним  
Дата: 21.01.08 13:09
Оценка: +2 -1
Здравствуйте, Курилка, Вы писали:

К>Да, с "нацизмом" я поспешил, пусть и чувствовал, что немного частный вариант.

К>Ближе будет "шовинизм".

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

К>Во-во, прям по учебнику, есть "свои", есть "чужие". Очень ограниченная точка зрения, т.к. она исключает возможность перехода из одной группы в другую (как туда так и обратно).


Это еще с какой радости? Я ведь о том и говорю, что если чужих бить как следует, то из них свои иногда получаются. Поскольку лень — их доминирующий инстинкт, насильственное подавление этого инстинкта устранит и то, чем они от своих отличаются.

К>Т.е. реально получаем, что по твоим словам быдло есть быдло и "ничего не попишешь".


Где конкретно я это сказал? Я же говорю — не инвалиды они, они такой путь себе сами выбрали.

K> Если смотреть более скурпулёзно, то это получается признание неспособности влиять на ситуацию и добровольное(!) самоограничение, что по-моему звучит в словах "теперь нет больше той школы".


Влиять на ситуацию можно только на глобальном уровне. Пока еще у "своих" есть несколько мест, куда можно пойти за знаниями и за развитием. Чего нет, так это давления на чужих — чтоб они своими становились. И, да, лично я тут сделать ничего не могу. Я не министр образования. Даже не зам. министра.

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


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

К>Причём почему-то градация идёт не по праву рождения (а может луче с зачатия?) — это уже внушает надежду. Дак когда по-вашему на человеке можно ставить позорный крест?


В том то и дело, что почти из каждого можно человека сделать. Но для этого палка нужна. А никак не гуманизм и рассюсюкивание: "ой какие вы быдлушки, ой почти на человечков похожи, ой мы вам корочки дадим, чтоб вам на работушку устроиться и деток таких же быдловеньких рожать да кормить".

К>Лично я предпочту, чтобы у него всегда был шанс. Не зря же в программы добавляют "защиту от дурака", подсказки и т.п.


У подавляющего большинства из них шанс может появиться только если их очень сильно и больно бить по голове.

Угроза отчисления и призрак армейских сапог — неплохой способ стучать по голове.

К>Всё это лишь моя личная точка зрения, буду рад, если хоть что-то в ней будет вам полезно.


Я с точкой зрения гуманистов хорошо знаком и в корне не согласен.
Re[9]: Раннее знакомство с Java калечит судьбы программистов
От: Курилка Россия http://kirya.narod.ru/
Дата: 22.01.08 21:27
Оценка: +1 -1 :)
Здравствуйте, Ka3a4oK, Вы писали:

LVV>>Запросто может возникнуть ситуация, когда группа студентов пойдет в деканат и заявит, что учат их всякой фигне. И начнется разбор полетов на уровне декана. Оно нам надо?

LVV>>С== — это по-любому в струе, тут ни один студент не сможет заявить, что он типа не сдал, потому как учат всякой фигне...
LVV>>Вот такая нынче демократия...

KK>Нормальный декан в нормальном ВУЗе посоветует им засунуть свое недовольство в промежность.


При такой формулировке стоит задуматься над критерием "нормальности" такого декана.
Re[4]: Раннее знакомство с Java калечит судьбы программистов
От: IT Россия linq2db.com
Дата: 24.01.08 15:47
Оценка: +3
Здравствуйте, Pavel Dvorkin, Вы писали:

PD>Не-а. На C# будет столько же, сколько на Яве. Те же геттеры, те же сеттеры (ну синтаксис другой), те же классы в количестве, раз в 5 превышающим реально необходимое их. В общем, все то же самое


Количество классов в количестве раз в 5 превышающим реально необходимое от языка не зависит. Это зависит от радиуса кривизны ручек. А вот глупости вида new/delete, (char*)(LPCTSRT)(BSTR)(CString) на размер кода очень даже влияет.
... << RSDN@Home 1.2.0 alpha rev. 771>>
Если нам не помогут, то мы тоже никого не пощадим.
Re[7]: Раннее знакомство с Java калечит судьбы программистов
От: Аноним  
Дата: 27.01.08 22:21
Оценка: 75 (1) :)
Здравствуйте, IT, Вы писали:

IT>
IT>string GetLine(int n)
IT>{
IT>    return File.ReadAllText("filename.ext").Split('\n')[n];
IT>}
IT>

IT>Прошу заметить, что этот код абсолютно корректно обработает все исключительные ситуации и выбросит вменяемые исключения.

IT>Маэстро может привести свой вариант на C/C++, а мы посмотрим.


Уж не знаю что ответит Маєстро, но Ваш варинт можно немного упростить

string GetLine(int n)
{
    return File.ReadAllLines("filename.ext")[n];
}
Re[12]: Раннее знакомство с Java калечит судьбы программисто
От: LaptevVV Россия  
Дата: 18.01.08 09:15
Оценка: 7 (2)
Здравствуйте, Курилка, Вы писали:

К>Ткни пальцем, где это приводил?

Ну вот хотя бы здесь
Хочешь быть счастливым — будь им!
Без булдырабыз!!!
Re: Раннее знакомство с Java калечит судьбы программистов
От: Skynin Украина skynin.blogspot.com
Дата: 12.12.08 08:53
Оценка: 7 (2)
Не понимаю до сих пор, почему Паскаль предлагается как первый язык для изучения.
Когда он появился, действительно остальные языки были сложными и уводящими начинающего программиста от сути.
Так же сложен сейчас и С++.

Первым языком должен быть Си:
Простые и легко изучаемые синтаксические правила.
Близость к ассемблеру (в уме желательно держать во что преврщается код, например для понимания работы со "строками" ASCIZ в памяти). А это даст понимание как работает процессор. На кусочках же системного кода unix'ов(того же ядра Linux) можно и устройство ОС показать.

Вторым языком должен быть как можно более чистый ООПшный. Думается это Java. Если уч. заведение серьезное, то вместе с ним можно дать основы UML и понимание шаблонов проектирования.
Если Си не был первым, то и получаем
Глупейшие вопросы об объекте, который почему-то меняется в методе, а int — не меняется — не понимание что есть указатель на область памяти, а что есть значение переданное в стеке.
И попробуйте быстро объяснить не знающему С (как в железе происходит работа с памятью) важные для создания эффективных программ азы работы "сборщика мусора". Паскаль, по моему глубокому убеждению — в этом мало поможет.
Где-то тут и можно дать как примеры применения шаблонов проектирования в жизни — основы проектирования и реализации GUI.

Третьим — Scheme или Lisp. Для того чтобы дать представление о соооовсем другом подходе и: мышлении. Именно чистые ФП, чтобы не было каши в голове, от попыток использовать предыдущие знания, как то будет в случае Scala, Python, ...
И желательно к ним же привязать изучение основ SQL, а не к этапу изучения С или Java.

C++ же язык сложный, и месиво из концепций низкого и высокого уровня никак не способствует становлению правильного мышления, а нужно для реальной, профессиональной деятельности. (давайте начинающему учиться ездить на велосипеде ноги к педалям привязывать, как то у профессиональных велосипедистов принято)
По крайней мере толпы студентов изучИвших(а может — изучАвших?) С++ (писали ведь курсачи) при начале трудовой деятельности в большинстве случаев проявляет чудеса невежества, хотя приходится им иметь дело с чем-то более простым, например Java или вообще — 1С(это вообще меня просто убивает, знающий С++ с трудом осваивает бэйсик от 1С).
Разве не странно, что знающий(?) более богатый возможностями и сложный язык тупит при изучении языка где есть только часть возможностей которые он изучИ(?)л и более простые синтаксические правила?

По крайней мере мой житейский опыт говорит что толку от изучения С++ студентами — мало. Младые годы уходят на борьбу с отладкой курсачей, а не на изучение нескольких фундаментальных основ. А их то и есть — пара-тройка, остальное реализации и рюшечки, но студенты жарко спорящие о великом значении С++ — не понимают ни одной.
Так лучше уж так, пусть зазубривают Java — но хоть что-то уже могут делать, чем приобревши только кучу гонора (Я С++ знаю!), месяцами понимают сложнейшие(???) объекты 1С: справочник и документ и движения документа, а потом пишут такое... что все заказчики и стонут — неужели нет кроме этой 1С и этих ...й???
Re[6]: Раннее знакомство с Java калечит судьбы программистов
От: IT Россия linq2db.com
Дата: 25.01.08 14:45
Оценка: 6 (1) +1
Здравствуйте, Pavel Dvorkin, Вы писали:

IT>>Количество классов в количестве раз в 5 превышающим реально необходимое от языка не зависит. Это зависит от радиуса кривизны ручек.

PD>Ну тогда, видимо, в Microsoft и Sun очень криворукие программисты .

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

PD>В C (даже не С++) весь практически файловый (и не только) ввод/вывод можно сделать на полутора десятках функций из stdio.h, ну а там где не хватит, придется кое-что из io.h брать. . Если инкапсулировать их, то 2 класса получится. В крайнем случае еще Win32 добавим — еще пара десятков функций.


"В огороде бузина, а в Киеве дядька". Мы сравниваем стандартные библиотеки или написанный с помощью этих библиотек код? К библиотекам и фреймворкам предъявляются совершенно другие требования. В частности имено из-за бедности, я бы даже сказал из-за нищеты, стандартных библиотек C/C++, каждая уважающая себя C++ библиотека реализует в том или ином виде свой собственный класс XXXString. Да и вообще это первопричина всей той вакханалии с библиотеками, которая свирепствует в C/C++.

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

string GetLine(int n)
{
    return File.ReadAllText("filename.ext").Split('\n')[n];
}

Прошу заметить, что этот код абсолютно корректно обработает все исключительные ситуации и выбросит вменяемые исключения.

Маэстро может привести свой вариант на C/C++, а мы посмотрим.
... << RSDN@Home 1.2.0 alpha rev. 771>>
Если нам не помогут, то мы тоже никого не пощадим.
Re[24]: Раннее знакомство с Java калечит судьбы программисто
От: FR  
Дата: 30.01.08 04:45
Оценка: 1 (1) :)
Здравствуйте, Аноним, Вы писали:

К>>Я тут подумал, а разве не может быть именно "альтернативноодарённых", только не в анекдотическом понимании этого слова, а именно в таких областях, которые пока слабодоступны современному человеку. Как базовую идею для гипотезы — способности в музыке.


А> Есть они. Гениями называются. Отличаются однобокостью. В дикой природе не выживают.

А> Эти узкозаточенные инструменты должны направляться людьми умными. Жалко их.

Патологические "умники" еще более однобоки. И так как обычно полностью лишены "правополушарного" типа мышления, то совершенно не могут признать свою однобокость. Типичный пример "злобные функциональщики".
Re[3]: Раннее знакомство с Java калечит судьбы программистов
От: LaptevVV Россия  
Дата: 17.01.08 13:43
Оценка: +2
Здравствуйте, frёёm, Вы писали:

ёё>Имхо ничего лучше досового обжект паскаля, для изначального обучения не прудмано...

ёё>Дельфи разжижает мозг своим дизайнером форм.
ёё>Начинать сразу с си++ сложно, и синтаксис у него схода не так понятен.
ёё>Так что вариантов по моему не много...Фаронов жжот...
Мы уже несколько лет в качестве первого языка даем С++. Дело в том, что первый язык выучивается наизусть, как первый иностранный. Поэтому с синтаксисом проблем просто нет — первачки другого не знают.
Ну и потом понеслась: ООП на С++, лабы по осям — использование АПИ на С++, Системное ПО — лабы на С++.
Структуры данных и алгоритмы — лабы на С++.
Кроме того, в курсе по организации ЭВМ я из заставляю лабы первого курса реализовать как ассемблерные вставки — чтоб знали.

А с формочками и прочими делами гуюшными они у нас на самостоятельной работе по курсовым знакомятся... Или в курсе по Вижуал Васику — и его нужно знать грамотному программеру...
Хочешь быть счастливым — будь им!
Без булдырабыз!!!
Re[4]: Раннее знакомство с Java калечит судьбы программистов
От: kaa.python Ниоткуда РСДН профессионально мёртв и завален ватой.
Дата: 17.01.08 13:51
Оценка: +2
Здравствуйте, LaptevVV, Вы писали:

LVV>Мы уже несколько лет в качестве первого языка даем С++.


Когда был студентом, первым языком был Паскаль. Вроде логично, очень хорошо подходит для обучения. Но в то время, очень хотелось, чтоб первым языком давали С++, т.к. он (по моим ощущениям) ближе к реальной жизни.
Сейчас же, мне кажется, лучше всего было бы, если первым языком был Lisp
Re: Раннее знакомство с Java калечит судьбы программистов
От: Andrei F.  
Дата: 23.01.08 05:15
Оценка: +2
Здравствуйте, fplab, Вы писали:

F>здесь


Тупые преподаватели калечат судьбы программистов, а не языки. Тупые и неумелые, которые даже не могут отличить причину от следствия. Нужно учить студентов программировать, используя язык как инструмент, а не "думать на языке".
А первый язык можно брать любой из применяемых промышленно, разницы все равно не будет.
Re[14]: Раннее знакомство с Java калечит судьбы программисто
От: Аноним  
Дата: 23.01.08 12:04
Оценка: :))
Здравствуйте, nlv, Вы писали:

nlv>Ты, парень, ведешь себя по-хамски и слишком превозносишься над другими.


Не над абстрактными "другими", а над заведомо неумными, такими, как ты. Менделеева зачем приплел, а? Получай по заслугам.

nlv>Такими-то и легче манипулировать и управлять, особенно если они невежественны.


Интересно, этот маленький смешной человечек, проявивший просто предельную неадекватность, собрался тут поучать *меня*? Ржунимагу!
Re[10]: Раннее знакомство с Java калечит судьбы программисто
От: IT Россия linq2db.com
Дата: 28.01.08 15:02
Оценка: +1 -1
Здравствуйте, Pavel Dvorkin, Вы писали:

>>В лучшем случае изобретут гору трёхколёсных велосипедов.


PD>Пусть так, но ездит он в 33 раза быстрее твоего Мерседеса


Мне не нужно в 33 раза быстрее. Мне нужно в 33 раза проще.

PD>Напиши код на C#, который решит ту же задачу за 0.015 сек, тогда и поговорим. Напиши, очень прошу


Я его уже написал. На моей машине этот код выполняетя за 00:00:00.001000

Но главное не это. Вот попробуй не просто ответить на вопрос, а подумать о нём хорошенько — зачем?
... << RSDN@Home 1.2.0 alpha rev. 771>>
Если нам не помогут, то мы тоже никого не пощадим.
Re[9]: Раннее знакомство с Java калечит судьбы программистов
От: Pavel Dvorkin Россия  
Дата: 29.01.08 06:46
Оценка: +2
Здравствуйте, IT, Вы писали:

IT>Редкостное дерьмо ваш STL, вы уж извините мне мой французский.


Редкостно корректный способ дискутировать, Вы уж извините мой русский.

IT>А я замечал пока писал на C/C++ и могу сказать, что нужно очень крепко зажмуриться, чтобы этого не замечать.


А все же, нельзя ли что-то конкретное сказать. А то пока одни общие слова... Плюс демагогия.

IT>

IT>У меня вообще подозрение, что если сравнивать код C++ и (Java, C#), по числу строк, то надо за одну строку на C++ 5 строк Java давать. Столько там чистого оверхеда...

IT>Твоё?

Да, конечно

PD>>Да, твой код выглядит очень просто. Мой будет несколько сложнее, поскольку такого класса под руками нет.


IT>Он будет не просто сложнее, он будет в десятки раз сложнее. Вместо одной строчки у тебя будет 33. А если у меня будет код в 1000 строк, то у тебя будет все 33,000?


Опять чистой воды демагогия. Если речь пойдет о програмировании чего-то, для чего нет никаких стандартных библиотек (по той простой причине, что этот код относится именно к данной задаче и ни к чему больше), то будет одно и то же. Ну а если речь идет именно о конструировании из кубиков, то вопрос лишь в том, какие кубики в наличии есть.


PD>>Итого — два буфера размером в исходный файл и чтение побайтно из этого файла.


IT>Ты, конечно, молодец, что так постарался и покопался в этом деле рефлектором.


Стараемся

>Но знаешь что я тебе скажу? Мне пофиг как оно там внутри работает. (Выделено мной- PD)


Вот это, боюсь самое главное и самое плохое. Мне неважно как оно работает внутри, пусть оно в 20 раз медленнее работает, пусть памяти ест в 3 раза больше, пусть... Лишь бы работало. Вот это то, с чем я категорически не согласен. Но развивать эту тему сейчас не буду, думаю, напишу об этом отдельную статью, и не в это форуме — мы и так приличный оффтопик устроили, прямо скажем.



>Оно работает, решает свою задачу с приемлемой для моих задач производительностью и мне этого достаточно. А вот то что я решаю это всё в одну строку — это огромный плюс, потому что строк у меня таких не одна, а десятки тысяч и увеличение объёма кода в 33 раза, как в твоём случае для меня неприемлемо. Я не из тех, кто любит хвастаться проектами в миллионы бестолковых строк.


No comments, ибо комменты потребовали бы много хоть и не бестолковых, но строк.

PD>>Это к вопросу о том "важно сколько кода у меня получится после пременения всего этого добра".


IT>Конечно важно. У меня это 1 (одна) строка.


Господи, да не говори ты ерунду хоть! У тебя это одна строка просто потому, что в классе имеется такой метод, отвратительно сделанный, но имеется. Поставить задачу иначе — и тебе придется писать все самому или же делать свой метод в классе-наследнике. Я без труда могу переписать свой код в виде метода класса и будет тоже одна строка. Чем ты хвалишься — тем, что в классе нашелся метод, который черт-те как это делает ?

PD>>Эх, ладно. Пропустим тест. Исходный файл имеет размер 12 Мб, состоит из повторяющегося фрагмента


IT>Тут ты явно перестарался. Речь шла о небольших файлах.


А откуда это следует ? Я такого нигде не утверждал.

>Впрочем и с большими разница не существенная. Гигабайтные файлы тоже в своё время приходилось обрабатывать. Не таким образом, но тоже на C#. Если не ошибаюсь, парсинг 3-х гигабайтного файла занимал что-то около 20 секунд,


Во-первых, что понимается здесь под парсингом ? Это понятие довольно растяжимое. А во-вторых, код в студию. Если не имеешь права сам код привести — изложи идею. Я свой код привел, а от тебя пока что слышу только заявления насчет одного кода, который работает 0.00 сек и другого, который 20 сек работает, и ни строчки кода. А та строчка, что ты привел, на 12 Мб файле работает 0.5 сек, а если ей подсунуть 3 Гб файл — боюсь, минуты, а то и больше понадобится, да и ОП скорее всего не хватит вместе со своп-файлом.


>а потом шла вставка в БД 11 миллионов строк. Так вот, внимание, вставка в БД занимала почти час. Теперь ответь мне какая разница будет между C++ и C#, если на C# это занимает 20 секунд и 1000 строк, а на C++ одну секунду и 20,000 строк? А я тебе скажу. Написание всего того кода у меня заняло пару дней + нулевые усилия на сопровождение. Примерно в тоже время ко мне на интервью приходил чувак, которые точно такой же фигнёй занимался на C... теперь читаем внимательно... ЧЕТЫРЕ ГОДА!


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



PD>>Время колеблется от 0.5 сек до 2.5 сек. Берем по минимуму, 0.5 сек.


PD>>0.5/0.015 = 33 раза


IT>Я сейчас умру от смеха


Что, с арифметикой проблемы ?

PD>>С чем тебя и поздравляю. Воистину бесплатный сыр бывает только в мышеловках!


IT>Этот сыр очень дорогого стоит. Небольшое падение производительности (которого, кстати, в моём случае на небольших файлах вовсе нет) — это ерунда. Мои продакшин сервера один фиг загружены максимум на 5%.


Во-во. Пока загрузка максимум 5%, пока файлы небольшие и т.д. — работает. Как только условия становятся чуть пожестче — все начинает тормозить со страшной силой.

Все, я эту дискуссию заканчиваю здесь. Разумеется, ты вправе ответить, но оставляю за тобой это последнее слово. Тем более, что Геннадий Васильев успел высказать несколько моих аргументов до меня


А вот написание, отладка и поддержка кода, который в десятки раз больше — это существенный нюанс.
With best regards
Pavel Dvorkin
Re[13]: Раннее знакомство с Java калечит судьбы программисто
От: SergH Россия  
Дата: 30.01.08 10:45
Оценка: +2
Здравствуйте, konsoletyper, Вы писали:

K>.. Но внимание! Вася Пупкин и в C++ и STL наворотит такого (свинья везде грязь найдёт)..


С++ отличается тем, что вероятность написать на нём неработающую программу выше Т.е. на С++ Вася не наворотит — оно падать будет, это заставит его более плотно изучить предмет и именно так, в принудительном порядке, пойдёт процесс обучения.

Но после того, как Вася научился думать, не вижу смысла заставлять его писать на C++ и дальше. Да и способов научиться думать есть несколько, С++ и тут не серебрянная пуля.
Делай что должно, и будь что будет
Re[2]: Раннее знакомство с Java калечит судьбы программистов
От: Курилка Россия http://kirya.narod.ru/
Дата: 12.12.08 09:24
Оценка: +2
Здравствуйте, Skynin, Вы писали:

[cut]
S>Третьим — Scheme или Lisp. Для того чтобы дать представление о соооовсем другом подходе и: мышлении. Именно чистые ФП, чтобы не было каши в голове, от попыток использовать предыдущие знания, как то будет в случае Scala, Python, ...
Только вот выделенное несколько противоречит друг другу...

[cut]
Re[12]: Раннее знакомство с Java калечит судьбы программисто
От: mik1  
Дата: 31.01.08 08:09
Оценка: 24 (1)
Здравствуйте, Pavel Dvorkin, Вы писали:

Внесу предложение на Яве.

    public static void testReader() throws IOException {
        long t = System.currentTimeMillis();
        RandomAccessFile file = null;
        int lineCount = 0;
        try {
            file = new RandomAccessFile("c:\\_\\example.txt", "r");
            final FileChannel channel = file.getChannel();
            final long fl = file.length();
            final CharBuffer buffer = channel.map(FileChannel.MapMode.READ_ONLY, 0, fl).asCharBuffer();
            for (int i = 2; i < (fl - 3) >> 1; i++)
            {
                if (buffer.get(i) == 0x0D00)
                    lineCount++;
            }
        } finally {
            if (file != null)
                file.close();
        }
        t = System.currentTimeMillis() - t;
        System.out.println(String.format("Time elapsed: %f sec", (float) t / 1000.0));
        System.out.println("Line count = " + lineCount);
    }


Время прошу отмасштабировать к Вашему размеру файла (У меня файл чуть побольше получился). Получилась разница уже в 4 раза.

Time elapsed: 0,063000 sec
Line count = 767555


Кстати, по поводу вопросов к сложности библиотек IO в Яве.
Во-первых, для того, чтобы вывести что-то в консоль, достаточно открыть любой пример программы на Яве для чайников. Там русским по белому написано:

System.out.println("Something to console!");

Никакого знания классов и в помине не нужно.

Что касается набора классов в библиотеке — то его цель следующая: отделить работу с символами или байтами (например, форматирование их в указанной локали) от операций ввода-вывода. А не как в stdlib: printf, fprintf, sprintf, wprintf, ... Которые, что самое смешное, все равно вызывают внутри себя одну и ту же функцию обработки форматной строки и списка параметров.
Re[20]: Раннее знакомство с Java калечит судьбы программисто
От: SergH Россия  
Дата: 21.01.08 23:10
Оценка: 18 (1)
Здравствуйте, Аноним, Вы писали:

А> Не вижу, чем бы мне мог быть симпатичен дурак.


Плохо
Как насчёт детей?

Конечно, понятие "дурак" недоопределено, но если с точки зрения отсутствия/присутствия системного мышления.. Или как ещё?

А> Очень мало той возможной положительной мотивации, которая могла бы перешибить по привлекательности самую сильную мотивацию — лень. Как я уже говорил, пряник не работает. Никакой, даже самый сладкий.


Кнут/пряник — слишком простая схема.

Чем хорошо христианство (ну, один из плюсов) — оно утверждает, что у каждого есть душа. Даже у самого последнего менеджера среднего звена. Никто не отвергнут окончательно, в каждом есть искра, что бы он с собой не делал. Помимо прочего это означает, что кроме кнут-пряник есть и более другие схемы. Людей можно вдохновить, направить, открыть глаза, зажечь — где-то в этом русле путь.

Я понимаю, что под "кнут" и "пряник" ты имеешь ввиду не совсем уж материальные воплощения, а тоже что-то из области идеального. Но всё равно, это не то немного. Имхо.

А> Важна системность мышления. А она дается образованием. Не особо важно, в каком направлении, по мне, так умные люди после определенного уровня взаимозаменяемы, высших уровней развития сознания можно добиться и филологией, и физикой, и даже (извините, если кого стошнит) программированием.


Мм.. Системность мышления — хороший параметр, да, голосую "за". Важно.
Но вот насчёт "даётся образованием" я бы не спешил.

Системное мышление — умение увидеть ситуацию в целом, саму по себе и в связи с окружением? И сделать выводы? Да, наверное, после некоторого уровня такого можно достичь и образованием. Особенно классно, если эта способность распространяется на все области, а не только на область научных интересов. Но вообще-то это всю дорогу называли мудростью и это прерогатива вовсе не учёных. Потому что самое сложное тут — именно увидеть всё в целом, а для этого нужно отстраниться, не ставить субъективные акценты, отрешиться немного от ситуации. Учёный с боольшим трудом может достигнуть этого полным перебором вариантов, который исключает субъективность. Но "по жизни" такой возможности нету. Да и отрешиться от жизненных ситуаций сложнее, чем от науки. И решать надо быстрее.. В общем, имхо, не при чём тут образование.
Делай что должно, и будь что будет
Re[11]: Раннее знакомство с Java калечит судьбы программисто
От: Pavel Dvorkin Россия  
Дата: 24.01.08 10:24
Оценка: 16 (1)
Здравствуйте, Аноним, Вы писали:

А> Раньше тоже не особо знатно платили. Просто раньше это было не так важно, как Идея. А сейчас со школы учат, что бабки-бабки-бабки рулят, а остальное все ерунда.


Нет. это все же не так. Зарплата ассистента при советской власти (не к ночи будь помянута была вроде бы 130 руб, что слегка не дотягивало до средней по стране (165). Зарплата доцента — 250, 280 и 320 в зависимости от стажа, а если еще иметь в виду, что можно было в своем же вузе иметь 0.5 ставки старшего научного сотрудника по хоздоговору, то выходило 450-500, по тем временам более чем прилично. Сейчас зарплата доцента (моя) около 10000 руб, а про ассистентов тут уже сказали.

Отсюда и получалось в то время, что все стремились сделать кандидатскую, а дальше стричь купоны с нее всю оставшуюся жизнь. Даже шутка была : Что такое защита кандидатской ? Двадцать минут позора и кусок хлеба на всю оставшуюся жизнь.

Так что именно преподаватели вузов и являются жертвами перестройки и последующих событий . Я тоже . Но не плачусь и в светлое коммунистическое прошлое ни за что не хочу

Но я все же программист, я себе найду, где платят. А вот тех, кто не может такого найти, жалко действительно.

А насчет Идеи — вспоминаю из Педагогической поэмы Макаренко (цитирую по памяти)

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

Если же серьезнее — может быть, в 30-е или 50-е годы и работали за идею. Мы (поколение 70-х — 80-х) никаких иллюзий на этот счет уже не имели.
With best regards
Pavel Dvorkin
Re[2]: реальная проблема на Java - помогите решить
От: mik1  
Дата: 31.01.08 09:29
Оценка: 16 (1)
Здравствуйте, Pavel Dvorkin, Вы писали:

PD>Сделал две пары обменивающихся машин. YourKit Profiler утверждает , что на LinkedBlockingQueue.poll (взятие из очереди) уходит 16% суммарного времени (или 57% времени потока) при том, что на запись в БД — 12% (или 43% времени потока), итого 28% от общего времени . При одной паре машин на LinkedBlockingQueue.poll уходит в 2 раза меньше.


PD>Это мне совсем не понравилось. Если так дальше пойдет, то и до 100% недалеко. В реальной обстановке таких пар машин будет много.


Ну то, что при росте траффика до 100% от одного процессора доберетесь — это, думаю, очевидно. Ну это лирика.
Какой процент от общего времени уходит на поток записи — это тоже лирика. Кстати, кто мешает сделать несколько потоков записи?
А вот про одну пару машин ничего не ясно. Можете привести такие же 4 цифры, какие приводили для двух пар машин? Тогда и станет ясно, где узкое место с ростом траффика будет.
Re[2]: Раннее знакомство с Java калечит судьбы программистов
От: SergH Россия  
Дата: 17.01.08 15:33
Оценка: 14 (1)
Здравствуйте, Геннадий Васильев, Вы писали:

ГВ>Жалко, что нет ссылки на исходник, а копаться лень.


http://www.stsc.hill.af.mil/crossTalk/2008/01/0801DewarSchonberg.html

ГВ>.. а Java заменила Scheme относительно недавно ..


Если ты про MIT, то там, насколько я помню, не Java, а Python. И жалуются отнюдь не MIT-овцы. Покрайней мере, здесь — не они.
Делай что должно, и будь что будет
Re[10]: Раннее знакомство с Java калечит судьбы программисто
От: LaptevVV Россия  
Дата: 18.01.08 09:05
Оценка: 7 (1)
Здравствуйте, Геннадий Васильев, Вы писали:

LVV>>Предполагается, что магистры будут той самой научной элитой... Ага! СЧАЗЗЗЗЗЗ!!!!!

LVV>>Математику-то и другие фундаментальные дисциплины они будут изучать-то по бакалаврскому стандарту и учебному плану!
ГВ>Хм. Сие заставляет глубоко задуматься... А что тогда в магистратуре делают? Не поясните попдробнее? Я просто чуял подвох в "трёхступенчатом" образовании, но вот только сейчас, кажется, начинаю понимать.
Ну, что там на западе предполагали — это их дело. А у нас, совершенно однозначно, решили существенно ограничить количество людей с высшим образованием.
1. Хотя в магистры разрешено поступать всем, но совершенно очевидно, что не всем вузам будет разрешено открыть магистратуру.
2. даже если разрешение будет, количество бюджетных мест вряд ли будет больше 10. Ну, за исключением вузов-монстров типа МГУ, МИФИ и прочих. А коммерческую магистратуру, скорее всего, открыть будет нельзя. Или она тоже будет иметь ограничение, наложенное государством.
3. В аспирантуру поступить можно будет только после магистратуры — бакалаврам не дали такого права.
Почему? А потому, что в армию нужно кого-то призывать — вот это и есть, наверное, главная причина перехода. Отсрочка от армии будет только одна, и она распространяется на бакалавриат.
Ну и последнее. Судя по тенденциям в школе — ЕГЭ и общее катастрофическое снижение уровня подготовки — то же самое ждет и бакалавриат. Это будет не высшее образование, а техникумовское. В армии мыслители не нужны.
А отсюда — какие у нас магистры будут? Правильно, с уровнем подготовки техников.
Вот помрут старые профессора, а приедем мы туда же, куда все высшее образование на западе. Наши старые профессора, которые там преподавали, неоднократно жаловались — я тут приводил пост речи Арнольда. Это почти свежее мнение — 2002 года.
Хочешь быть счастливым — будь им!
Без булдырабыз!!!
Re[12]: Раннее знакомство с Java калечит судьбы программисто
От: LaptevVV Россия  
Дата: 18.01.08 09:46
Оценка: 7 (1)
Здравствуйте, Геннадий Васильев, Вы писали:

ГВ>Я что-то не так и не понял, чем программа магистратуры отличается от бакалавриата? Идея, что это будут "дополнительные модули", вроде как понятна. А что в них? Я как раз про это и спрашивал.

В нынешних стандартах магитратуры определены только 1-2-3-4 дисциплины общего философского характера. Остальное — фактически вуз сам должен придумать.
Хочешь быть счастливым — будь им!
Без булдырабыз!!!
Re: Раннее знакомство с Java калечит судьбы программистов
От: Andrei N.Sobchuck Украина www.smalltalk.ru
Дата: 17.01.08 11:52
Оценка: 6 (1)
F>здесь

Мысль не нова.
Я ненавижу Hibernate!
Я ненавижу Hibernate
Автор: Andrei N.Sobchuck
Дата: 08.01.08
!
Re[8]: Раннее знакомство с Java калечит судьбы программистов
От: LaptevVV Россия  
Дата: 18.01.08 08:13
Оценка: 6 (1)
Здравствуйте, Курилка, Вы писали:

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


LVV>>С образованием сейчас вообще труба — перевод на западную модель с удовлетворением исключительно практических нужд.

К>[cut]

К>А у государства есть какие-нибудь дельные проекты или все в русле идеи о практических нуждах? Вспоминается только президентская программа, а там MBA, т.е. тоже воспитываются гумманитарии, хотя, на мой взгляд, тренировка мозга и критического подхода к решению проблем, которая есть в точных науках, чрезвычайно полезна для управленцев и бизнесменов.

Нет никаких реальных проектов. С 2009 года полный переход на бакалавров-магистров.
Предполагается, что магистры будут той самой научной элитой... Ага! СЧАЗЗЗЗЗЗ!!!!!
Математику-то и другие фундаментальные дисциплины они будут изучать-то по бакалаврскому стандарту и учебному плану! А это означает, что В НУЖНОЕ ВРЕМЯ развития мозгов не будет. И у магистрантов возникнут большие проблемы в написании магистерской диссертации. Или неизбежно произойдет снижение уровня требований к этим диссертациям.
Что и скажется потом — лет через 10 уже — на всем образовании и науке.
Хочешь быть счастливым — будь им!
Без булдырабыз!!!
Re[5]: Раннее знакомство с Java калечит судьбы программистов
От: Геннадий Васильев Россия http://www.livejournal.com/users/gesha_x
Дата: 17.01.08 16:58
Оценка: 5 (1)
Здравствуйте, SergH, Вы писали:

SH>Да, проблему они хорошо обозначили. Я, правда, понятия не имею, насколько декларируемое падение уровня соответствует истине, но то, что они написали, как минимум, хорошая формулировка для проблемы.


Там есть несколько упоминаний о поиске специалистов и неутешительных результатах. Да и явление это, судя по всему, повсеместное.

SH>Но вот причину этой проблемы они ищут где-то не там. Имхо, им бы первые два пункта выправить, и с третьим сразу стало бы полегче.


Как мне кажется, я приблизительно понимаю мотивы писать именно так, как написали эти два профессора. Проще раскритиковать язык программирования, чем выступать с длинным разъяснением причинно-следственных связей между недостатком математики и плохо летающим самолётом. Вернее, не столько "проще", сколько понятней для аудитории. Естественно, причина низкого уровня специалистов не в самом по себе языке Java, а в том, что плюнули на всё остальное, кроме удовлетворения сиюминутных потребностей индустрии. А Java — как раз в этой нише. Вот, собственно, и взаимосвязь явлений.

SH>И с Явой это напрямую не связано. Они там жалуются, что студенты не врубаются в указатели.. В Scheme нет ни то что указателей, даже ссылок нет и самой операции присваивания. И ничего, как-то учатся, SICP считается классикой...


SH>А в Яве есть ссылки, которые по семантике неплохо совпадают с указателями. Если их студенты не понимают ссылок, то они и на Яве программировать не умеют. И виноваты тут преподаватели. А если ссылки они понимают, то я не вижу трудности в понимании указателей... Правда, я её и так не вижу


Да как сказать... Ссылка и указатель, это, как ни крути, не одно и то же. Указатель подразумевает возможность работы с ним самим, как с отдельной сущностью в отвязке от объекта, на который он указывает. А тут уже надо понимать устройство компьютера, как биты с байтами соотносятся и т.п. Для ссылки этот "набор операций" заметно меньше — проверка на null, да и только. А как, например, смоделировать что-то похожее на "указатель на указатель" на ссылках?
Я знаю только две бесконечные вещи — Вселенную и человеческую глупость, и я не совсем уверен насчёт Вселенной. (c) А. Эйнштейн
P.S.: Винодельческие провинции — это есть рулез!
Re[6]: Раннее знакомство с Java калечит судьбы программистов
От: LaptevVV Россия  
Дата: 18.01.08 07:33
Оценка: 1 (1)
Здравствуйте, Геннадий Васильев, Вы писали:

SH>>Да, проблему они хорошо обозначили. Я, правда, понятия не имею, насколько декларируемое падение уровня соответствует истине, но то, что они написали, как минимум, хорошая формулировка для проблемы.

ГВ>Там есть несколько упоминаний о поиске специалистов и неутешительных результатах. Да и явление это, судя по всему, повсеместное.
Совершенно верно. Общее снижение качества преподавания в школе наблюдаю сам. С математикой — вообще труба. Дело доходит до того, что по городу (Астрахани) негласное мнение школьников-выпускников: в технический универ ходить не стоит — сложно математику сдать. И идут в пед, ибо там с математикой много легче. А у нас в общем-то ничего страшного с математикой нет — обычные курсы матанализа, алгебра и аналитическая геометрия, вероятность, матлогика, дискретная математика.
SH>>Но вот причину этой проблемы они ищут где-то не там. Имхо, им бы первые два пункта выправить, и с третьим сразу стало бы полегче.
ГВ>Как мне кажется, я приблизительно понимаю мотивы писать именно так, как написали эти два профессора. Проще раскритиковать язык программирования, чем выступать с длинным разъяснением причинно-следственных связей между недостатком математики и плохо летающим самолётом. Вернее, не столько "проще", сколько понятней для аудитории. Естественно, причина низкого уровня специалистов не в самом по себе языке Java, а в том, что плюнули на всё остальное, кроме удовлетворения сиюминутных потребностей индустрии. А Java — как раз в этой нише. Вот, собственно, и взаимосвязь явлений.
С образованием сейчас вообще труба — перевод на западную модель с удовлетворением исключительно практических нужд.
Все орут, что математика тому не нужна и этому не нужна... А то, что математика — это просто тренировка мозгов, об этом почему-то ВСЕ забывают!
Я когда у юристов вел математику — они меня доставали... Типа мы гуманитарии, нам математика не нужна... Как только я им ни демонстрировал превосходство мозгов "технаря" над мозгами "гуманитариев" — ничего знать не хотят! Немного поняли, когда аналогию со спортом привел: математика сродни общефизической подготовке в любом виде спорта. Штангу надо тягать и бегунам, и футболистам... Хотя бы время от времени.
Даже наши родные программеры сейчас такого низкого качества студенты, что просто ужас!
Принимал экзамены по ОС на 3-м курсе. Накануне потребовал, чтобы все знали, как обрабатывать параметры командной строки. Ибо командный процессор — это обработка параметров командной строки. И в результате поставил 12 двоек из 19 присутствующих.
На следующем экзамене ряд народа уже внял — я поставил только 8 двоек.
А с математикой у половины курса — полный завал!
Я в свое время преподавал теорию информации. А там же алгебра и вероятность — на полную катушку рулят. Так мне пришлось в курсе по ТИ им давать повторно многие определения и даже полностью темы из алгебры и вероятности. Иначе не понимают и естественно, не учат.
Хочешь быть счастливым — будь им!
Без булдырабыз!!!
Re[8]: Раннее знакомство с Java калечит судьбы программистов
От: LaptevVV Россия  
Дата: 18.01.08 08:08
Оценка: 1 (1)
Здравствуйте, Геннадий Васильев, Вы писали:

ГВ>А так... J2EE на 5+, зато про теорию графов только слышал и как оценить сложность алгоритма не знает и знать не хочет. Это что, программист, что ли? Хай идёт формочки дизайнить.

О!!!!!! Как я это поддерживаю!
Вот на экзамене по системному программированию задаю вопрос: метод рекурсивного спуска какому алгоритму поиска на графе соответствует? Ответов — ноль!
От чего зависит эффективность рекурсивного спуска? Ответов — ноль!
Чуть-чуть по-другому повернули грань — и уже полный расстрел!
Хочешь быть счастливым — будь им!
Без булдырабыз!!!
Re[8]: Чрезвычайно важное дополнение
От: LaptevVV Россия  
Дата: 21.01.08 06:50
Оценка: 1 (1)
Здравствуйте, Геннадий Васильев, Вы писали:

ГВ>Парадокс в том, что на самом деле взаимозаменяемы именно высококлассные специалисты. То, что зачастую подразумевается под "взаимозаменяемостью", это взаимозаменяемость низкоквалифицированного персонала в рамках довольно таки узкой специализации. Ну, типа, одна PHP-обезьянка с лёгкостью заменит другую PHP-обезьянку. А вот .Net-обезьянку PHP-обезьянка заменить не сможет.


ГВ>А те, кто повыше квалификацией, уже не так сильно зависят от языков, технологий и процессов. Хотя могут каких-то деталей и не знать в данный определённый момент. Вот потому они взаимозаменяемы, и в конечном итоге их цена оказывается приемлемой. Тогда как "взаимозаменяемые" обезьянки на практике невероятно дороги...

Ага! Дешевые вещи покупать — себе дороже!
ГВ>Вот и получается, что ратуют профессора как раз за выпуск действительно взаимозаменяемых специалистов. Только заменяться они смогут в контексте "программирования" вообще, а не вокруг ",Grid 10 Universe Edition".
Хочешь быть счастливым — будь им!
Без булдырабыз!!!
Re[6]: Раннее знакомство с Java калечит судьбы программистов
От: Аноним  
Дата: 21.01.08 11:15
Оценка: 1 (1)
Здравствуйте, LaptevVV, Вы писали:

LVV>Да, это было бы здорово! Но руководство не понимает — лицензионный лисп не микрософтовский и дорого стоит. А свободные — они простенькие.


?!?

Что это значит? SBCL простенький? Его благородный предок CMUCL "простенький"?!? Bigloo "простенький"?

LVV>Я все мечтаю в системном программировании в качестве лабы лисп начать писать, но пода руки не доходят до сборника лаб по системному программированию.


Рекомендую найти "Scheme compiler in 80 minutes" — вполне потянет на основу для лабы на пару пар.
Re[22]: Раннее знакомство с Java калечит судьбы программисто
От: LaptevVV Россия  
Дата: 22.01.08 07:08
Оценка: 1 (1)
Здравствуйте, Аноним, Вы писали:

А> Может и можно, но я пока что не знаю, как именно. Все существующие проекты нацелены на тех, кого и так подгонять не надо. Я не представляю, как запустить моду на знания, моду на интеллект в толпу.

А>>>P.S. Вы читали Захара Оскотского? Рекомендую. Он правильно мыслит.
К>>Не слышал даже, линка нет под рукой?

А>http://lit.lib.ru/o/oskotskij_z_g/text_0004_humanebullet.shtml

Я прочитал. Книжка достаточно любопытная.
Написана в 99 году еще до ухода Ельцына. В связи с этим весьма любопытны прогнозы автора на нашу уже прошедшую жизнь.
Жаль, автор не написал продолжения. Мож попросить его это сделать, так сказать, "по следам наших выступлений"? Было бы любопытно услышать его оценку событий во время правления Путина.
Хочешь быть счастливым — будь им!
Без булдырабыз!!!
Re[4]: Раннее знакомство с Java калечит судьбы программистов
От: Mazay Россия  
Дата: 18.01.08 06:16
Оценка: -1
Здравствуйте, Геннадий Васильев, Вы писали:

ГВ>

3. The resulting set of skills is insufficient for today’s software industry (in particular for safety and security purposes) and, unfortunately, matches well what the outsourcing industry can offer. We are training easily replaceable professionals. (Вот это вообще блеск, поскольку здесь они открыто называют проблемой то, к чему некоторые стремятся. — Г.В.)


Ну стремятся к этому IT-менеджеры. А специалисты напротив хотят быть незаменимыми. Учитывая что прямыми "заказчиками" этих профессоров являются скорее специалисты, то вполне объяснимо, почему они считают это проблемой.
Главное гармония ...
Re[6]: Раннее знакомство с Java калечит судьбы программистов
От: kaa.python Ниоткуда РСДН профессионально мёртв и завален ватой.
Дата: 18.01.08 06:53
Оценка: +1
Здравствуйте, LaptevVV, Вы писали:

LVV>И наша практика показала, что после паскаля большие трудности при освоении некоторых мест С++ возникают. Например, передача указателя в качестве параметра.


А если давать Java/C#, разве проблем не больше будет? В паскале хотя бы есть понятие указатель (если мне память не изменяет).

LVV>Да, это было бы здорово! Но руководство не понимает — лицензионный лисп не микрософтовский и дорого стоит. А свободные — они простенькие.


Разве GNU Lisp простенький? Кроме того, бесплатный и с кучей документации. Т.е. для реальной работы может он и простоват (трудно судить не имею опыта коммерческой разработки на нем), но для обучения самое оно, на мой взгляд.
Ну, кроме того, можно ту же Схему взять
Re[3]: Раннее знакомство с Java калечит судьбы программистов
От: oziro Нигерия  
Дата: 20.01.08 11:43
Оценка: +1
Здравствуйте, frёёm, Вы писали:

ёё>Имхо ничего лучше досового обжект паскаля, для изначального обучения не прудмано...

ёё>Дельфи разжижает мозг своим дизайнером форм.

Паскаль хорошо. Был. Но сейчас уже не дает представление о современном программировании (а о настоящей разработке тем более, но это не рассматриваем).

ИМХО достаточно современного языка, как Java, С++, С#, Lisp и т.п. но в отрыве от гуи и с обязательным использованием библиотек (алгоритмических, а не гуевых).
Так что я не согласен что Java что то там калечит. Преподы — калечат. Язык — нет.
Re[7]: Раннее знакомство с Java калечит судьбы программистов
От: Аноним  
Дата: 21.01.08 11:20
Оценка: +1
Здравствуйте, LaptevVV, Вы писали:

LVV>С образованием сейчас вообще труба — перевод на западную модель с удовлетворением исключительно практических нужд.


Самое смешное, что т.н. "западная модель" вовсе не в этом заключается. Но у нас как всегда всё по-русски понимают, то есть, через ж.

LVV>Все орут, что математика тому не нужна и этому не нужна... А то, что математика — это просто тренировка мозгов, об этом почему-то ВСЕ забывают!


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

LVV>Я когда у юристов вел математику — они меня доставали... Типа мы гуманитарии, нам математика не нужна...


Ну, эти то и вовсе животные, сочувствую.

LVV>Даже наши родные программеры сейчас такого низкого качества студенты, что просто ужас!


Спасибо ВВП и ЕР за школьную реформу.

LVV>А с математикой у половины курса — полный завал!


Я правильно догадываюсь, что это половину все равно никто не отчислит?

Вот в этом и корень проблемы. Быдло понимает только кнут. От пряников оно уже рыло воротит, зажралось.
Re[8]: Раннее знакомство с Java калечит судьбы программистов
От: Аноним  
Дата: 21.01.08 11:26
Оценка: +1
Здравствуйте, LaptevVV, Вы писали:

KP>>Разве GNU Lisp простенький? Кроме того, бесплатный и с кучей документации. Т.е. для реальной работы может он и простоват (трудно судить не имею опыта коммерческой разработки на нем), но для обучения самое оно, на мой взгляд.

KP>>Ну, кроме того, можно ту же Схему взять
LVV>Спасибо за наводку — я как-то о ГНУ и забыл...

Гну не советую. Он далек от стандарта, он, по сути, живет и развивается только и исключительно ради единственного приложения — Maxima. Благо, майнтейнер был один, светлая ему память. Для коммерческого применения сейчас лучше всех подходит SBCL.

Для обучения вполне неплох даже простенький clisp. Да и не только для обучения, он и на практике применяется знатно. Даже в космос слетал. Но лучше все же не Common Lisp давать, а Схему. Тут уж и методического материала полно, даже на русском языке найдется.

LVV>Эт все правильно. НО!... Одна единственная причина на корню губит все благие намерения: кто преподает?!


О! Вот тут и зарыта собака. Начиная с самой школы. Потом просто стыдно удивляться низкому уровню нынешнего плебея с корочкой "В/О".

LVV>Еще один скользкий момент может в наше время случиться при обучении студентов скале или лиспу. Всегда есть на курсе ряд активных студентов, которые постоянно возникают по поводу того, чему их учат.


А быдло надо гнать ссаными тряпками. Без малейшей пощады. Эти скоты еще и других портят.

LVV> Скала или Лисп — это в нашей российской действительности фактически неупотребляемые вещи. Запросто может возникнуть ситуация, когда группа студентов пойдет в деканат и заявит, что учат их всякой фигне. И начнется разбор полетов на уровне декана. Оно нам надо?


Всегда можно отмазаться ссылками на MIT, Беркли и Оксфорд.
Re[10]: Раннее знакомство с Java калечит судьбы программисто
От: Курилка Россия http://kirya.narod.ru/
Дата: 21.01.08 11:53
Оценка: +1
Здравствуйте, Аноним, Вы писали:

А>Здравствуйте, Курилка, Вы писали:


К>>Есть разные "западные модели", не стоит спорить по поводу терминологии.


А> Такой модели, которую пытаются строить у нас, нет нигде.


Кто строит, где строит?
Хотя лучше не отвечайте, это пустопорожний спор

А>>> Я правильно догадываюсь, что это половину все равно никто не отчислит?


А>>> Вот в этом и корень проблемы. Быдло понимает только кнут. От пряников оно уже рыло воротит, зажралось.


К>>Очень примитивная модель из кнута и пряника, извиняюсь, но вот уж очень "по-быдловски".


А> А именно примитивные модели в антропологии и работают лучше всего. Человек ведь на самом деле примитивен.


А> В чем вы конкретно сомневаетесь? Что эти конкретные студенты — быдло? Странно, тут вроде простора для сомнений не остается никак. Что кнут из остальных дурь не вышибет? Практика прошедших столетий показывает — вышибет, и еще как. Что на пряник народ больше не ведется? Опять же, банальная статистика, никакого мошенничества и обобщений. То есть, все знают, что высокообразованный, грамотный специалист имеет потенциал сильно выше среднего плебея, но никому не хочется идти по слишком уж трдному, напряжному пути. Предпочитают получить корочку и просиживать задницу на непыльной, пусть и не очень доходной плебейской работке.


Считаю ваш подход навешивания ярлыков неразумным и неконструктивным. Можете аргументированно сказать, что вы сделали для того, чтобы быдло перестало быть быдлом? Если вам это не надо, то какой смысл? Просто покричать и показать свою мощь ума?
В форумах громкими фразами кидаться легко.
Со своей стороны скажу, что не считаю людей за "быдло", люди они есть люди, просто разные. С неграмотностью по-моему надо бороться. Пока я лично сделал нетак много в этом плане и считаю, что над этим надо работать.
Re[11]: Раннее знакомство с Java калечит судьбы программисто
От: Аноним  
Дата: 21.01.08 12:00
Оценка: +1
Здравствуйте, Курилка, Вы писали:

А>> Такой модели, которую пытаются строить у нас, нет нигде.


К>Кто строит, где строит?


Министерство так называемого образования. Последовательно — введением ЕГЭ, двухступенчатой системы, сокращением программы по основным предметам и введением предметов идиотских.

К>Считаю ваш подход навешивания ярлыков неразумным и неконструктивным.


Это не ярлыки, это классификация. Вполне четко определенная, тут нет места субъективности.

K> Можете аргументированно сказать, что вы сделали для того, чтобы быдло перестало быть быдлом? Если вам это не надо, то какой смысл? Просто покричать и показать свою мощь ума?


Я в школе преподавал. Вообще на четверть ставки, ради идеи. Кружок вел. Просто теперь нет больше той школы.

К>В форумах громкими фразами кидаться легко.

К>Со своей стороны скажу, что не считаю людей за "быдло", люди они есть люди, просто разные. С неграмотностью по-моему надо бороться. Пока я лично сделал нетак много в этом плане и считаю, что над этим надо работать.

Быдловость она не в неграмотности заключается, а в патологическом нежелании становиться грамотным. Быдло — это такой скот. Самодовольный, жвачный, готовый приложить титанические усилия ради того, чтобы только не напрягать ум. И такие студенты, про которых пишет уважаемый тов. Лаптев, как раз под такую классификацию попадают стопроцентно. Уважать их не за что, вообще. Терпеть их нет смысла. Надо только делать всё возможное, чтобы оградить потенциально хороших и умных детей от их тлетворного влияния.
Re[13]: Раннее знакомство с Java калечит судьбы программисто
От: Аноним  
Дата: 21.01.08 12:22
Оценка: +1
Здравствуйте, Курилка, Вы писали:

К>Про проблему согласен, про расставление ярлыков и решение за других людей, что они могут и чего хотят — нет.

К>Если уж расставляем термины, то это просто напросто неприкрытый нацизм.

Вот как раз "нацизм" — это ярлык. Я про нации ничего не говорил.

Я людей разделяю по очень простому критерию: стремятся развиваться — свои, не стремятся — чужие, быдло. И какого хрена эти чужие приперлись в заведение, предназначенное исключительно для этого самого развития, для своих? За корочкой они приперлись. Им с этой корочкой попу свою пристроить проще будет, чтоб дальше сподручней было в полное растение превращаться. Я должен их уважать? Нет. Имею право их презирать и за людей не считать? Да, имею. Поскольку они не просто животные. Они еще и враги. Они своим присутствием разваливают ту самую систему, которая призвана помогать людям развиваться, человеками становиться. Должен я уважать тараканов на кухне? Нет, я должен сделать всё для того, чтоб их не стало. Так и с этими, к которым вы относитесь с непонятным мне гуманизмом.

К>Как любая другая узколобая доктрина он вреден для развития, т.к. загоняет человека в рамки этой самой доктрины.


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

Попрошу заметить — люди не по праву рождения делятся на быдло и не быдло. Быдло — это не инвалиды, так что тут никакой дискриминации нет. Быдловость — это система ценностей. И почему бы ей не быть столь же отторгаемой обществом, как отторгается система ценностей криминальных элементов?
Re[17]: Раннее знакомство с Java калечит судьбы программисто
От: Аноним  
Дата: 21.01.08 13:53
Оценка: +1
Здравствуйте, Курилка, Вы писали:

К>Выделенное спорно как минимум. Ещё одно добровольное самоограничение.

К>В общем разногласие ясно, больше продолжать не вижу смысла.

А зря. Я готов выслушать конструктивные предложения и план действий по дебыдлизации общества.

Помогать тем, кто ищет знаний? И так делаю, но это не решение. Они и так уже "свои". А вот "чужих" пнуть можно только сменив глобально приоритеты всего общества. Только осуждение. Но никак не молчаливое одобрение по типу вашего, что мол "ну что же, вы тоже люди, может вам так легче, кто я такой, чтоб вас осуждать", и тому подобные интеллигентские сопли.

Вы пробовали взять одно, отдельное быдло, и очеловечить его? Я вот пробовал, неоднократно. Всегда реакция одна — "Чем это я хуже других? Все так живут, зачем мне одному корячиться?". Вот если будет всё общество считать, что каждый "так живущий" — презренное ничтожество, то под таким давлением они и очеловечатся. Пропадет у них возможность друг на друга кивать.
Re[18]: Раннее знакомство с Java калечит судьбы программисто
От: SergH Россия  
Дата: 21.01.08 14:06
Оценка: +1
Здравствуйте, Аноним, Вы писали:

Во-первых, твоё определение быдла меня не устраивает. Когда-то я, может, под ним бы и подписался... Но сейчас мне кажется, что мозги и образование дело сугубо вторичное. Можно быть образованным быдлом, можно необразованным человеком. И не в тяге к знаниям дело. И термин "быдло" для меня очень размыт, поэтому я его не использую.

А> А зря. Я готов выслушать конструктивные предложения и план действий по дебыдлизации общества.


А> Помогать тем, кто ищет знаний? И так делаю, но это не решение. Они и так уже "свои". А вот "чужих" пнуть можно только сменив глобально приоритеты всего общества.


+1. Глобальные приоритеты надо менять. Но делается это именно снизу, изнутри. Изменение глобальных приоритетов "сверху" работает плохо.

А> Только осуждение.


+\-1

Положительная мотивирование рулит. Но направленное не на достаточно сомнительную востребованность и заработную плату образованного человека (профессорами на помойках сейчас никого не удивишь). Что-то больше нужно. И, повторюсь, не совсем в ту сторону. Образование — важно, но не критично.
Делай что должно, и будь что будет
Re[12]: Раннее знакомство с Java калечит судьбы программисто
От: Аноним  
Дата: 23.01.08 10:56
Оценка: -1
Здравствуйте, nlv, Вы писали:

>> попам не молятся.


nlv>Ув. Аноним, может не будем разжигать религиозную рознь,

nlv>только одно замечание, чтобы у вас в голове не конфликтовали между собой вера и наука.

О, вылез. Попам молящийся, очевидно, не Богу.

nlv>С остальным согласен, да вот только вопрос "кому молятся эти "построители вертикали"?" может

nlv>претендовать на третье место в вышеприведенном списке вопросов.

Вот попам и молятся. Попы для них — что раньше комиссары. Удивительно мощный механизм контроля за быдломассами.
Re[4]: Раннее знакомство с Java калечит судьбы программистов
От: Геннадий Васильев Россия http://www.livejournal.com/users/gesha_x
Дата: 23.01.08 18:52
Оценка: :)
Здравствуйте, Andrei F., Вы писали:

LVV>>Сам бы попреподавал, а?

AF>Может быть, когда-нибудь в будушем. Сейчас у меня других задач по уши.

И да не убавится у тебя задач!
Я знаю только две бесконечные вещи — Вселенную и человеческую глупость, и я не совсем уверен насчёт Вселенной. (c) А. Эйнштейн
P.S.: Винодельческие провинции — это есть рулез!
Re[2]: Раннее знакомство с Java калечит судьбы программистов
От: Геннадий Васильев Россия http://www.livejournal.com/users/gesha_x
Дата: 23.01.08 18:53
Оценка: +1
Здравствуйте, Andrei F., Вы писали:

AF>А первый язык можно брать любой из применяемых промышленно, разницы все равно не будет.


Именно этого делать нельзя вообще. Студенты — ещё дети. Разбегутся под крылья таких же полуоперившихся манагеров.
Я знаю только две бесконечные вещи — Вселенную и человеческую глупость, и я не совсем уверен насчёт Вселенной. (c) А. Эйнштейн
P.S.: Винодельческие провинции — это есть рулез!
Re[2]: Раннее знакомство с Java калечит судьбы программистов
От: Геннадий Васильев Россия http://www.livejournal.com/users/gesha_x
Дата: 23.01.08 19:11
Оценка: -1
Здравствуйте, Pavel Dvorkin, Вы писали:

PD>У меня вообще подозрение, что если сравнивать код C++ и (Java, C#), по числу строк, то надо за одну строку на C++ 5 строк Java давать. Столько там чистого оверхеда...


2008-й на дворе, а такое впечатление, что ты это только что открыл.
Я знаю только две бесконечные вещи — Вселенную и человеческую глупость, и я не совсем уверен насчёт Вселенной. (c) А. Эйнштейн
P.S.: Винодельческие провинции — это есть рулез!
Re[5]: Раннее знакомство с Java калечит судьбы программистов
От: Andrei F.  
Дата: 24.01.08 05:08
Оценка: :)
Здравствуйте, Геннадий Васильев, Вы писали:

ГВ>Дальнейшее понятно, или продолжать пальцем тыкать?


Не надо пальцем тыкать, воспитанные люди так не делают Надо нормально объяснять свою мысль.
Только не надо устраивать новый дзен-флэйм.
Re[16]: Раннее знакомство с Java калечит судьбы программисто
От: Аноним  
Дата: 24.01.08 11:49
Оценка: :)
Здравствуйте, nlv, Вы писали:

А>> ... собрался тут поучать *меня*? Ржунимагу!


nlv>Вразуми и спаси, тебя, Господи!


(голосом вампира из фильма "Fright Night"): Нужна вера, чтобы это подействовало!
Re[6]: Раннее знакомство с Java калечит судьбы программистов
От: sndanil Россия  
Дата: 25.01.08 08:23
Оценка: +1
Здравствуйте, Pavel Dvorkin, Вы писали:

PD>А теперь берем C#


PD>Directory

PD>DirectoryInfo
PD>DriveInfo
PD>File
PD>FileInfo
PD>FileStream
PD>BufferedStream
PD>FileSystemInfo
PD>BinaryReader
PD>BinaryWriter
PD>StreamReader
PD>StreamWriter
PD>TextReader
PD>TextWriter

значит ли это что когда ты будешь писать в файл, то тебе придется использовать все эти классы? ... что бы действительно сравнить, просто набросай пример и все станет ясно ...

PD>Я ничего не забыл ? Да, еще с десяток exception-классов. Ну нельзя же конец файла обработать иначе, как не создав для этой цели EndOfStreamException

PD>

этот эксепшн не только к файловому вводу-выводу относится
Re[9]: Раннее знакомство с Java калечит судьбы программистов
От: Pavel Dvorkin Россия  
Дата: 28.01.08 07:12
Оценка: -1
Здравствуйте, IT, Вы писали:

IT>Боюсь маэстро уже ничего не ответит.


Не стоит решать за маэстро, ответит он или нет. Маэстро в выходные в Интернете не бывает, но отвечает на то, что ему кажется важным — обязательно.


IT>Вот! Даже этот код можно упростить.


Это точно. Классическая иллюстрация на тему "иная простота хуже ...."


>И всё благодаря стандартным библиотекам. А на плюсах нам сейчас начнут возить указателями по памяти,


Именно это я сделал в своем тесте. И работает он в 33 раза быстрее!


>надеясь где-нибудь нечаянно не промахнуться.


Не промахнусь, не бойся.

>В лучшем случае изобретут гору трёхколёсных велосипедов.


Пусть так, но ездит он в 33 раза быстрее твоего Мерседеса

Напиши код на C#, который решит ту же задачу за 0.015 сек, тогда и поговорим. Напиши, очень прошу
With best regards
Pavel Dvorkin
Re[10]: Уточнение
От: Геннадий Васильев Россия http://www.livejournal.com/users/gesha_x
Дата: 29.01.08 07:22
Оценка: :)
ГВ>Стыдюсь. Целых две! return не считаем, у тебя его нет.

Ошибка. return у тебя есть. Следовательно — целых три! Шансы отстоять "десятки раз" резко повышаются!
Я знаю только две бесконечные вещи — Вселенную и человеческую глупость, и я не совсем уверен насчёт Вселенной. (c) А. Эйнштейн
P.S.: Винодельческие провинции — это есть рулез!
Re[5]: Раннее знакомство с Java калечит судьбы программистов
От: FR  
Дата: 29.01.08 15:16
Оценка: +1
Здравствуйте, SergH, Вы писали:

SH>Да, проблему они хорошо обозначили. Я, правда, понятия не имею, насколько декларируемое падение уровня соответствует истине, но то, что они написали, как минимум, хорошая формулировка для проблемы.


SH>Но вот причину этой проблемы они ищут где-то не там. Имхо, им бы первые два пункта выправить, и с третьим сразу стало бы полегче. И с Явой это напрямую не связано. Они там жалуются, что студенты не врубаются в указатели.. В Scheme нет ни то что указателей, даже ссылок нет и самой операции присваивания. И ничего, как-то учатся, SICP считается классикой...


Присваивание в Схеме есть. Указателей нет, но есть списки, и за умение правильно с ними работать и понимать как они устроены, по моему отвечает та же часть мозга которая используется для работы с указателями
Re[11]: Раннее знакомство с Java калечит судьбы программисто
От: CreatorCray  
Дата: 30.01.08 10:30
Оценка: :)
Здравствуйте, LaptevVV, Вы писали:

KP>>Кстати, а что такое "до диез"?

LVV>С# в музыкальной нотации называется До диез.
Вы музыке учите или все таки программированию.
Если программированию то извольте правильно называть то, чему учите.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re[9]: Раннее знакомство с Java калечит судьбы программистов
От: CreatorCray  
Дата: 30.01.08 10:30
Оценка: +1
Здравствуйте, IT, Вы писали:

IT> Мне пофиг как оно там внутри работает. Оно работает, решает свою задачу с приемлемой для моих задач производительностью и мне этого достаточно.

Плохо что тебе пофиг. Вот, сейчас ищем как ускорить большой проект, который писали такие же, которым пофиг. И когда проект на реальных данных через некоторое время стал работать кошмарно долго (часы) то
Это скорее к качеству реализации библиотек. Потому как внутри сделано ИМХО через задницу.

IT> А вот то что я решаю это всё в одну строку — это огромный плюс, потому что строк у меня таких не одна, а десятки тысяч и увеличение объёма кода в 33 раза, как в твоём случае для меня неприемлемо. Я не из тех, кто любит хвастаться проектами в миллионы бестолковых строк.

А что тебе мешает написать библиотеку для С++. Или просто класс-хелпер в проекте.
Если поставить С# и С++ в одинаковое положение просто сравняв возможности библ, которые идут с ними "по умолчанию" то окажется что разница то между ними в колве кода совсем маленькая.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re[13]: Раннее знакомство с Java калечит судьбы программисто
От: Pavel Dvorkin Россия  
Дата: 30.01.08 11:25
Оценка: +1
Здравствуйте, konsoletyper, Вы писали:

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


K>Смотря какой цикл и что ещё в нём делается.


+1

PD>>при условии. что можно быть уверенным в том. что он никогда не начнет сильно расти...


K>Условие редкое. Я про это писал.


Чаще редкое. я бы так сказал...

K>Ну дык. Думаю, тот же IT делает анализ применимости.


Вообще-то он прямо сказал, что его не интересует, как оно там внутри устроено...

>Вася Пупкин, который полгода назад открыл для себя способ рисовать формочки в Делфях такого анализа не делает. Но внимание! Вася Пупкин и в C++ и STL наворотит такого (свинья везде грязь найдёт).


См. ответ SergH, мне нечего больше добавить.

>Ну так вот: ради профессионалов вроде IT и проектируются фреймворки,


Эх, если бы... Тогда я и говорить ничего не стал бы. Беда именно в том, что эти фреймворки ну прямо-таки как будто специально созданы для полупрофессионалов. Найди класс, найди метод — вперед. Так большинство и работает. Дедлайн на носу, времени разбираться нет, способ сделать есть — вперед. И вот поэтому я и встрял в эту дискуссию, тема которой "Раннее знакомство с Java калечит судьбы программистов" . Сначала надо научиться самому писать, а потом уж использовать готовые фреймворки. Иначе их использование будет по принципу черного ящика — со всеми вытекающими.


>чтобы они могли меньше времени тратить на вещи, которые не критичны (предполагается, что как специалисты, они могут выделить такие ситуации). Что же до ВП — всем пофигу, т.к. ВП спасёт не супермощный фреймворк, а супеполезные книжки.


Опять-таки если бы... Потому как книжки по той же Java и C# большей частью именно тому и посвящены, как этот фреймворк использовать. Не говорю — все книги, но большинство. А до тех, которые действительно рассматривают детали реализации, ВП либо вообще не доберется, либо доберется тогда, когда уже поздно будет, так как он написал уже тысячи строк кода вышеизложенным методом. Прочтет он теперь полезную книжку, где говорится, что он многое делал не так и что ? Думаешь, пересмотрит свои воззрения ? Черта с два, просто отложит эту книгу в сторону с мыслю — придумывают тут всякое, писал раньше код, заказчик не жаловался, и дальше писать буду.

K>Ну, я думаю, и в C++ных библиотеках немало граблей, на которые гипотетический ВП может наступить и истратить 300Мб памяти и заставить работать прогу сутками.


Это можно и без библиотек сделать. Помню втык, который я устроил одному студенту за транспонирование квадратной матрицы. Он для этого новую матрицу создал .
Но вот для этого преподаватель и нужен. Чтобы сказал — так не делают, ищи решение получше. А когда перед глазами лишь фреймворк

Matrix trans = mSrc.Transpose();

то и ничего не скажешь. Хорошо, если там найдется метод, который на месте делает. Так ведь прямоугодьную матрицу на месте не транспонируешь, будут авторы FW специально этим частным случаем заниматься . Память сейчас не ресурс, new вам в руки и вперед, а старую матрицу со временем GC приберет

Вот тебе другой пример, который IT привел

return File.ReadAllText("filename.ext").Split('\n')[n];

Для меня тут несколько светофоров с красным светом поставлено. ReadAllText — это что, чтение целиком ? Куда ? В один буфер построчно ? Да нет, иначе какой потом Split ? Значит, в один буфер ? А это надо ? Зачем мне весь файл в память переводить, если одна строка нужна, хоть и последняя. Второй светофор — Split ? Он мне массив строк вернет ? Размер какой данных у этого массива ? Опять целый файл ? Да еще и выделение памяти на каждую строку. А строку как там делают ? Тут я уже не знаю, надо исходники смотреть. Смотрю — посимвольно в StringBuilder добавляют. Бррр... И все ради одной последней строки ? При том, что суть задачи разбора по строкам банальна — иди по файлу, ищи CR/LF... А последнюю строку , кстати, и вообще просто можно получить — прочитать , скажем, 1024 байта в конце файла и искать предпоследний CR/LF задним ходом. Найдем — задача решена. Не найдем — еще 1 Кб прочитаем и т.д. За нулевое время от размера файла задача решается и с затратами памяти в 1 Кб + размер строки.

K>Именно про то я и говорю. Как раз .NET Framework спроектирован по данному принципу. Не нравятся "высокоуровневые" TextReader, File и т.п., можно юзать Stream. Если слишком много проблем с ручной работой со Stream — BinaryReader тут как тут. Надо буферизацию сделать — нет ничего проще: оборачиваем Stream в BufferedStream.


И все же, как насчет 0.015 сек ? . Не выйдет ведь и со Stream. Потому что здесь вообще в/в неприменим, не даст он такой скорости даже на C++. Слишком много лишних действий.

PD>>Все же, ответь мне на вопрос, который я уже в десятый раз задаю. Как на C# сделать просмотр текстового файла в 12 Мб за 0.015 сек ? Ладно, пусть это 1%, пусть даже 0.01%, но вот несчастный я такой, попала моя задача в эти 0.01%, и времени больше нет, и памяти больше нельзя использовать ?


K>Не знаю, насколько это критично. М.б. не подходит вообще для данной задачи C#


Боюсь, что да.

>(как не подходит, например, для написания драйверов видюх, хотя...).


А вот этот аргумент не пойдет. Для написания драйверов он не годится не потому, что в нем что-то не так, а потому, что в драйверах управляемый код не используется. Тут и говорить не о чем. По крайней мере сейчас.

>Тут всё зависит от. Будем ли мы писать универсальную функцию для всех кодировок, или нам заранее известна кодировка? Будем ли мы юзать StringBuilder и List, или сами изобретём более быстрый велосипед (в котором, например, Clear не будет физически обращать в 0 всю коллекцию). Надо ли нам возвращать string[], или достаточно будет вернуть буфер и список пар — (начальный индекс, конечный индекс). И т.д.


Вот именно. Я ведь не противник отнюдь Явы и C#. То, что ты сейчас написал, и есть анализ . Анализ того, насколько это будет быстро, какие ресурсы использоваться будут, есть ли тут лишние действия и можно ли их убрать (а убирание их, возможно, приведет к очень серьезной перестройке). Если такой анализ будет делаться — да пишите потом хоть на Basic . Беда в том, что он многими не будет делаться, и более того, они заявляют, что это и не надо.
With best regards
Pavel Dvorkin
Re[15]: Раннее знакомство с Java калечит судьбы программисто
От: FR  
Дата: 30.01.08 11:50
Оценка: +1
Здравствуйте, konsoletyper, Вы писали:

K>А вообще, ставить вопрос "учить ли Яве или нет" некорректно. Учить. Можно даже выбрать её как первый язык. Но учить надо вообще разным вещам. Ведь программиста учат ещё и матекматике, физике, философии, наконец. Так почему по профильным дисциплинам должная фигурировать только Ява?


Нет вопрос был скорее должна ли быть ява одним из первым чему учить.
По моему нет, лучше такие языки учить когда уже умеешь программировать.
Re[18]: Раннее знакомство с Java калечит судьбы программисто
От: CreatorCray  
Дата: 30.01.08 13:20
Оценка: +1
Здравствуйте, Pavel Dvorkin, Вы писали:

PD>Хм, а при чем тут UTF8 ? Я ведь программу писал для Юникода, а не для UTF8! Для того Юникода, в котором на каждый символ ровно по 2 байта, а в начале стоит FEFF. Естественно, на UTF8 я не рассчитывал.

Т.е. для UTF16 если его BOM = FEFF. Вот только незадача, у UTF16 символ может состоять из более чем 1 WORD-a. Двубайтовый "Уникод" с одним словом на символ это упрощенная (устаревшая) версия и называется UCS2. Работать с ней правда гораздо удобнее...
Воскуривать тут http://en.wikipedia.org/wiki/UCS2

Ну а полноценный Unicode это UTF32.
Вообще еще стоит покурить тут: http://www.unicode.org/standard/WhatIsUnicode.html , но после воскуривания начинаешь понимать что полноценный unicode это ужасный гемор на самом деле...
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re[13]: Раннее знакомство с Java калечит судьбы программисто
От: CreatorCray  
Дата: 30.01.08 13:51
Оценка: +1
Здравствуйте, SergH, Вы писали:

CC>>Ну, под разные задачи, в разное время созданные, с разным рантаймом.

SH>Отлично! Ты тоже с этим согласен.
Трудно не согласиться с фактами. Вот только видим похоже мы с тобой в них несколько разное.
SH> И я тоже считаю, что "под разные задачи, в разное время созданные".

SH>И считаю, что время изменилось и теперь задачи C# более актуальны.

Отнюдь. Задач добавилось. И для определенного круга задач С# стал более удобным чем то, что уже имелось. Собственно потому он и появился — как реакция на появление и рост того самого круга задач.

SH> И что время C++ потихоньку уходит.

Ты посчитай сколько лет оно уже все "уходит"

Ты смотришь со своей колокольни. И видишь рядом с собой те задачи, которыми ты занимаешься. И для которых лучше подходит не С++.
Где то дальше стоит колокольня Павла, и он с нее видит свои задачи, много и отчетливо. Для них классно подходит С++. Твои же задачи видны где то далеко и потому мелкие. Ну и наоборот.
Понятно изложил?

SH> И не понимаю, как ты, придерживаясь того же мнения можешь отстаивать преимущества С++.

Ох ёлы палы. Ты слеп, камрад.
Вот моё мнение, которого я придерживаюсь:

Каждый инструмент лучше всего подходит для решения определенного рода задач — раз
У каждого инструмента есть недостатки, которые делают его непригодным для решения некоторого круга задач — два
Нет инструмента, который бы решал все задачи — три
Для достижения максимальной выгоды часто приходится использовать несколько инструментов — четыре

Я отстаиваю то, что С++ лучше подходит для решения определенного круга задач. Ты же походу утверждаешь что С++ уже почти ни на что не годен, а С# рулит везде.

SH>Конечно, есть области, где C# отстанет. Но если он покрывает 99%..

Он никогда не покроет 99%. По множеству причин.
Равно как никакой другой язык.
В лучшем случае по грубой оценке — половину задач.
Но 99% — нереально.

CC>>Ждем выхода следующей ревизии С++.

SH>Жди. Я уже не жду.
Появится — посмотрим.
До этого момента — нет смысла булькать в лужу...
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re[15]: Раннее знакомство с Java калечит судьбы программисто
От: Pavel Dvorkin Россия  
Дата: 30.01.08 14:06
Оценка: +1
Здравствуйте, konsoletyper, Вы писали:

K>Ох, Павел, учись я у Вас, был бы круглым двоечником


Не думаю. Пару раз не принял бы, ну и все — сделал бы все как следует .

>Лично мне ближе позиция студента. Раз уж пошли примеры из жизни, приведу и я один.


>Зато при каждой "синхронизации с БЗ" (так обозван процесс перегенерации ДКА) приходится ждать секунд 40. Спрашивается: оно мне надо было оптимизировать, чтобы снизить время ожидания на 2-3 сек?


Нет , не надо. А может, надо разбираться с перегенерацией БЗ. Хотя черт тут знает. У меня тоже была собственная БД , генерация которой шла 5 часов, при том. что я оптимизировал под не могу. Но время там не лимитировало, перегенерация производмлась один раз в полгода.

>Кроме того, данные между гридом, где всё это выводится и обработчиком передаются жутко неэффективно, всюду копируются, хранятся в в структурах типа List и Dictionary, которые, как известно, жрут памяти поболее, чем им реально нужно. Ну и что? У меня одни только ДКА отжирают 90Мб. Лишние 2-3 Мб-не проблема.


Значит, не надо было оптимизировать. Или надо было — эти самые List и Dictionary или передачу данных.

K>PS: А история собиралась уже было закончиться хэппиэндом — на обработку одного прайса уходило менее 1 сек, так что была сделана, в отличие от предыдущего продукта, итерактивная обработка. Но потом мне вздумалось приделать недетерминированный поиск (чтобы решить некоторые проблемы и повысить качество обработки). Так вот теперь уже на один прайс может уходить от 5 до 60 сек.


Ну тогда надо понять, что там творится с этим недетерминированным поиском.

>Придётся мне опять днями и ночами сидеть в профайлере, а так же придумывать эвристики, чтобы обрубать ветки дерева решений.


Наверное.

Я, в общем-то, почти со всем согласен. Конечно, не надо оптимизировать то, что не имеет смысла оптимизировать. Если это 100% знать заранее со 100% надежностью. Но это не значит, что надо писать как бог на душу положит, взять первое попавшееся решение, не проанализировав его, и применить. Потому что если такое делать, то и профайлер не поможет, так как тормозить в конечном счете будет все . Поэтому все же без надобности писать что бог на душу положит я не стал бы. В конце концов, рассмотрим опять пример с чтением строки из файла. IT предложил код, на написание которого уйдет 2 минуты. Я свой код писал 30 минут (когда-то, сейчас я его просто оттуда вытащил, а сделал бы тогда класс — тоже в 2 минуты уложился бы). Ну и что, это принципиально ? Зато я точно знаю — здесь тормозить не будет. Здесь я выжал все, что можно. Хотите — в цикл вставляйте, что хотите делайте, лучше не будет (я так думаю . И все, я об этом забыл, есть другие проблемы. Это — o(1) по сравнению с другим.

А у IT однажды этот код в одну строчку боком выйдет...

А основное время на разработку у тебя все равно не на стандартные действия уйдет. Уйдет оно на то, о чем ты сам пишешь (эвристики, дерево решений и его обрезание и т.д.), где никакие библиотеки тебе не помогут, потому что самому все писать надо.

Вот здесь, между прочим, собака отчасти и зарыта. Когда в проекте почти одни только стандартные действия (классический пример — web-сайты — юзеровский ввод/вывод (HTML), ввод/вывод с диска (БД) + логика на уровне расширенного поиска плюс арифметика на уровне 6 класса средней школы + 5 запросов пользователя в минуту + 5 пользователей одновременно максимум , то действительно, можно писать что бог на душу положит, поскольку тут не Pentium-4 нужен, а и Pentium -1 с 32 Мб сойдет. Беда же в том, что адепты этого web-программировния пытаются перенести эти принципы на все остальное, и тем самым калечат неокрепшие души студентов
With best regards
Pavel Dvorkin
Re[15]: Раннее знакомство с Java калечит судьбы программисто
От: CreatorCray  
Дата: 30.01.08 14:18
Оценка: +1
Здравствуйте, SergH, Вы писали:

CC>>Ты смотришь со своей колокольни. И видишь рядом с собой те задачи, которыми ты занимаешься. И для которых лучше подходит не С++.

SH>Я занимаюсь очень разными задачами. Но если оценивать в процентах, причём не по моему опыту, а шире, то окажется, что мест, где актуален С++ осталось очень немного. Только те, где критична производительность/память.

SH>Я чуть выше обозначил область работы C++. Можешь свой вариант написать?

Я бы сказал, где важна производительность и потребление ресурсов.
Потребление ресурсов по мне так важно везде. Потому как если маленькая утилита хавает 30 метров private bytes — это просто не приемлемо. Для большой проги, которая делает много чего и является основной рабочей средой на компе — есть много и думать долго еще можно простить. Но для тула помельче, если к примеру это не АРМ а какой нить утиль типа офиса — потребление ресурсов должно быть оправданным — столько сколько реально необходимо. Потому как мы все пользуемся многозадачными ОС в которой может быть запущено много разных процессов. И когда каждый из них начинает жрать сколько ему вздумается — это уже бардак.

Самое интересное, что начали то с того, что плохо когда "пофиг как работает зато я решаю это одной строкой"
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re[20]: Раннее знакомство с Java калечит судьбы программисто
От: SergH Россия  
Дата: 30.01.08 15:54
Оценка: +1
Здравствуйте, CreatorCray, Вы писали:

CC>Теперь давай добавим побольше конкретики: чего именно тебе не хватает чтобы написать на С++.

CC>Причем давай говорить конкретно — не хватает класса строк с блаблабла функционалом.
CC>Как бы не оказалось что не хватает просто фреймворка.

Свободы
У кого-то в подписи было "ничто так не ограничивает свободу творчества программиста, как компилятор". Вот Питон ограничивает гораздо меньше.

Динамической типизации. А так же генераторов, итераторов и GC. И лямбд. И возможности передать в функцию указатель на метод конкретного объекта (конкретного экземпляра, this передаётся незаметно) — прозрачно и для функции и для объекта. Это так, навскидку.

Я не могу назвать что-то одно или исчерпывающий список. Я просто рекомендую тебе попробовать Питон.

Ты говорил про "правильно спроектированную библиотеку на C++". Фокус в том, что правильно спроектировать библиотеку на C++ сложнее. Хотя бы — тупой пример — какой класс строк должна использовать эта библиотека? Существует пяток различных, использовать в одном проекте несколько классов строк неудобно, переносимость библиотек падает, народ использует char*. Что тоже неудобно, но хотя бы переносимо.. Пока не всплывает юникод и прочий utf.

Причина — С++ слишком заботится о байтах. О машинном представлении. Даже если это скрыто внутри класса, это всегда приходится держать в уме. Питон относится к этому проще.. Например, Питоновский int никогда не переполняется. И строчки там приличные.

Конечно, Питон работает на порядок медленнее. Зато писать на нём гораздо удобнее — пусть и не на порядок.
Делай что должно, и будь что будет
Re[21]: Раннее знакомство с Java калечит судьбы программисто
От: SergH Россия  
Дата: 30.01.08 16:47
Оценка: +1
Здравствуйте, SergH, Вы писали:

SH> Фокус в том, что правильно спроектировать библиотеку на C++ сложнее. ...

SH> Причина — С++ слишком заботится о байтах. О машинном представлении ...

Немного разверну.

В качестве "гарантированно переносимого" С++ предоставляет слишком низкоуровневые абстрации. Везде есть int, char, указатели. И, в общем, всё. Т.е., если библиотека хочет, чтобы её "понимали" все, она должна общаться с пользователем на языке, состоящем из int, char, указателей. Иначе это уже не просто библиотека, а, например, MFC-библиотека. Или ATL-библиотека. Или STL-библиотека. STL почти всем хороша, но её неудобно использовать из MFC-приложения..

Всё это усложняет совмещение нескольких библиотек, и/или фреймворков друг с другом. И написание "правильных" библиотек тоже усложняет.
Делай что должно, и будь что будет
Re[10]: Раннее знакомство с Java калечит судьбы программисто
От: IT Россия linq2db.com
Дата: 31.01.08 00:42
Оценка: +1
Здравствуйте, CreatorCray, Вы писали:

IT>> Мне пофиг как оно там внутри работает. Оно работает, решает свою задачу с приемлемой для моих задач производительностью и мне этого достаточно.

CC>Плохо что тебе пофиг. Вот, сейчас ищем как ускорить большой проект, который писали такие же, которым пофиг. И когда проект на реальных данных через некоторое время стал работать кошмарно долго (часы) то
CC>Это скорее к качеству реализации библиотек. Потому как внутри сделано ИМХО через задницу.

У меня серьёзных притензий к качеству используемых мною библиотек нет. А когда они появляются, то я пишу свои, с приемлемым качеством и производительностью.

Но мы здесь не о том. Дворкин известный оптимизатор на пустом месте. Например, для решения задачи вычитывания строки из файла по номеру он начинает открывать map-файлы и наворачивать 25 строк кода там, где достаточно одной. При этом он обосновывает это тем, что это работает аж за 0.015 секунд на 12-ти мегабайтном файле. Но проблема в том, что размер файла для решаемой задачи никогда не превышает, скажем, 10-ти килобайт. И на этих объёмах скорости и с map-файлами и с File.ReadAllText() стремительно стремятся к нулю. Система даже тикнуть не успевает. Так зачем городить огород весь этот огород? Чтобы потом переться от собственной крутости? Было бы от чего. Map-файлы мы прощли ещё 10 лет назад, попёрлись малость от крутости и пошли дальше.

Оптимизация сродни сильнодействующему препарату. Это необходимо в исключительных ситуациях при угрозе жизни или выжимания максимум возможного из существующего. Но никто не есть аспирин или анаболики вместо хлеба и мяса. От этого можно умереть. И сколько приходилось видеть таких программ, умиращих от передозировки оптимизациями. Оптимизации раздувают код, делают его нечетабельным, плохопонемаемым и трудноподдерживаемым. Написать код чуть быстрее, запутав его до предела много ума не надо. Прочитал в книжке Рихтера про map-файлы и готово, лепи их куда попало, обосновывая это тем, что так всегда быстрее. Только зачем?

Есть такой правильный закон — закон Мейера — "Усложнять — просто, упрощать — сложно". Так вот в соответствии с ним наоптимизировать на ровном месте, всё на порядок усложнить и запутать — просто. Найти компромисс, а ещё лучше разумный отказ от бестолковой оптимизации гораздо и гораздо сложнее.

IT>> А вот то что я решаю это всё в одну строку — это огромный плюс, потому что строк у меня таких не одна, а десятки тысяч и увеличение объёма кода в 33 раза, как в твоём случае для меня неприемлемо. Я не из тех, кто любит хвастаться проектами в миллионы бестолковых строк.

CC>А что тебе мешает написать библиотеку для С++. Или просто класс-хелпер в проекте.

Ничего не мешает. Так же как и сотням/тысячам других программистов. В результате потом получается, что приложение состоит их одних класс-хелперов, плохо между собой совместимых, делающих одно и тоже, но зато офигительно оптимизированных каждый на свой лад.

CC>Если поставить С# и С++ в одинаковое положение просто сравняв возможности библ, которые идут с ними "по умолчанию" то окажется что разница то между ними в колве кода совсем маленькая.


Если бабушке прикрутить два шара между ног, то она станет дедушкой. Нет, не станет. Сколько плюсам не прикручивай шары, дедушкой они не станут никогда.
... << RSDN@Home 1.2.0 alpha rev. 771>>
Если нам не помогут, то мы тоже никого не пощадим.
Re[17]: Раннее знакомство с Java калечит судьбы программисто
От: Pavel Dvorkin Россия  
Дата: 31.01.08 06:22
Оценка: +1
Здравствуйте, CreatorCray, Вы писали:

CC>Здравствуйте, Pavel Dvorkin, Вы писали:


PD>>Я тут не раз проводил голосование о том, сколько десктопных приложений на C# установлено на машине. У большинства — до 5 всего лишь.

CC>К примеру у меня кроме йануса можно только MSVC причислить — в нем части на дотнете...

У меня еще на сервере крутится GPMC — Group Policy Management Console. И тормозит.

Кстати, о MSVC. Я до сих пор с тоской вспоминаю MSVC 6.0. Тянул с переходом на новые версии до последнего, оставил ее когда уж совсем было нельзя. Она буквально летала на компьютерах 5-летней давности. А нынешняя только проект открывает 10-15 сек...
With best regards
Pavel Dvorkin
Re[16]: Раннее знакомство с Java калечит судьбы программисто
От: Pavel Dvorkin Россия  
Дата: 31.01.08 06:28
Оценка: +1
Здравствуйте, CreatorCray, Вы писали:

CC>Потребление ресурсов по мне так важно везде. Потому как если маленькая утилита хавает 30 метров private bytes — это просто не приемлемо. Для большой проги, которая делает много чего и является основной рабочей средой на компе — есть много и думать долго еще можно простить. Но для тула помельче, если к примеру это не АРМ а какой нить утиль типа офиса — потребление ресурсов должно быть оправданным — столько сколько реально необходимо. Потому как мы все пользуемся многозадачными ОС в которой может быть запущено много разных процессов. И когда каждый из них начинает жрать сколько ему вздумается — это уже бардак.


Подпишусь под каждым словом. Вот, кстати, классический пример.

У меня стоит триллиан (клиент ICQ). Вообще-то неплохой, я им доволен, но...

Вот сейчас посмотрел по Task Manager : MemUsage 13 Мб, VM Size 14 Мб.

Когда я впервые с ICQ познакомился, у меня на машине было не то 8, не то 16 Мб. И ICQ пейджер вполне нормально работал, жаль, не посмотрел тогда, сколько он памяти занимал. А пейджер, прямо скажем, остался тем же , каким и был и новых функций в режиме чата у него нет, потому что их быть не может. Все новое, что там появилось — замечательно, но это новое нужно один раз в неделю, вот пусть и сидело бы на диске и когда нужно — подгружалось. Извините, но больше 1 Мб памяти на пейджер я бы не дал — незачем просто.
With best regards
Pavel Dvorkin
Re[19]: Раннее знакомство с Java калечит судьбы программисто
От: Pavel Dvorkin Россия  
Дата: 31.01.08 06:37
Оценка: +1
Здравствуйте, SergH, Вы писали:

Еще раз извиняюсь за вмешательство не в свой тред.

SH>Библиотеку для работы на асме с SOAP найти очень сложно. На C++ — довольно легко.


Классические библиотеки (как статические, так и DLL) не на асме и не на С++. Они были написаны на асме или С++ или на С++ с __asm, или вообще не знаю на чем. Но если они следуют стандартным соглашениям о связях при вызове функций, то использовать их можно хоть из асма, хоть из С++, хоть из Delphi, хоть из Фортрана (кстати, совсем недавно писал модуль стыковки Фортран — С, при том, что я никогда с Фортраном на IBM PC не работал).
With best regards
Pavel Dvorkin
Re[20]: Раннее знакомство с Java калечит судьбы программисто
От: FR  
Дата: 31.01.08 06:52
Оценка: +1
Здравствуйте, Pavel Dvorkin, Вы писали:

PD>Классические библиотеки (как статические, так и DLL) не на асме и не на С++. Они были написаны на асме или С++ или на С++ с __asm, или вообще не знаю на чем. Но если они следуют стандартным соглашениям о связях при вызове функций, то использовать их можно хоть из асма, хоть из С++, хоть из Delphi, хоть из Фортрана (кстати, совсем недавно писал модуль стыковки Фортран — С, при том, что я никогда с Фортраном на IBM PC не работал).


Есть небольшая проблемка нет у C++ стандартного ABI, даже на одной платформе. Взять например Win, у разных компиляторов разное искажение имен и даже разная организация таблицы виртуальных классов. Тут только COM может помощь, но он обычно слишком тяжеловесен. Для Си ситуация чуть полегче можно добится совместимости, но и то вылазят иногда тонкости.
Re[21]: Раннее знакомство с Java калечит судьбы программисто
От: CreatorCray  
Дата: 31.01.08 08:39
Оценка: -1
Здравствуйте, SergH, Вы писали:

SH>Свободы

SH>У кого-то в подписи было "ничто так не ограничивает свободу творчества программиста, как компилятор". Вот Питон ограничивает гораздо меньше.
Слишком абстрактно

SH>Динамической типизации.

Для чего?

SH>А так же генераторов

см http://en.wikipedia.org/wiki/Generator_%28computer_science%29 раздел С++

SH> итераторов

Уже есть в плюсах

SH> и GC.

GC — зло в общем случае. + плохо сочетается с ручным управлением памятью.

SH>И лямбд.

Ну, вот чего нет так нет
Насколько я понимаю, без GC они кривовато реализуются...

SH>И возможности передать в функцию указатель на метод конкретного объекта (конкретного экземпляра, this передаётся незаметно) — прозрачно и для функции и для объекта.

ИМХО реализуемо и в С++. Разумеется не так прозрачно
SH> Это так, навскидку.

SH>Я не могу назвать что-то одно или исчерпывающий список. Я просто рекомендую тебе попробовать Питон.

Пробовал. Дописывал функционал в готовой проге когда то давно... В проекте часть функционала вынесена в питоновские скрипты. Причем солидный такой кусок.
Что могу сказать — скриптовый язык он и есть скриптовый...

SH>Ты говорил про "правильно спроектированную библиотеку на C++". Фокус в том, что правильно спроектировать библиотеку на C++ сложнее.

Никто не говорил что будет легко.

SH> Хотя бы — тупой пример — какой класс строк должна использовать эта библиотека?

std::wstring

SH> Существует пяток различных, использовать в одном проекте несколько классов строк неудобно, переносимость библиотек падает, народ использует char*. Что тоже неудобно, но хотя бы переносимо.. Пока не всплывает юникод и прочий utf.

про ANSI строки я уже давно забыл. впрочем если надо — std::string

SH>Причина — С++ слишком заботится о байтах. О машинном представлении. Даже если это скрыто внутри класса, это всегда приходится держать в уме.

Т.е. думать надо о том, что получится перед тем как писать?

SH>Питон относится к этому проще.. Например, Питоновский int никогда не переполняется.

угу. И 287368235523^1024 * 76523876532^512 тоже посчитает и будет хранить?

SH> И строчки там приличные.

В чем приличие?

SH>Конечно, Питон работает на порядок медленнее.

Боюсь в общем случае все таки больше чем на один порядок.

SH>Зато писать на нём гораздо удобнее — пусть и не на порядок.

Смотря что писать. Наблюдал как то библиотеку длинной арифметики с RSA написанную на скриптовом языке (уже толком не помню на каком) — обнять и плакать...
Мелочь писать на нем и всякие управляющие скрипты — можно. То, что не требует особой скорости — тоже. Но блин, почему как только человек открывает для себя новый язык он тут же стремится писать на нем все подряд?!
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re[23]: Раннее знакомство с Java калечит судьбы программисто
От: Pavel Dvorkin Россия  
Дата: 31.01.08 09:49
Оценка: :)
Здравствуйте, FR, Вы писали:

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




SH>>>Питон относится к этому проще.. Например, Питоновский int никогда не переполняется.

CC>>угу. И 287368235523^1024 * 76523876532^512 тоже посчитает и будет хранить?

<skipped>

Во времена оные пришлось мне с машиной Мир-2 работать, киевского производства. У нее не было фиксированной разрядности, числа могли расти как угодно, хоть одно число на всю память. Запустил я на ней некий итерационный алгоритм, который, по моему представлению, должен был около минуты работать. Когда он через 10 минут не закончился , я его принудительно остановил и нажал на пульте "Вывод значений" (вот как тогда отладку производили ). И выдал он мне числа с десятичным порядком около 100 . Процесс разошелся, а overflow-то нет...
With best regards
Pavel Dvorkin
Re[25]: Раннее знакомство с Java калечит судьбы программисто
От: CreatorCray  
Дата: 31.01.08 10:44
Оценка: -1
Здравствуйте, FR, Вы писали:

FR>Коряво, я например очень редко в C++ пользуюсь такими указателями

Я вообще не пользуюсь такими указателями. Просто не возникало надобности. На данный момент не могу себе представить ситуацию, в которой это было бы самым удобным решением. ИМХО если возникает такая надобность то что то не в порядке в архитектуре проги.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re[18]: Раннее знакомство с Java калечит судьбы программисто
От: konsoletyper Россия https://github.com/konsoletyper
Дата: 31.01.08 11:23
Оценка: +1
Здравствуйте, Pavel Dvorkin, Вы писали:

PD>Кстати, о MSVC. Я до сих пор с тоской вспоминаю MSVC 6.0. Тянул с переходом на новые версии до последнего, оставил ее когда уж совсем было нельзя. Она буквально летала на компьютерах 5-летней давности. А нынешняя только проект открывает 10-15 сек...


Чего??? У меня дома машина 4х летней давности (Athlon XP 2100, 512 Мб RAM). И VS2008 вполне нормально работает. Проект открывается секунды 2-3. Вообще, с переходом с 2005 на 2008 заметил только улучшение стабильности и поддержку C# 3.0. Работает так же быстро, разве что рефакторинг чуть помедленее. На рабочих компах просто летает, хотя и они не первой свежести. Я ещё на свой матерюсь, что не может, как рабочие, проект мгновенно открывать.

Кстати, посмотрел бы я на MSVC 6.0, если бы он обеспечивал столь же мощную работу с кодом, что и VS2008 в случае с C#. А то работал он может и побыстрее, но эффективность кодинга была раза в 3-4 меньше.
... << RSDN@Home 1.2.0 alpha rev. 672>>
Re[27]: Раннее знакомство с Java калечит судьбы программисто
От: CreatorCray  
Дата: 31.01.08 12:57
Оценка: :)
Здравствуйте, FR, Вы писали:

FR>Я сейчас на работе тоже утилитами на C++ занимаюсь, свои же проекты на смеси.

У меня наоборот. Теперь дома С++ а на работе все подряд.

CC>>Не так давно ещё и в геймдеве работал ...

FR>Ксати тоже не так давно там же работал
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re[27]: Раннее знакомство с Java калечит судьбы программисто
От: SergH Россия  
Дата: 31.01.08 13:09
Оценка: :)
Здравствуйте, FR, Вы писали:

CC>>Не так давно ещё и в геймдеве работал ...

FR>Ксати тоже не так давно там же работал

Ну и я, правда недолго Только что ушёл из www.creatstudio.ru, они меня научили Питону, за что я им очень благодарен.
Делай что должно, и будь что будет
Re[24]: Раннее знакомство с Java калечит судьбы программисто
От: sndanil Россия  
Дата: 01.02.08 06:49
Оценка: -1
Здравствуйте, Pavel Dvorkin, Вы писали:

PD>mik1 сумел одну из этих проблем решить на Яве. Можно ли на C# — не знаю. Второе, вроде, не решается без указателей.

PD>Почему этот код столь быстрый — объяснять сейчас не буду, почитай Рихтера (не по C#, а по Win32), ну и Соломона с Руссиновичем. Просто здесь задействованы глубинные, базовые механизмы Windows, причем задействованы напрямую, отсюда и скорость.
PD>В конце концов дело не в том, чтобы что-то друг другу доказать. То, что ты делаешь — я тоже умею, а вот наоборот — у тебя не получится. Так что вместо того, чтобы доказывать недоказуемое, лучше ознакомиться с тем, что я использовал — будешь знать об этой возможности. В конце концов, то, что я сделал, можно и на C# повторить, правда, без PInvoke и unmanaged тут не обойдешься.

вместо того что бы предлагать мне перечитать прочитанное, лучше почитай про дотнет и шарп, думаю у тебя отпадет желание писать глупости ...
Re[17]: Раннее знакомство с Java калечит судьбы программисто
От: Pavel Dvorkin Россия  
Дата: 01.02.08 07:19
Оценка: +1
Здравствуйте, mik1, Вы писали:

M>С Эклипсом не работаю, поэтому куда его в окнах написать — не подскажу. Он должен попасть в аргументы для java.exe. Вкючает использование серверной (есть еще клиентская) JVM. Разница в том, что в серверной раньше отрабатывает компилятор, оптимизации более агрессивные... Если само приложение относительно небольшое и/или приложение должно работать долго (серверный процесс), то использование серверной JVM очень оправдано.


Разобрался. Да, немного быстрее

Time elapsed: 0,094000 sec
Line count = 718847

Разницу между твоими и моим результатами спишем на процессор.

Еще раз спасибо.
With best regards
Pavel Dvorkin
Re: Раннее знакомство с Java калечит судьбы программистов
От: kaa.python Ниоткуда РСДН профессионально мёртв и завален ватой.
Дата: 17.01.08 11:57
Оценка:
Статья то верная, тут трудно поспорить, но может сразу в священные войны пойдем?
Re[3]: Раннее знакомство с Java калечит судьбы программистов
От: SergH Россия  
Дата: 17.01.08 13:21
Оценка:
Здравствуйте, frёёm, Вы писали:

ёё>Так что вариантов по моему не много...Фаронов жжот...



Детство

У меня, правда, Фаронова не было, было два других учебника, но фамилий авторов я не помню. Зато Фаронов был у многих моих одноклассников.
Делай что должно, и будь что будет
Re[4]: Раннее знакомство с Java калечит судьбы программистов
От: SergH Россия  
Дата: 17.01.08 16:15
Оценка:
Здравствуйте, Геннадий Васильев, Вы писали:

ГВ>

ГВ>...worrisome trends in CS education. [...]

ГВ>1. Mathematics requirements in CS programs are shrinking.
ГВ>2. The development of programming skills in several languages is giving way to cookbook approaches using large libraries and special-purpose packages.
ГВ>3. The resulting set of skills is insufficient for today’s software industry (in particular for safety and security purposes) and, unfortunately, matches well what the outsourcing industry can offer. We are training easily replaceable professionals. (Вот это вообще блеск, поскольку здесь они открыто называют проблемой то, к чему некоторые стремятся. — Г.В.)


ГВ>В общем, профессора-то в корень зрят.


Да, проблему они хорошо обозначили. Я, правда, понятия не имею, насколько декларируемое падение уровня соответствует истине, но то, что они написали, как минимум, хорошая формулировка для проблемы.

Но вот причину этой проблемы они ищут где-то не там. Имхо, им бы первые два пункта выправить, и с третьим сразу стало бы полегче. И с Явой это напрямую не связано. Они там жалуются, что студенты не врубаются в указатели.. В Scheme нет ни то что указателей, даже ссылок нет и самой операции присваивания. И ничего, как-то учатся, SICP считается классикой...

А в Яве есть ссылки, которые по семантике неплохо совпадают с указателями. Если их студенты не понимают ссылок, то они и на Яве программировать не умеют. И виноваты тут преподаватели. А если ссылки они понимают, то я не вижу трудности в понимании указателей... Правда, я её и так не вижу
Делай что должно, и будь что будет
Re[5]: Раннее знакомство с Java калечит судьбы программистов
От: Alex EXO http://aleksandr-zubarev.moikrug.ru/
Дата: 17.01.08 18:29
Оценка:
Здравствуйте, kaa.python, Вы писали:

KP>Сейчас же, мне кажется, лучше всего было бы, если первым языком был Lisp


У меня так было...
Первая программа в жизни — халтурка под autocad...
Re[6]: Раннее знакомство с Java калечит судьбы программистов
От: SergH Россия  
Дата: 17.01.08 20:36
Оценка:
Здравствуйте, Геннадий Васильев, Вы писали:

ГВ>Как мне кажется, я приблизительно понимаю мотивы писать именно так, как написали эти два профессора. Проще раскритиковать язык программирования, чем выступать с длинным разъяснением причинно-следственных связей между недостатком математики и плохо летающим самолётом. Вернее, не столько "проще", сколько понятней для аудитории. Естественно, причина низкого уровня специалистов не в самом по себе языке Java, а в том, что плюнули на всё остальное, кроме удовлетворения сиюминутных потребностей индустрии. А Java — как раз в этой нише. Вот, собственно, и взаимосвязь явлений.


Да, со всем согласен. Правда, сам я по этому тексту до такого простого обобщения не додумался. Так что мне не ясно, насколько это осознают сами профессора и почему прямо не пишут, а вместо этого встают на скользкую дорожку сравнения языков... Мне кажется можно было бы написать и прямо — во время обучения студенту нужно работать мозгом, даже не смотря на то, что на работе это ему потом почти не понадобится. В области ли математики или в области "вживания" в низкоуровневую архитектуру компьютера — не так важно. Но математика предпочтительнее, а ещё лучше — в обе стороны.

ГВ>Да как сказать... Ссылка и указатель, это, как ни крути, не одно и то же. Указатель подразумевает возможность работы с ним самим, как с отдельной сущностью в отвязке от объекта, на который он указывает. А тут уже надо понимать устройство компьютера, как биты с байтами соотносятся и т.п. Для ссылки этот "набор операций" заметно меньше — проверка на null, да и только. А как, например, смоделировать что-то похожее на "указатель на указатель" на ссылках?


Ладно, согласен, что это не одно и тоже, но взаимоотношения сложнее... Но мне не хочется уводить мысль в сторону, первый пункт интереснее
Делай что должно, и будь что будет
Re[5]: Раннее знакомство с Java калечит судьбы программистов
От: LaptevVV Россия  
Дата: 18.01.08 06:48
Оценка:
Здравствуйте, kaa.python, Вы писали:

LVV>>Мы уже несколько лет в качестве первого языка даем С++.

KP>Когда был студентом, первым языком был Паскаль. Вроде логично, очень хорошо подходит для обучения. Но в то время, очень хотелось, чтоб первым языком давали С++, т.к. он (по моим ощущениям) ближе к реальной жизни.
Мы давали Паскаль пока он использовался на чемпионатах мира.
И наша практика показала, что после паскаля большие трудности при освоении некоторых мест С++ возникают. Например, передача указателя в качестве параметра.
KP>Сейчас же, мне кажется, лучше всего было бы, если первым языком был Lisp
Да, это было бы здорово! Но руководство не понимает — лицензионный лисп не микрософтовский и дорого стоит. А свободные — они простенькие.
Я все мечтаю в системном программировании в качестве лабы лисп начать писать, но пода руки не доходят до сборника лаб по системному программированию.
Хочешь быть счастливым — будь им!
Без булдырабыз!!!
Re[5]: Раннее знакомство с Java калечит судьбы программистов
От: Курилка Россия http://kirya.narod.ru/
Дата: 18.01.08 06:49
Оценка:
Здравствуйте, Mazay, Вы писали:

M>Здравствуйте, Геннадий Васильев, Вы писали:


ГВ>>

3. The resulting set of skills is insufficient for today’s software industry (in particular for safety and security purposes) and, unfortunately, matches well what the outsourcing industry can offer. We are training easily replaceable professionals. (Вот это вообще блеск, поскольку здесь они открыто называют проблемой то, к чему некоторые стремятся. — Г.В.)


M>Ну стремятся к этому IT-менеджеры. А специалисты напротив хотят быть незаменимыми. Учитывая что прямыми "заказчиками" этих профессоров являются скорее специалисты, то вполне объяснимо, почему они считают это проблемой.


Только вот деньги у менеджеров и специалистов им слушать не обязательно
Re[7]: Раннее знакомство с Java калечит судьбы программистов
От: Курилка Россия http://kirya.narod.ru/
Дата: 18.01.08 07:40
Оценка:
Здравствуйте, LaptevVV, Вы писали:

LVV>С образованием сейчас вообще труба — перевод на западную модель с удовлетворением исключительно практических нужд.

[cut]

А у государства есть какие-нибудь дельные проекты или все в русле идеи о практических нуждах? Вспоминается только президентская программа, а там MBA, т.е. тоже воспитываются гумманитарии, хотя, на мой взгляд, тренировка мозга и критического подхода к решению проблем, которая есть в точных науках, чрезвычайно полезна для управленцев и бизнесменов.
Re[7]: Раннее знакомство с Java калечит судьбы программистов
От: Геннадий Васильев Россия http://www.livejournal.com/users/gesha_x
Дата: 18.01.08 08:03
Оценка:
Здравствуйте, SergH, Вы писали:

SH>Да, со всем согласен. Правда, сам я по этому тексту до такого простого обобщения не додумался. Так что мне не ясно, насколько это осознают сами профессора и почему прямо не пишут, а вместо этого встают на скользкую дорожку сравнения языков...


Тут их можно понять. Нужны же какие-то более или менее явные примеры и привязки. А то получится чистое упражнение в риторике. Но, естественно, я в голову профессорам не залезу, так что, остаётся лишь догадываться. Во всяком случае, для полемической статьи стиль они выбрали вполне подходящий.

Кстати, я тоже не совсем внимательно прочёл аннотацию к статье, ту, что мелким шрифтом в начале. Уместно процитировать полностью:

It is our view that Computer Science (CS) education is neglecting basic skills, in particular in the areas of programming and formal methods. We consider that the general adoption of Java as a first programming language is in part responsible for this decline. We examine briefly the set of programming skills that should be part of every software professional's repertoire.


Нам кажется, что образование в области CS пренебрегает основами, в особенности в области программирования и формальных методов. Мы предполагаем, что принятие Java в качестве первого языка программрования в некоторой степени отвечает за это пренебрежение. Мы кратко исследуем то, чем должен владеть любой профессиональный программист.


Иными словами, статья поднимают только часть проблемы, о чём авторы прямо и говорят. Замахнуться на более общие проблемы — боюсь, что пришлось бы копать в сторону общественного устройства. А это уже не такая простая задача, в короткую статью не уложишься. Они касаются некоторых современных buzzwords, вроде mission-critical, но не более того.

SH>Мне кажется можно было бы написать и прямо — во время обучения студенту нужно работать мозгом, даже не смотря на то, что на работе это ему потом почти не понадобится. В области ли математики или в области "вживания" в низкоуровневую архитектуру компьютера — не так важно. Но математика предпочтительнее, а ещё лучше — в обе стороны.


Вот-вот. Только ни в коем случае нельзя при студентах говорить вот этого: "...на работе это ему потом почти не понадобится". Да и вообще такого нельзя говорить, тем более преподавателям. Другое дело, что на работе какие-то области математики будут нужне не всегда, но тут уж не предугадаешь, когда и что понадобится: вчера — теория графов, завтра — булева алгебра, послезавтра теория множеств. Но это же не означает, что вчера можно было объявлять булеву алгебру вообще ненужной, а завтра так же можно поступить с теорий графов, правда? На то оно и образование, что даёт именно систематизированные знания, фундамент, который должен "сработать" именно тогда, когда потребуется. То есть математика, физика, логика, формальные методы, языки программирования, управленческие приёмы, электроника, по идее должны образовывать некую общую "ткань", называемую программированием. Только тогда можно будет говорить об инженере вообще и программисте в частности. И кроме того, такой специалист сможет уверенно и адекватно выбрать метод решения задачи, даже если у него нет подходящих библиотек под рукой.

А так... J2EE на 5+, зато про теорию графов только слышал и как оценить сложность алгоритма не знает и знать не хочет. Это что, программист, что ли? Хай идёт формочки дизайнить.
Я знаю только две бесконечные вещи — Вселенную и человеческую глупость, и я не совсем уверен насчёт Вселенной. (c) А. Эйнштейн
P.S.: Винодельческие провинции — это есть рулез!
Re[9]: Раннее знакомство с Java калечит судьбы программистов
От: Курилка Россия http://kirya.narod.ru/
Дата: 18.01.08 08:14
Оценка:
Здравствуйте, LaptevVV, Вы писали:

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


ГВ>>А так... J2EE на 5+, зато про теорию графов только слышал и как оценить сложность алгоритма не знает и знать не хочет. Это что, программист, что ли? Хай идёт формочки дизайнить.

LVV>О!!!!!! Как я это поддерживаю!
LVV>Вот на экзамене по системному программированию задаю вопрос: метод рекурсивного спуска какому алгоритму поиска на графе соответствует? Ответов — ноль!
LVV>От чего зависит эффективность рекурсивного спуска? Ответов — ноль!
LVV>Чуть-чуть по-другому повернули грань — и уже полный расстрел!

Кстати вот ещё маленькая заметка об этом же.
Фактически выращиваются бездумные переводчики, которые по заученным рецептам поступают, какая-то механизация человека выходит.
Re[5]: Раннее знакомство с Java калечит судьбы программистов
От: Геннадий Васильев Россия http://www.livejournal.com/users/gesha_x
Дата: 18.01.08 08:16
Оценка:
Здравствуйте, Mazay, Вы писали:

M>Ну стремятся к этому IT-менеджеры. А специалисты напротив хотят быть незаменимыми. Учитывая что прямыми "заказчиками" этих профессоров являются скорее специалисты, то вполне объяснимо, почему они считают это проблемой.


Ага, специалисты скинулись и статейку заказали. Остроумно.
Я знаю только две бесконечные вещи — Вселенную и человеческую глупость, и я не совсем уверен насчёт Вселенной. (c) А. Эйнштейн
P.S.: Винодельческие провинции — это есть рулез!
Re[9]: Раннее знакомство с Java калечит судьбы программистов
От: Курилка Россия http://kirya.narod.ru/
Дата: 18.01.08 08:18
Оценка:
Здравствуйте, LaptevVV, Вы писали:

LVV>Нет никаких реальных проектов. С 2009 года полный переход на бакалавров-магистров.

LVV>Предполагается, что магистры будут той самой научной элитой... Ага! СЧАЗЗЗЗЗЗ!!!!!
LVV>Математику-то и другие фундаментальные дисциплины они будут изучать-то по бакалаврскому стандарту и учебному плану! А это означает, что В НУЖНОЕ ВРЕМЯ развития мозгов не будет. И у магистрантов возникнут большие проблемы в написании магистерской диссертации. Или неизбежно произойдет снижение уровня требований к этим диссертациям.
LVV>Что и скажется потом — лет через 10 уже — на всем образовании и науке.

Где-то (у Кара-Мурзы чтоль) читал, что технических выпускников пара десятков тысяч выпустилось в прошлом (?) году, против где-то полумиллиона "гумманитариев".
Вот и выходит, что, глядишь, даж остатки нефти докачивать уже специалистов не будет. А пресловутые нанотехнологии будут развивать, наверное, нанороботы.
Re[9]: Раннее знакомство с Java калечит судьбы программистов
От: Геннадий Васильев Россия http://www.livejournal.com/users/gesha_x
Дата: 18.01.08 08:27
Оценка:
Здравствуйте, LaptevVV, Вы писали:

LVV>Предполагается, что магистры будут той самой научной элитой... Ага! СЧАЗЗЗЗЗЗ!!!!!

LVV>Математику-то и другие фундаментальные дисциплины они будут изучать-то по бакалаврскому стандарту и учебному плану!

Хм. Сие заставляет глубоко задуматься... А что тогда в магистратуре делают? Не поясните попдробнее? Я просто чуял подвох в "трёхступенчатом" образовании, но вот только сейчас, кажется, начинаю понимать.

LVV>А это означает, что В НУЖНОЕ ВРЕМЯ развития мозгов не будет. И у магистрантов возникнут большие проблемы в написании магистерской диссертации. Или неизбежно произойдет снижение уровня требований к этим диссертациям.

LVV>Что и скажется потом — лет через 10 уже — на всем образовании и науке.

Представляется весьма логичным следствием...
Я знаю только две бесконечные вещи — Вселенную и человеческую глупость, и я не совсем уверен насчёт Вселенной. (c) А. Эйнштейн
P.S.: Винодельческие провинции — это есть рулез!
Re[8]: Раннее знакомство с Java калечит судьбы программистов
От: kaa.python Ниоткуда РСДН профессионально мёртв и завален ватой.
Дата: 18.01.08 08:35
Оценка:
Здравствуйте, LaptevVV, Вы писали:

LVV>Эт все правильно. НО!... Одна единственная причина на корню губит все благие намерения: кто преподает?!


Лисп выучить проще С++, в крайнем случае мне так показалось.

LVV>Мало кто из преподов способен учить первачков на Лиспе или Схеме. Это ж самим нужно сначала научиться!


А в чем тут сложность? Да и знание еще одного языка это исключительно плюс для человека как профессионала.

LVV>Еще один скользкий момент может в наше время случиться при обучении студентов скале или лиспу. Всегда есть на курсе ряд активных студентов, которые постоянно возникают по поводу того, чему их учат. Скала или Лисп — это в нашей российской действительности фактически неупотребляемые вещи.


Но это вещи, которые дают очень нужную базу знаний. Кроме того, как мне кажется, для подобных студентов вполне вестким доводом будет присутстсвие того же Lisp в качестве первого языка в ряде западных ВУЗов.

LVV>Запросто может возникнуть ситуация, когда группа студентов пойдет в деканат и заявит, что учат их всякой фигне. И начнется разбор полетов на уровне декана. Оно нам надо?


не надо
Re[11]: Раннее знакомство с Java калечит судьбы программисто
От: Курилка Россия http://kirya.narod.ru/
Дата: 18.01.08 09:09
Оценка:
Здравствуйте, LaptevVV, Вы писали:

[cut]
LVV>Вот помрут старые профессора, а приедем мы туда же, куда все высшее образование на западе. Наши старые профессора, которые там преподавали, неоднократно жаловались — я тут приводил пост речи Арнольда. Это почти свежее мнение — 2002 года.

Ткни пальцем, где это приводил?
Re[11]: Раннее знакомство с Java калечит судьбы программисто
От: Геннадий Васильев Россия http://www.livejournal.com/users/gesha_x
Дата: 18.01.08 09:32
Оценка:
Здравствуйте, LaptevVV, Вы писали:

LVV>А отсюда — какие у нас магистры будут? Правильно, с уровнем подготовки техников.


Я что-то не так и не понял, чем программа магистратуры отличается от бакалавриата? Идея, что это будут "дополнительные модули", вроде как понятна. А что в них? Я как раз про это и спрашивал.
Я знаю только две бесконечные вещи — Вселенную и человеческую глупость, и я не совсем уверен насчёт Вселенной. (c) А. Эйнштейн
P.S.: Винодельческие провинции — это есть рулез!
Re[6]: Раннее знакомство с Java калечит судьбы программистов
От: SergH Россия  
Дата: 18.01.08 10:29
Оценка:
Здравствуйте, Геннадий Васильев, Вы писали:

M>>Ну стремятся к этому IT-менеджеры. А специалисты напротив хотят быть незаменимыми. Учитывая что прямыми "заказчиками" этих профессоров являются скорее специалисты, то вполне объяснимо, почему они считают это проблемой.


ГВ>Ага, специалисты скинулись и статейку заказали. Остроумно.


По сути так, но немного сложнее.
Взаимозаменяемость людей важна работодателю.
Это превращает программирования в обычную рабочую специальность. Как плотник или каменщик. Бывают, конечно, гениальные каменщики, бывают лучше или хуже, но в среднем они более менее легко заменяются. Очень удобно.
Но это снижает престиж профессии.
И ещё сильнее снижает престиж университетов — обучение в них не даёт выпускнику преимуществ.
А это сказывается на количестве поступающих, деньгах и т.п.

Ну и потом, если программиста, которого в американском университете учили 5 лет, заменяет индус, которого учили год, то что-то тут не так. То ли индусы настолько умнее, то ли учат чему-то не тому.

Кроме того, есть меньшая часть работодателей, которым не подходят такие специалисты.. Они бы и готовы платить, но почти некому. В результате _они_ не имеют взаимозаменяемости и им приходится платить своим программистам неадекватно много (хорошее теоретическое рассуждение, осталось попасть в такое место ).
Делай что должно, и будь что будет
Re: Раннее знакомство с Java калечит судьбы программистов
От: Курилка Россия http://kirya.narod.ru/
Дата: 18.01.08 11:43
Оценка:
Здравствуйте, fplab, Вы писали:

F>здесь


А вот ещё невесёлые результаты исследования "поколения Google", думаю связь не прямая, но имеется.
Re[7]: Раннее знакомство с Java калечит судьбы программистов
От: Геннадий Васильев Россия http://www.livejournal.com/users/gesha_x
Дата: 18.01.08 18:32
Оценка:
Здравствуйте, SergH, Вы писали:

M>>>Ну стремятся к этому IT-менеджеры. А специалисты напротив хотят быть незаменимыми. Учитывая что прямыми "заказчиками" этих профессоров являются скорее специалисты, то вполне объяснимо, почему они считают это проблемой.


ГВ>>Ага, специалисты скинулись и статейку заказали. Остроумно.


SH>По сути так, но немного сложнее.

SH>Взаимозаменяемость людей важна работодателю.

Ну... Это можно повторять как садо-мазо мантру. Иного применения я для подобного тезиса не вижу. Работодателю важен финансовый результат деятельности. "Взаимозаменяемость людей" — это такой миф современного галстукопузощёкого манагмента, который об управлении пару книжек прочитал и жутко трясётся, что его уличат в некомпетентности и турнут с тёплого места. Не слушай их, это вредно для психики.

SH>Это превращает программирования в обычную рабочую специальность. Как плотник или каменщик. Бывают, конечно, гениальные каменщики, бывают лучше или хуже, но в среднем они более менее легко заменяются. Очень удобно.


См. выше.

SH>Но это снижает престиж профессии.


Это никак не может снизить престиж профессии и отношение к профессии самой по себе. И уж тем паче не может изменить требований к набору профессиональных навыков.

SH>И ещё сильнее снижает престиж университетов — обучение в них не даёт выпускнику преимуществ.

SH>А это сказывается на количестве поступающих, деньгах и т.п.

Не ставь лошадь позади телеги, будь добр.

SH>Ну и потом, если программиста, которого в американском университете учили 5 лет, заменяет индус, которого учили год, то что-то тут не так. То ли индусы настолько умнее, то ли учат чему-то не тому.


Вот это уже по делу. Фокус в том, что американские студенты за пять лет не получают формального базиса, необходимого просто для хорошего программиста. Невозможно спорить с тем, что да, есть некоторые тривиальные задачи в программмировании, где кое-как обученный вчерашний таксист с успехом заменит специалиста с высшим образованием. Проблема в том, что в другие области, там, где нужен просто нормальный набор знаний, людей не сыскать (см. твои же слова чуть ниже). И вот это уже — беда образовательной системы, которая по сути начала готовить низкоквалифицированных псевдоспециалистов. От этого хуже становится всем — и работодателям, и специалистам. Не зависимо от "взаимозаменяемости" и прочих неумных слов.

SH>Кроме того, есть меньшая часть работодателей, которым не подходят такие специалисты.. Они бы и готовы платить, но почти некому. В результате _они_ не имеют взаимозаменяемости и им приходится платить своим программистам неадекватно много (хорошее теоретическое рассуждение, осталось попасть в такое место ).


Ничего подобного. Неадекватно много заплатить попросту невозможно. А люфт зарплат в 30-70% — это ещё не "неадекватно" много. Скажу больше, даже десятикратный разброс — это ещё не манна небесная задарма достающаяся.
Я знаю только две бесконечные вещи — Вселенную и человеческую глупость, и я не совсем уверен насчёт Вселенной. (c) А. Эйнштейн
P.S.: Винодельческие провинции — это есть рулез!
Re: Раннее знакомство с Java калечит судьбы программистов
От: Курилка Россия http://kirya.narod.ru/
Дата: 19.01.08 10:02
Оценка:
Здравствуйте, fplab, Вы писали:

F>здесь


А вот и ещё ссылка на слэшдоте по теме образования:
National Science Board is concerned about certain indicators in the science and engineering fields for the United States
Re[4]: Раннее знакомство с Java калечит судьбы программистов
От: oziro Нигерия  
Дата: 20.01.08 11:39
Оценка:
Здравствуйте, SergH, Вы писали:

SH>У меня, правда, Фаронова не было, было два других учебника, но фамилий авторов я не помню. Зато Фаронов был у многих моих одноклассников.


У меня был Культин "что-то там про Pascal". Фаронова тоже не было
Re[10]: Раннее знакомство с Java калечит судьбы программисто
От: Аноним  
Дата: 21.01.08 11:32
Оценка:
Здравствуйте, Геннадий Васильев, Вы писали:

ГВ>Хм. Сие заставляет глубоко задуматься... А что тогда в магистратуре делают? Не поясните попдробнее? Я просто чуял подвох в "трёхступенчатом" образовании, но вот только сейчас, кажется, начинаю понимать.


Подвох то простой — в снижении не только среднего уровня, но и доступного потолка. А то развелось, панимаишь, шибко умных, ВВП и едорасов критикуют, в Вертикали сомневаются, попам не молятся. Кому это надо?
Re[8]: Раннее знакомство с Java калечит судьбы программистов
От: Курилка Россия http://kirya.narod.ru/
Дата: 21.01.08 11:37
Оценка:
Здравствуйте, Аноним, Вы писали:

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


LVV>>С образованием сейчас вообще труба — перевод на западную модель с удовлетворением исключительно практических нужд.


А> Самое смешное, что т.н. "западная модель" вовсе не в этом заключается. Но у нас как всегда всё по-русски понимают, то есть, через ж.


Есть разные "западные модели", не стоит спорить по поводу терминологии.
Правы оба по-своему.

LVV>>А с математикой у половины курса — полный завал!


А> Я правильно догадываюсь, что это половину все равно никто не отчислит?


А> Вот в этом и корень проблемы. Быдло понимает только кнут. От пряников оно уже рыло воротит, зажралось.


Очень примитивная модель из кнута и пряника, извиняюсь, но вот уж очень "по-быдловски".
Re[9]: Раннее знакомство с Java калечит судьбы программистов
От: Аноним  
Дата: 21.01.08 11:41
Оценка:
Здравствуйте, Курилка, Вы писали:

К>Есть разные "западные модели", не стоит спорить по поводу терминологии.


Такой модели, которую пытаются строить у нас, нет нигде.

А>> Я правильно догадываюсь, что это половину все равно никто не отчислит?


А>> Вот в этом и корень проблемы. Быдло понимает только кнут. От пряников оно уже рыло воротит, зажралось.


К>Очень примитивная модель из кнута и пряника, извиняюсь, но вот уж очень "по-быдловски".


А именно примитивные модели в антропологии и работают лучше всего. Человек ведь на самом деле примитивен.

В чем вы конкретно сомневаетесь? Что эти конкретные студенты — быдло? Странно, тут вроде простора для сомнений не остается никак. Что кнут из остальных дурь не вышибет? Практика прошедших столетий показывает — вышибет, и еще как. Что на пряник народ больше не ведется? Опять же, банальная статистика, никакого мошенничества и обобщений. То есть, все знают, что высокообразованный, грамотный специалист имеет потенциал сильно выше среднего плебея, но никому не хочется идти по слишком уж трдному, напряжному пути. Предпочитают получить корочку и просиживать задницу на непыльной, пусть и не очень доходной плебейской работке.
Re[12]: Раннее знакомство с Java калечит судьбы программисто
От: Курилка Россия http://kirya.narod.ru/
Дата: 21.01.08 12:13
Оценка:
Здравствуйте, Аноним, Вы писали:

А> Быдловость она не в неграмотности заключается, а в патологическом нежелании становиться грамотным. Быдло — это такой скот. Самодовольный, жвачный, готовый приложить титанические усилия ради того, чтобы только не напрягать ум. И такие студенты, про которых пишет уважаемый тов. Лаптев, как раз под такую классификацию попадают стопроцентно. Уважать их не за что, вообще. Терпеть их нет смысла. Надо только делать всё возможное, чтобы оградить потенциально хороших и умных детей от их тлетворного влияния.


Про проблему согласен, про расставление ярлыков и решение за других людей, что они могут и чего хотят — нет.
Если уж расставляем термины, то это просто напросто неприкрытый нацизм.
Как любая другая узколобая доктрина он вреден для развития, т.к. загоняет человека в рамки этой самой доктрины.
На высшую инстанцию не претендую, это лишь моя сугубо частная точка зрения
Re[14]: Раннее знакомство с Java калечит судьбы программисто
От: Курилка Россия http://kirya.narod.ru/
Дата: 21.01.08 12:49
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Здравствуйте, Курилка, Вы писали:


К>>Про проблему согласен, про расставление ярлыков и решение за других людей, что они могут и чего хотят — нет.

К>>Если уж расставляем термины, то это просто напросто неприкрытый нацизм.

А> Вот как раз "нацизм" — это ярлык. Я про нации ничего не говорил.


А> Я людей разделяю по очень простому критерию: стремятся развиваться — свои, не стремятся — чужие, быдло. И какого хрена эти чужие приперлись в заведение, предназначенное исключительно для этого самого развития, для своих? За корочкой они приперлись. Им с этой корочкой попу свою пристроить проще будет, чтоб дальше сподручней было в полное растение превращаться. Я должен их уважать? Нет. Имею право их презирать и за людей не считать? Да, имею. Поскольку они не просто животные. Они еще и враги. Они своим присутствием разваливают ту самую систему, которая призвана помогать людям развиваться, человеками становиться. Должен я уважать тараканов на кухне? Нет, я должен сделать всё для того, чтоб их не стало. Так и с этими, к которым вы относитесь с непонятным мне гуманизмом.


Да, с "нацизмом" я поспешил, пусть и чувствовал, что немного частный вариант.
Ближе будет "шовинизм".

К>>Как любая другая узколобая доктрина он вреден для развития, т.к. загоняет человека в рамки этой самой доктрины.


А> Я был бы несказанно счастлив, если бы получилось загнать всех людей в рамки этой доктрины. Если бы все мыслили так же, если бы все считали за полное чмо каждого, кто не стремится развиваться, кто мечтает о растительном существовании, кто получает образование ради корочки — то мир однозначно стал бы только лучше. Не вижу никаких минусов в алиенации быдла.


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


Во-во, прям по учебнику, есть "свои", есть "чужие". Очень ограниченная точка зрения, т.к. она исключает возможность перехода из одной группы в другую (как туда так и обратно).
Т.е. реально получаем, что по твоим словам быдло есть быдло и "ничего не попишешь". Если смотреть более скурпулёзно, то это получается признание неспособности влиять на ситуацию и добровольное(!) самоограничение, что по-моему звучит в словах "теперь нет больше той школы".
В данном случае получается, что развитие ограничивается сверху, так же как у пресловутого "быдла".
Причём почему-то градация идёт не по праву рождения (а может луче с зачатия?) — это уже внушает надежду. Дак когда по-вашему на человеке можно ставить позорный крест?
Лично я предпочту, чтобы у него всегда был шанс. Не зря же в программы добавляют "защиту от дурака", подсказки и т.п.

Всё это лишь моя личная точка зрения, буду рад, если хоть что-то в ней будет вам полезно.
Re[16]: Раннее знакомство с Java калечит судьбы программисто
От: Курилка Россия http://kirya.narod.ru/
Дата: 21.01.08 13:28
Оценка:
Здравствуйте, Аноним, Вы писали:

А> Влиять на ситуацию можно только на глобальном уровне. Пока еще у "своих" есть несколько мест, куда можно пойти за знаниями и за развитием. Чего нет, так это давления на чужих — чтоб они своими становились. И, да, лично я тут сделать ничего не могу. Я не министр образования. Даже не зам. министра.


Выделенное спорно как минимум. Ещё одно добровольное самоограничение.
В общем разногласие ясно, больше продолжать не вижу смысла.
Re[18]: Раннее знакомство с Java калечит судьбы программисто
От: Курилка Россия http://kirya.narod.ru/
Дата: 21.01.08 14:04
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Здравствуйте, Курилка, Вы писали:


К>>Выделенное спорно как минимум. Ещё одно добровольное самоограничение.

К>>В общем разногласие ясно, больше продолжать не вижу смысла.

А> А зря. Я готов выслушать конструктивные предложения и план действий по дебыдлизации общества.


А> Помогать тем, кто ищет знаний? И так делаю, но это не решение. Они и так уже "свои". А вот "чужих" пнуть можно только сменив глобально приоритеты всего общества. Только осуждение. Но никак не молчаливое одобрение по типу вашего, что мол "ну что же, вы тоже люди, может вам так легче, кто я такой, чтоб вас осуждать", и тому подобные интеллигентские сопли.


А> Вы пробовали взять одно, отдельное быдло, и очеловечить его? Я вот пробовал, неоднократно. Всегда реакция одна — "Чем это я хуже других? Все так живут, зачем мне одному корячиться?". Вот если будет всё общество считать, что каждый "так живущий" — презренное ничтожество, то под таким давлением они и очеловечатся. Пропадет у них возможность друг на друга кивать.


Ну как первый вариант на сходку, начинание даркуса, если не в курсе.
Компилятор вменяемого языка для TFP вы ведь наврядли делать согласитесь? Или учебник по ТК "для чайников"?
Т.е. вариант практически один, если просто: "просвещение". Как бы это не выглядело пошло и т.п.
Без работы над сознанием его не изменишь.
Всё просто, но вместе с тем и сложно...

Ну и варианты мои вполне возможно вам могут не подойти по каким-либо личным соображениям и т.п., но с направлением, думаю, итак всё достаточно ясно.
И спасибо за ваши мысли.
Re[19]: Раннее знакомство с Java калечит судьбы программисто
От: Аноним  
Дата: 21.01.08 14:19
Оценка:
Здравствуйте, Курилка, Вы писали:

К>Ну как первый вариант на сходку, начинание даркуса, если не в курсе.


Ну, во первых, это всё для уже и так заинтересованных в обучении. Во вторых, меня тошнит от лозунгов типа "россия для русских", с такими людьми я не желаю иметь ничего общего. Интеллектуалов и так слишком мало, чтобы отталкивать их по национальному признаку.

К>Компилятор вменяемого языка для TFP вы ведь наврядли делать согласитесь? Или учебник по ТК "для чайников"?

К>Т.е. вариант практически один, если просто: "просвещение". Как бы это не выглядело пошло и т.п.

Этот вариант срабатывал только тогда, когда перещелкивало что-то в массовом сознании. Когда образование становилось предметом престижа. Это было во времена Возрождения в Европе, это было у нас в первые годы индустриализации, это было в середине-конце 60х.

К>Без работы над сознанием его не изменишь.


Ну так. А для этого нужны или скоординированные действия сотен тысяч человек, или непредсказуемый скачок моды.

К>Ну и варианты мои вполне возможно вам могут не подойти по каким-либо личным соображениям и т.п., но с направлением, думаю, итак всё достаточно ясно.


В таком то направлении я и так работаю — по мере сил помогаю тем, кто ищет знаний. Задача ведь по другому стоит — как убедить искать знания тех, кто этого делать не желает, тех, кто мечтает о корочке, должности манагера среднего звена, жене-блондинке, тойоте и трешке в центре Москвы.

К>И спасибо за ваши мысли.


Вам так же. Я убедился еще раз в том, что не умею простую мысль донести простым способом до окружающих, на половине пути уже в фашисты записывают... Буду работать над аргументацией. А то как же еще заставить весь народ мечтать о звездах?

P.S. Вы читали Захара Оскотского? Рекомендую. Он правильно мыслит.
Re[19]: Раннее знакомство с Java калечит судьбы программисто
От: Курилка Россия http://kirya.narod.ru/
Дата: 21.01.08 14:21
Оценка:
Здравствуйте, SergH, Вы писали:

SH>Положительная мотивирование рулит. Но направленное не на достаточно сомнительную востребованность и заработную плату образованного человека (профессорами на помойках сейчас никого не удивишь). Что-то больше нужно. И, повторюсь, не совсем в ту сторону. Образование — важно, но не критично.


Что тут под образованием имеется в виду? Государственная система этого образования? Если так, то согласен.
Если так, то она должна давать базис, т.е. учить людей учиться САМИМ.
Это как старая байка про "дать человеку рыбу, или научить её ловить".
С другой стороны жизнь человека не ограничивается школой/институтом, а то получатся: отучился и пошёл водку пить, да девок мацать.
Должно быть понимание в самом обществе.
Фромм, Франкл, Маслоу и прочие уже давненько об этом писали. Но почти без толку.
А на востоке имхо есть уже очень древние наработки в этом направлении
Хотя если подумать, то даже христианство их содержит, правда за заученными фразами редко кто видит их смысл.
(Не стоит воспринимать предыдущие предложения, как ратование за религию, просто подчёркиваю, что полезное есть и в них тоже, как и вредное)
Re[19]: Раннее знакомство с Java калечит судьбы программисто
От: Аноним  
Дата: 21.01.08 14:26
Оценка:
Здравствуйте, SergH, Вы писали:

SH>Во-первых, твоё определение быдла меня не устраивает. Когда-то я, может, под ним бы и подписался... Но сейчас мне кажется, что мозги и образование дело сугубо вторичное.


Образование — инструмент тренировки мозгов. А вот мозги — это важно. Не вижу, чем бы мне мог быть симпатичен дурак.

SH> Можно быть образованным быдлом, можно необразованным человеком. И не в тяге к знаниям дело. И термин "быдло" для меня очень размыт, поэтому я его не использую.


Я бы тоже не использовал, да ничего лучшего пока не нашел.

SH>+1. Глобальные приоритеты надо менять. Но делается это именно снизу, изнутри. Изменение глобальных приоритетов "сверху" работает плохо.


Изнутри, но при жестком противодействии сверху — не плохо, а вообще нереально.

SH>+\-1


SH>Положительная мотивирование рулит.


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

SH> Но направленное не на достаточно сомнительную востребованность и заработную плату образованного человека (профессорами на помойках сейчас никого не удивишь). Что-то больше нужно. И, повторюсь, не совсем в ту сторону.


Это тоже важный фактор. Люди не замечают прямой корреляции между умом и уровнем жизни. Сейчас герой народных быдломасс — манагер среднего звена. Существо как правило тупое и ущербное, но обладающее среднеприемлимым уровнем жизни.

SH> Образование — важно, но не критично.


Важна системность мышления. А она дается образованием. Не особо важно, в каком направлении, по мне, так умные люди после определенного уровня взаимозаменяемы, высших уровней развития сознания можно добиться и филологией, и физикой, и даже (извините, если кого стошнит) программированием.
Re[20]: Раннее знакомство с Java калечит судьбы программисто
От: Курилка Россия http://kirya.narod.ru/
Дата: 21.01.08 14:26
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Здравствуйте, Курилка, Вы писали:


А> Этот вариант срабатывал только тогда, когда перещелкивало что-то в массовом сознании. Когда образование становилось предметом престижа. Это было во времена Возрождения в Европе, это было у нас в первые годы индустриализации, это было в середине-конце 60х.


К>>Без работы над сознанием его не изменишь.


А> Ну так. А для этого нужны или скоординированные действия сотен тысяч человек, или непредсказуемый скачок моды.


Такой скачок вполне можно сделать.
Варианты "слабо" не аргумент.
Все сильные мыслители создавали вокруг себя некоторый "скачок".
С появлением инета и большей теснотой взаимоотношений людей шансов добиться заметного эффекта больше.
Тем более умные люди есть.
(про даркуса у меня примерно такие же сожаления...)

А> Вам так же. Я убедился еще раз в том, что не умею простую мысль донести простым способом до окружающих, на половине пути уже в фашисты записывают... Буду работать над аргументацией. А то как же еще заставить весь народ мечтать о звездах?


Ну работа над ошибками — самый базис развития
Так что будем работать над ними.

А>P.S. Вы читали Захара Оскотского? Рекомендую. Он правильно мыслит.

Не слышал даже, линка нет под рукой?
Re[20]: Раннее знакомство с Java калечит судьбы программисто
От: Курилка Россия http://kirya.narod.ru/
Дата: 21.01.08 14:35
Оценка:
Здравствуйте, Аноним, Вы писали:

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


SH>>Во-первых, твоё определение быдла меня не устраивает. Когда-то я, может, под ним бы и подписался... Но сейчас мне кажется, что мозги и образование дело сугубо вторичное.


А> Образование — инструмент тренировки мозгов. А вот мозги — это важно. Не вижу, чем бы мне мог быть симпатичен дурак.


[cut]

SH>> Образование — важно, но не критично.


А> Важна системность мышления. А она дается образованием. Не особо важно, в каком направлении, по мне, так умные люди после определенного уровня взаимозаменяемы, высших уровней развития сознания можно добиться и филологией, и физикой, и даже (извините, если кого стошнит) программированием.


Вижу нестыковку в такой позиции: получается, что мышление одномерно. В идеале это так, но на практике встречаются варианты наличия у людей "полюсов пристрастий" (термин только что придумал), когда они в основном специализируются на некоторых базовых направлениях, поэтому может быть в ТК я вас понимать буду больше, а в чём-то другом — наоборот.
Абстрактное (пусть даже системное) знание на мой взгляд является плохо определяемым явлением.
Поэтому скажем, я могу просто не понимать того, что человек в своей области "гений" и обзывать его "дураком".
Хотя это можно тоже извратить до дури — до "альтернативно одарённых" людей и т.д.
Пока вижу лишь в качестве мерила развитости — полезность развитию общества (во всех его проявлениях), как её определить затрудняюсь.
Re[20]: Раннее знакомство с Java калечит судьбы программисто
От: SergH Россия  
Дата: 21.01.08 14:35
Оценка:
Здравствуйте, Курилка, Вы писали:

К>Что тут под образованием имеется в виду? Государственная система этого образования?


Нет, шире.
Я считаю, что ум/мозги/интеллект/знания/образование/etc с точки зрения человеческих качеств (к которым относится и "быдловость") вторичны.

Если брать поведение человека как производную от его целей, то ум/мозги/.. тут являются всего лишь инструментом поиска оптимального маршрута и средством движения по маршруту. Глупый будет действовать не очень удачно, умный — удачнее. Глупый преступник попадётся, умный — нет. Но они оба преступники, и это первично.

Цели важнее скорости автомобиля.

Клёво, когда "быть умным" одна из целей — это хорошая цель, поддерживаю. Но этого абсолютно недостаточно! И, главное, быть умным — далеко не главное.
Делай что должно, и будь что будет
Re[21]: Раннее знакомство с Java калечит судьбы программисто
От: Курилка Россия http://kirya.narod.ru/
Дата: 21.01.08 14:44
Оценка:
Здравствуйте, SergH, Вы писали:

SH>Здравствуйте, Курилка, Вы писали:


К>>Что тут под образованием имеется в виду? Государственная система этого образования?


SH>Нет, шире.

SH>Я считаю, что ум/мозги/интеллект/знания/образование/etc с точки зрения человеческих качеств (к которым относится и "быдловость") вторичны.

SH>Если брать поведение человека как производную от его целей, то ум/мозги/.. тут являются всего лишь инструментом поиска оптимального маршрута и средством движения по маршруту. Глупый будет действовать не очень удачно, умный — удачнее. Глупый преступник попадётся, умный — нет. Но они оба преступники, и это первично.


SH>Цели важнее скорости автомобиля.


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


Ммм, интересно, только вот непона идея — что есть кроме разума? Чувства, инстинкты? Что является источником целеполагания?
В общем больше вопросов чем ответов, рождает такая идея
Но главное же задать вопрос — т.е. обозначить цель
Re[21]: Раннее знакомство с Java калечит судьбы программисто
От: Аноним  
Дата: 21.01.08 14:54
Оценка:
Здравствуйте, SergH, Вы писали:

SH>Если брать поведение человека как производную от его целей, то ум/мозги/.. тут являются всего лишь инструментом поиска оптимального маршрута и средством движения по маршруту. Глупый будет действовать не очень удачно, умный — удачнее. Глупый преступник попадётся, умный — нет. Но они оба преступники, и это первично.


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

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


Не умный не может творить. Не умный как правило бесполезен. Ум отличает нас от животных.
Re[21]: Раннее знакомство с Java калечит судьбы программисто
От: Аноним  
Дата: 21.01.08 14:59
Оценка:
Здравствуйте, Курилка, Вы писали:

К>Вижу нестыковку в такой позиции: получается, что мышление одномерно. В идеале это так, но на практике встречаются варианты наличия у людей "полюсов пристрастий" (термин только что придумал), когда они в основном специализируются на некоторых базовых направлениях, поэтому может быть в ТК я вас понимать буду больше, а в чём-то другом — наоборот.


Это совершенно не важно. При достижении определенного уровня различия между дисциплинами стираются.

К>Абстрактное (пусть даже системное) знание на мой взгляд является плохо определяемым явлением.


Я не говорил "знание". Я сказал "мышление". Системное мышление в филологии не отличается от системного мышления в физике. И применимо оно не абстрактно, а вполне конкретно, к любой абсолютно области человеческой деятельности.

К>Поэтому скажем, я могу просто не понимать того, что человек в своей области "гений" и обзывать его "дураком".


Так не бывает. Если человек дурак, то он таки дурак.

К>Хотя это можно тоже извратить до дури — до "альтернативно одарённых" людей и т.д.

К>Пока вижу лишь в качестве мерила развитости — полезность развитию общества (во всех его проявлениях), как её определить затрудняюсь.

Способность к творчеству, к конструктиву. А это — прямая производная от интеллекта в первую очередь.
Re[22]: Раннее знакомство с Java калечит судьбы программисто
От: Курилка Россия http://kirya.narod.ru/
Дата: 21.01.08 15:03
Оценка:
Здравствуйте, Аноним, Вы писали:

А> Не умный не может творить. Не умный как правило бесполезен. Ум отличает нас от животных.


Я тут подумал, а разве не может быть именно "альтернативноодарённых", только не в анекдотическом понимании этого слова, а именно в таких областях, которые пока слабодоступны современному человеку. Как базовую идею для гипотезы — способности в музыке.
Хотя, как правило очень острые "полюса" в одарённости встречаются редко.
Ну и может быть есть некие способности, которые ещё недоступны нашему пониманию и мы до них "не доросли", т.е. являемся быдлом тоже в свою очередь
Как вариант — инопланетный разум.
В общем для фильма "люди Х" есть основания, правда не в таком примитивном варианте, как изобразили на экране.
Re[22]: Раннее знакомство с Java калечит судьбы программисто
От: Курилка Россия http://kirya.narod.ru/
Дата: 21.01.08 15:11
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Здравствуйте, Курилка, Вы писали:


К>>Вижу нестыковку в такой позиции: получается, что мышление одномерно. В идеале это так, но на практике встречаются варианты наличия у людей "полюсов пристрастий" (термин только что придумал), когда они в основном специализируются на некоторых базовых направлениях, поэтому может быть в ТК я вас понимать буду больше, а в чём-то другом — наоборот.


А> Это совершенно не важно. При достижении определенного уровня различия между дисциплинами стираются.


К>>Абстрактное (пусть даже системное) знание на мой взгляд является плохо определяемым явлением.


А> Я не говорил "знание". Я сказал "мышление". Системное мышление в филологии не отличается от системного мышления в физике. И применимо оно не абстрактно, а вполне конкретно, к любой абсолютно области человеческой деятельности.


Определение и методы замера, иначе нет термина

К>>Поэтому скажем, я могу просто не понимать того, что человек в своей области "гений" и обзывать его "дураком".


А> Так не бывает. Если человек дурак, то он таки дурак.


Слишком категорично, так что не верю
Плюс фактической базы мало, так что досужие домыслы, поэтому предлагаю таки закругляться, да и домой пора
Re[22]: Раннее знакомство с Java калечит судьбы программисто
От: SergH Россия  
Дата: 21.01.08 15:13
Оценка:
Здравствуйте, Аноним, Вы писали:

А> Я различаю умных и интеллектуалов. Умный может быть и быдлом по своей системе ценностей, и просто преступником (хоть и существенно реже такое встречается, чем глупые преступники).


Во-первых, умные и так-то встречаются реже. А если они ещё и преступники, то реже попадаются.

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


Я уже вижу творческих учёных-фанатиков, ставящих эксперименты над людьми. Конечно, над людьми, которые по какой-то причине признаны неспособными творить. По расовому, или по какому-то иному признаку (генетика, допустим, двинулась вперёд и нашла ген творчества).

Только не надо говорить, что я всё преувеличиваю. Во-первых, такое было. Во-вторых, это что-то типа контрпримера в математике.

А> Не умный не может творить.


Имхо, ум и творчество перпендикулярны.

А> Не умный как правило бесполезен.


Зачёт
"бесполезен" для кого? От тебя вот — какая польза? И кому? А то, может кому-то не тому и какая-то не такая

А> Ум отличает нас от животных.


Возможно. Но, как минимум, не всегда в лучшую сторону.
Ум это рычаг, увеличивающий эффект действия. Куда ты его приложишь — определяется чем-то другим.

---

Вообще, у нас с тобой много разногласий по базовым вопросом. Про творчество, про животных, про пользу... Я не достаточно компетентен, чтобы аргументировано спорить, поэтому не особо заостряю.
Делай что должно, и будь что будет
Re[20]: Раннее знакомство с Java калечит судьбы программисто
От: LaptevVV Россия  
Дата: 21.01.08 15:24
Оценка:
Здравствуйте, Аноним, Вы писали:


А> ...как же еще заставить весь народ мечтать о звездах?

Заставить — нельзя... К несчастью — биология и эволюция рулят больше, чем все остальное...
Христос вон не заставлял, а только объяснял и хотел, чтоб народ лучше стал... САМ... Без заставления...
И то его распяли...

А>P.S. Вы читали Захара Оскотского? Рекомендую. Он правильно мыслит.

Спасибо за инфу — почитаю...
Хочешь быть счастливым — будь им!
Без булдырабыз!!!
Re[20]: Раннее знакомство с Java калечит судьбы программисто
От: LaptevVV Россия  
Дата: 21.01.08 15:39
Оценка:
Здравствуйте, Курилка, Вы писали:

К>Что тут под образованием имеется в виду? Государственная система этого образования? Если так, то согласен.

К>Если так, то она должна давать базис, т.е. учить людей учиться САМИМ.
К>Это как старая байка про "дать человеку рыбу, или научить её ловить".
Свежайший пример на эту тему.
Сдает студиоз мне тему — наследование от абстрактного класса.
Типа есть класс "Пара чисел" с абстрактными функциями сложения, вычитания и т.д. Наследник типа комплексное число. Требуется реализовать обычный минимальный интерфейс комплексного числа — арифметику.
И вот студиоз в открытом интерфейсе пишет:
complex operator+(Pair &t)

Ну, то, что правый неизменяемый аргумент — по ссылке — это я не прощаю, но суть не в этом. Он написал аргументом базовый абстрактный класс. Вроде про принцип подстановки сечет. Ага, счазззз!!!!!
Я говорю — меня не устраивает упоминание базового класса в открытом интерфейсе. Спрячь, чтоб клиент, о базовом классе не подозревал — принцип инкапсуляции рулит.
Он мне отвечает, что не знает, как это сделать ибо в книжке Дейтела НЕТ ПРИМЕРОВ таких.

Это студент-программист 2 курса. Он не представляет, как это: УЧИТЬСЯ, НЕ СПИСЫВАЯ ПРИМЕРЫ. Примеров нет — все застрелиться и не жить.

Вот и попробуй такого научить рыбу ловить. Он предпочитает готовую.
И это еще приличный студент, который что-то делает, пытается найти ответ на вопрос.

Но ничего, я их заставлю разные книжки читать!
На момент начала сессии в группе было всего два зачета по ООП.
Притом я не сильно зверствовал — три лабы всего — до абстрактных классов сдать надо было. Но накипело, блин!
По философии у них автоматы, а по ООП — хвосты! Это у программистов-то...

В общем, уровень студиозов существенно снизился за последние 4-5 лет.
Хочешь быть счастливым — будь им!
Без булдырабыз!!!
Re[22]: Раннее знакомство с Java калечит судьбы программисто
От: SergH Россия  
Дата: 21.01.08 15:57
Оценка:
Здравствуйте, Курилка, Вы писали:

К>Ммм, интересно, только вот непона идея — что есть кроме разума? Чувства, инстинкты? Что является источником целеполагания?


Вообще, конечно, х.з. Я над такими абстрактными вопросами не задумывался — как-то на практике это не сильно нужно. Хотя ясность бы помогла, но, боюсь, компетентность недостаточна. До вершин системного мышления мне ещё далеко, да и с фактическим материалом плохо.

Тем не менее, предположу. Ближе всего — чувства, скорее всего. Хотя на них при некотором желании можно влиять сознательно... Усиливая другие чувства, выбирая из двух. Принцип "не хочется, но хочется" работает, например, на тренировках — тяжело и всё болит, но продолжаешь и продолжаешь.

Система сложная, всё ради нас

Но, имхо, интеллект принципиально не умеет генерировать цели. Это в него не заложено. Обычная числодробилка, как компутер. Цель он получает извне, как исходные данные.
Но как внятно обозначить то, что у нас в голове есть, и что _не_интеллект_, я не знаю.
Делай что должно, и будь что будет
Re[21]: Раннее знакомство с Java калечит судьбы программисто
От: Курилка Россия http://kirya.narod.ru/
Дата: 21.01.08 16:55
Оценка:
Здравствуйте, LaptevVV, Вы писали:

[cut]
LVV>По философии у них автоматы, а по ООП — хвосты! Это у программистов-то...

LVV>В общем, уровень студиозов существенно снизился за последние 4-5 лет.


В общем, как-то вот все эти примеры практически всегда сводятся к одному: человек не может делать обобщения, т.е. абстрагировать не может.
А вот как этому научить — большой вопрос.
Думаю, что для разных людей разные подходы.
Re[21]: Раннее знакомство с Java калечит судьбы программисто
От: Курилка Россия http://kirya.narod.ru/
Дата: 22.01.08 04:34
Оценка:
Здравствуйте, SergH, Вы писали:

SH>Системное мышление — умение увидеть ситуацию в целом, саму по себе и в связи с окружением? И сделать выводы? Да, наверное, после некоторого уровня такого можно достичь и образованием. Особенно классно, если эта способность распространяется на все области, а не только на область научных интересов. Но вообще-то это всю дорогу называли мудростью и это прерогатива вовсе не учёных. Потому что самое сложное тут — именно увидеть всё в целом, а для этого нужно отстраниться, не ставить субъективные акценты, отрешиться немного от ситуации. Учёный с боольшим трудом может достигнуть этого полным перебором вариантов, который исключает субъективность. Но "по жизни" такой возможности нету. Да и отрешиться от жизненных ситуаций сложнее, чем от науки. И решать надо быстрее.. В общем, имхо, не при чём тут образование.


Собственно ничто не ново:

В одном мгновеньи видеть вечность
Огромный мир в зерне песка,
В единой горсти – бесконечность,
И небо – в чашечке цветка.
У. Блейк (+ С.Я. Маршак )


Хотя, может быть он тоже ещё не достаточно далеко брал, ведь обобщение между приведёнными парами само собой напрашивается, или это он специально?
Re[8]: Раннее знакомство с Java калечит судьбы программистов
От: Ka3a4oK  
Дата: 22.01.08 18:54
Оценка:
LVV>Запросто может возникнуть ситуация, когда группа студентов пойдет в деканат и заявит, что учат их всякой фигне. И начнется разбор полетов на уровне декана. Оно нам надо?
LVV>С== — это по-любому в струе, тут ни один студент не сможет заявить, что он типа не сдал, потому как учат всякой фигне...
LVV>Вот такая нынче демократия...

Нормальный декан в нормальном ВУЗе посоветует им засунуть свое недовольство в промежность.
... << RSDN@Home 1.1.4 stable rev. 510>>
Re[10]: Раннее знакомство с Java калечит судьбы программисто
От: Ka3a4oK  
Дата: 22.01.08 22:42
Оценка:
Это я образно выразился.
... << RSDN@Home 1.1.4 stable rev. 510>>
Re[11]: Раннее знакомство с Java калечит судьбы программисто
От: nlv  
Дата: 23.01.08 07:23
Оценка:
Здравствуйте, Аноним, Вы писали:

> попам не молятся.


Ув. Аноним, может не будем разжигать религиозную рознь,
только одно замечание, чтобы у вас в голове не конфликтовали между собой вера и наука.
Поищите информацию на эту тему (отношение веры и науки) в хотя бы интернете,
Вы ведь хотите быть выше среднего уровня, вот и повысьте свой уровень
(пара направлений, навскидку:
1. каково было отношение к вере Д.М.Менделеева?
2. кем была Варвара Васильевна Черная, создательница скафандра для первого космонавта?


С остальным согласен, да вот только вопрос "кому молятся эти "построители вертикали"?" может
претендовать на третье место в вышеприведенном списке вопросов.
Re[12]: Раннее знакомство с Java калечит судьбы программисто
От: Курилка Россия http://kirya.narod.ru/
Дата: 23.01.08 07:27
Оценка:
Здравствуйте, nlv, Вы писали:

nlv>Здравствуйте, Аноним, Вы писали:


>> попам не молятся.


nlv>Ув. Аноним, может не будем разжигать религиозную рознь,

nlv>только одно замечание, чтобы у вас в голове не конфликтовали между собой вера и наука.
nlv>Поищите информацию на эту тему (отношение веры и науки) в хотя бы интернете,
nlv>Вы ведь хотите быть выше среднего уровня, вот и повысьте свой уровень
nlv>(пара направлений, навскидку:
nlv> 1. каково было отношение к вере Д.М.Менделеева?
nlv> 2. кем была Варвара Васильевна Черная, создательница скафандра для первого космонавта?


nlv>С остальным согласен, да вот только вопрос "кому молятся эти "построители вертикали"?" может

nlv>претендовать на третье место в вышеприведенном списке вопросов.

Только на самом деле конкретный номер совершенно не важен, т.к. вопросы изоморфны друг другу, но "для того чтобы понять изоморфизм надо понять изоморфизм"
P.S. Не знаю, лечит ли мой диагноз современная медицина.
Re[9]: Раннее знакомство с Java калечит судьбы программистов
От: LaptevVV Россия  
Дата: 23.01.08 08:59
Оценка:
Здравствуйте, Ka3a4oK, Вы писали:

LVV>>Запросто может возникнуть ситуация, когда группа студентов пойдет в деканат и заявит, что учат их всякой фигне. И начнется разбор полетов на уровне декана. Оно нам надо?

LVV>>С== — это по-любому в струе, тут ни один студент не сможет заявить, что он типа не сдал, потому как учат всякой фигне...
LVV>>Вот такая нынче демократия...
KK>Нормальный декан в нормальном ВУЗе посоветует им засунуть свое недовольство в промежность.
Немного грубовато, но суть правильная.
Тем не менее, я ж не с потолка написал такую возможность — были преценденты. Поэтому тут палка о двух концах.
Хочешь быть счастливым — будь им!
Без булдырабыз!!!
Re[9]: Раннее знакомство с Java калечит судьбы программистов
От: LaptevVV Россия  
Дата: 23.01.08 09:13
Оценка:
Здравствуйте, Аноним, Вы писали:

А> Гну не советую. Он далек от стандарта, он, по сути, живет и развивается только и исключительно ради единственного приложения — Maxima. Благо, майнтейнер был один, светлая ему память. Для коммерческого применения сейчас лучше всех подходит SBCL.

А> Для обучения вполне неплох даже простенький clisp. Да и не только для обучения, он и на практике применяется знатно. Даже в космос слетал. Но лучше все же не Common Lisp давать, а Схему. Тут уж и методического материала полно, даже на русском языке найдется.
Спасибо за комментарий, учту.
LVV>>Эт все правильно. НО!... Одна единственная причина на корню губит все благие намерения: кто преподает?!
А> О! Вот тут и зарыта собака. Начиная с самой школы. Потом просто стыдно удивляться низкому уровню нынешнего плебея с корочкой "В/О".
Дело не в этом. В вузе платят мало, поэтому остаются стариканы (вроде меня или женщины, которым просто некуда больше идти. Если их уволить — преподавать будет вообще некому. Если я еще способен на достаточном уровне научиться сам и научить студентов, то женщины, как правило, нет.
Несколько выручают мои бывшие студенты (в том числе и девушки — есть просто классные программистки!) , но они не любят прподавать. Да и оформление совместителя у нас, в государственном вузе, себе дороже выходит. Был один раз случай, когда приказ о приеме на работу вышел за две недели до приказа об увольнении...
LVV>>Еще один скользкий момент может в наше время случиться при обучении студентов скале или лиспу. Всегда есть на курсе ряд активных студентов, которые постоянно возникают по поводу того, чему их учат.
А> А быдло надо гнать ссаными тряпками. Без малейшей пощады. Эти скоты еще и других портят.
Тут к сожалению, бывает себе дороже. Неявная установка руководства — тащить всех, кого можно. Хотя вполне половина можно выгнать. Но не дают. Если в ведомости более половины двоек, были случаи — ставился вопрос о компетентности прпода как педагога. Типа — научить не может.
Не со всеми так, естественно, но бывает.
LVV>> Скала или Лисп — это в нашей российской действительности фактически неупотребляемые вещи. Запросто может возникнуть ситуация, когда группа студентов пойдет в деканат и заявит, что учат их всякой фигне. И начнется разбор полетов на уровне декана. Оно нам надо?
А> Всегда можно отмазаться ссылками на MIT, Беркли и Оксфорд.
Это в качестве аргументов не принимается.
Доходит до смешного. Ездим на чемпы по программированию в Саратов. Постоянно где-то в середине таблицы (с 20 по 30 место), но бывает, что и вылезаем повыше. Однажды даже взяли диплом 2 сепени.
Но вот в прошлом годе показали обычный свой результат, но оказались ниже соседнего вуза. И наш первый проректор сказал, что больше не подпишет командировки на чемпионат. Типа нефиг зря ездить.
Наше руководство почему-то очень неровно дышит по любому поводу на соседний вуз. Чем это вызвано, не знаю, но постоянно выходит боком простым преподам, которые, естественно, преподают и здесь, и там.
Хочешь быть счастливым — будь им!
Без булдырабыз!!!
Re[2]: Раннее знакомство с Java калечит судьбы программистов
От: LaptevVV Россия  
Дата: 23.01.08 09:17
Оценка:
Здравствуйте, Andrei F., Вы писали:

AF>Тупые преподаватели калечат судьбы программистов, а не языки. Тупые и неумелые, которые даже не могут отличить причину от следствия. Нужно учить студентов программировать, используя язык как инструмент, а не "думать на языке".

AF>А первый язык можно брать любой из применяемых промышленно, разницы все равно не будет.
Сам бы попреподавал, а?
Хочешь быть счастливым — будь им!
Без булдырабыз!!!
Re[3]: Раннее знакомство с Java калечит судьбы программистов
От: Andrei F.  
Дата: 23.01.08 09:24
Оценка:
Здравствуйте, LaptevVV, Вы писали:

LVV>Сам бы попреподавал, а?


Может быть, когда-нибудь в будушем. Сейчас у меня других задач по уши.
Re[10]: Раннее знакомство с Java калечит судьбы программисто
От: Аноним  
Дата: 23.01.08 10:50
Оценка:
Здравствуйте, LaptevVV, Вы писали:

LVV>Дело не в этом. В вузе платят мало, поэтому остаются стариканы (вроде меня или женщины, которым просто некуда больше идти. Если их уволить — преподавать будет вообще некому. Если я еще способен на достаточном уровне научиться сам и научить студентов, то женщины, как правило, нет.


Раньше тоже не особо знатно платили. Просто раньше это было не так важно, как Идея. А сейчас со школы учат, что бабки-бабки-бабки рулят, а остальное все ерунда.

LVV>Несколько выручают мои бывшие студенты (в том числе и девушки — есть просто классные программистки!) , но они не любят прподавать. Да и оформление совместителя у нас, в государственном вузе, себе дороже выходит. Был один раз случай, когда приказ о приеме на работу вышел за две недели до приказа об увольнении...


Весело у вас там...

А>> А быдло надо гнать ссаными тряпками. Без малейшей пощады. Эти скоты еще и других портят.

LVV>Тут к сожалению, бывает себе дороже. Неявная установка руководства — тащить всех, кого можно.

После этого нельзя удивляться тому, что диплом ничего не стоит. Нынешний "специалист" с "высшим" "образованием" — никто и ничто.

LVV> Хотя вполне половина можно выгнать. Но не дают. Если в ведомости более половины двоек, были случаи — ставился вопрос о компетентности прпода как педагога. Типа — научить не может.


Напоминает времена Сталина. Он тогда брякнул, что "научить летать можно даже обезьяну", какой-то член из окружения услышал и запомнил. В результате из летных школ исключать стали только вперед ногами (если ноги остались). Смертность возросла несказанно, у многих просто ума не хватало или способностей, но раз "научить можно даже обезьяну", то и учили до конца. Грустно.

А>> Всегда можно отмазаться ссылками на MIT, Беркли и Оксфорд.

LVV>Это в качестве аргументов не принимается.

Занятно. Считают себя круче? :-O

LVV>Наше руководство почему-то очень неровно дышит по любому поводу на соседний вуз. Чем это вызвано, не знаю, но постоянно выходит боком простым преподам, которые, естественно, преподают и здесь, и там.


Не, ну я понимаю, когда в Кембридже радуются, что "ну ладно, заняли мы 5-е место, зато Оксфорд вообще на последнем", и по этому поводу праздненство пьяное на неделю закатывают. Им можно. Но когда два провинциальных ВУЗа попами толкаются — это уже не смешно.
Re[21]: Раннее знакомство с Java калечит судьбы программисто
От: Аноним  
Дата: 23.01.08 11:04
Оценка:
Здравствуйте, SergH, Вы писали:

А>> Не вижу, чем бы мне мог быть симпатичен дурак.


SH>Плохо

SH>Как насчёт детей?

Дети не обязательно дураки. Бывают и умные. Когда же дурак уже и в детстве дурак — то это клиника. Такого уже не получится вылечить. Относиться к нему тогда надо, как к инвалиду — то есть, с жалостью.

SH>Конечно, понятие "дурак" недоопределено, но если с точки зрения отсутствия/присутствия системного мышления.. Или как ещё?


Способность к анализу и систематикации, иными словами, обучаемость.

А>> Очень мало той возможной положительной мотивации, которая могла бы перешибить по привлекательности самую сильную мотивацию — лень. Как я уже говорил, пряник не работает. Никакой, даже самый сладкий.


SH>Кнут/пряник — слишком простая схема.


Других нет. Чисто физиологически. Любая сколь угодно сложная система скатывается в конце концов на кнут/пряник. Так уж мозги у человека устроены. Боль — плохо, причина боли запоминается как то, что надо избегать. Кайф, эндорфины в крови — хорошо, надо повторить. И всё, никакой лирики. Всё грязно и тупо. Не обольщайтесь на счет человеческой сложности, нет её. Всё давно изучено.

SH>Чем хорошо христианство (ну, один из плюсов) — оно утверждает, что у каждого есть душа.


Оно же и утверждает, что человек только и исключительно сам может вытащить себя из дерьма. И что приложить к этому придется просто сверхчеловеческие усилия. Чем ниже пал, тем сложнее. Никому халявки не обещают. Так что тут все по нашему, в меритократическом ключе.

SH> Людей можно вдохновить, направить, открыть глаза, зажечь — где-то в этом русле путь.


Ага. Вдохновить. А дальше уж как-нибудь сами.

А>> Важна системность мышления. А она дается образованием. Не особо важно, в каком направлении, по мне, так умные люди после определенного уровня взаимозаменяемы, высших уровней развития сознания можно добиться и филологией, и физикой, и даже (извините, если кого стошнит) программированием.


SH>Мм.. Системность мышления — хороший параметр, да, голосую "за". Важно.

SH>Но вот насчёт "даётся образованием" я бы не спешил.

Я не видел ни одного примера, когда эта самая системность воспитывалась бы чем-то отличным от систематического изучения какой либо дисциплины. А я эту тему сам изучал систематически, искал альтернативные пути становления личности. Да и вообще много кто этим занимался — Альтшуллер, например.

SH>Системное мышление — умение увидеть ситуацию в целом, саму по себе и в связи с окружением? И сделать выводы?


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

SH> Учёный с боольшим трудом может достигнуть этого полным перебором вариантов, который исключает субъективность.


Интересные у вас представления об ученых...
Re[23]: Раннее знакомство с Java калечит судьбы программисто
От: Аноним  
Дата: 23.01.08 11:14
Оценка:
Здравствуйте, Курилка, Вы писали:

К>Я тут подумал, а разве не может быть именно "альтернативноодарённых", только не в анекдотическом понимании этого слова, а именно в таких областях, которые пока слабодоступны современному человеку. Как базовую идею для гипотезы — способности в музыке.


Есть они. Гениями называются. Отличаются однобокостью. В дикой природе не выживают.
Эти узкозаточенные инструменты должны направляться людьми умными. Жалко их.
Re[22]: Раннее знакомство с Java калечит судьбы программисто
От: Курилка Россия http://kirya.narod.ru/
Дата: 23.01.08 11:17
Оценка:
Здравствуйте, Аноним, Вы писали:

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


SH>>Мм.. Системность мышления — хороший параметр, да, голосую "за". Важно.

SH>>Но вот насчёт "даётся образованием" я бы не спешил.

А> Я не видел ни одного примера, когда эта самая системность воспитывалась бы чем-то отличным от систематического изучения какой либо дисциплины. А я эту тему сам изучал систематически, искал альтернативные пути становления личности. Да и вообще много кто этим занимался — Альтшуллер, например.


Не знаю, насколько будет убеждающим контрпример, но всёж для размышлений: из Хаксли Уиттли, упомянутый в интервью с академиком Арнольдом
Re[24]: Раннее знакомство с Java калечит судьбы программисто
От: Курилка Россия http://kirya.narod.ru/
Дата: 23.01.08 11:19
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Здравствуйте, Курилка, Вы писали:


К>>Я тут подумал, а разве не может быть именно "альтернативноодарённых", только не в анекдотическом понимании этого слова, а именно в таких областях, которые пока слабодоступны современному человеку. Как базовую идею для гипотезы — способности в музыке.


А> Есть они. Гениями называются. Отличаются однобокостью. В дикой природе не выживают.

А> Эти узкозаточенные инструменты должны направляться людьми умными. Жалко их.

Жалость, как и обида
Автор: Курилка
Дата: 23.01.08
— палка о 2 концах.
Re[13]: Раннее знакомство с Java калечит судьбы программисто
От: nlv  
Дата: 23.01.08 11:31
Оценка:
Здравствуйте, Аноним, Вы писали:


А> Удивительно мощный механизм контроля за быдломассами.


Ты, парень, ведешь себя по-хамски и слишком превозносишься над другими.
Такими-то и легче манипулировать и управлять, особенно если они невежественны.
Для таких свобода — это вседозволенность: "Я обхамил — значит, я не быдло".
Re[22]: Раннее знакомство с Java калечит судьбы программисто
От: SergH Россия  
Дата: 23.01.08 11:32
Оценка:
Здравствуйте, Аноним, Вы писали:

А> Способность к анализу и систематикации, иными словами, обучаемость.


Понятно. Это важно, согласен. Но — остаюсь при своём мнении..

SH>>Чем хорошо христианство (ну, один из плюсов) — оно утверждает, что у каждого есть душа.

А> Оно же и утверждает, что человек только и исключительно сам может вытащить себя из дерьма. И что приложить к этому придется просто сверхчеловеческие усилия. Чем ниже пал, тем сложнее. Никому халявки не обещают. Так что тут все по нашему, в меритократическом ключе.

Не спорю.

SH>> Людей можно вдохновить, направить, открыть глаза, зажечь — где-то в этом русле путь.

А> Ага. Вдохновить. А дальше уж как-нибудь сами.

Именно. И — гораздо эффективнее и быстрее, чем из под палки.

А> Я не видел ни одного примера, когда эта самая системность воспитывалась бы чем-то отличным от систематического изучения какой либо дисциплины. А я эту тему сам изучал систематически, искал альтернативные пути становления личности. Да и вообще много кто этим занимался — Альтшуллер, например.


Повторюсь, если речь идёт о становлении личности (мне это тоже интереснее), то перенос системного мышления из области физики в область жизни не кажется мне очевидным. Уж слишком много отличий. В университеты всегда ходили за знаниями. За мудростью — в монастыри.

SH>>Системное мышление — умение увидеть ситуацию в целом, саму по себе и в связи с окружением? И сделать выводы?


А> Не только. Это один из аспектов, не самый ключевой. Системное мышление — способность к систематизации поступающей информации, и к постоянной перестройке и переоценке всей своей системы с учетом нового знания.


Оба ключевые, но систематизация как раз естественна. Попытка разложить по полочкам происходит всегда. Если кажется, что кто-то этого не делает — у него просто полочки очень неудобные, никак не влезает. А вот для "перестройки и переоценки" нужно как раз взглянуть со стороны, "без субъективных акцентов". Предположить, что твоя система полочек не идеальна, попытаться посмотреть на ситуацию объективно — очень сложно.

А> Наука делает это естественным образом. Человеку же надо этому учиться. Проще всего научиться этому у науки.


Да? Как насчёт знаменитого "новая научная школа побеждает в основном за счёт вымирания представителей старой"? Очень мало кто из тех, для кого это по твоему "естественно" может переучиться.

SH>> Учёный с боольшим трудом может достигнуть этого полным перебором вариантов, который исключает субъективность.

А> Интересные у вас представления об ученых...

Ай, столько интересных учёных последнее время, они куда интереснее моих представлений.
Конечно, ты можешь сказать, что эти придурки только называют себя учёными, но они не учёные, а учёные это по определению "хорошие учёные". Но такое определение не очень полезно, т.к. принадлежность объекта к заданному классу не проверяема.
Делай что должно, и будь что будет
Re[11]: Раннее знакомство с Java калечит судьбы программисто
От: Sergey Chadov Россия  
Дата: 23.01.08 16:45
Оценка:
Здравствуйте, <Аноним>, Вы писали:


LVV>>Дело не в этом. В вузе платят мало, поэтому остаются стариканы (вроде меня или женщины, которым просто некуда больше идти. Если их уволить — преподавать будет вообще некому. Если я еще способен на достаточном уровне научиться сам и научить студентов, то женщины, как правило, нет.


А> Раньше тоже не особо знатно платили. Просто раньше это было не так важно, как Идея. А сейчас со школы учат, что бабки-бабки-бабки рулят, а остальное все ерунда.


Мне вот интересно, ты представляешь сколько платят молодому преподавателю(не зав каф, не декан) в провинциальном вузе?
--
Sergey Chadov

... << RSDN@Home 1.2.0 alpha rev. 685>>
Re[12]: Раннее знакомство с Java калечит судьбы программисто
От: SergH Россия  
Дата: 23.01.08 16:55
Оценка:
Здравствуйте, Sergey Chadov, Вы писали:

SC>Мне вот интересно, ты представляешь сколько платят молодому преподавателю(не зав каф, не декан) в провинциальном вузе?


Провинциальность не при чём. Я молодой преподаватель в Питерском Политехе. На полставки, появляюсь там раз в неделю. Имею с этого 1200 рублей в месяц (цифра примерная, меня всё никак не могут официально устроить, в основном, правда, по моей вине ). Полная ставка — умножь на 2.
Делай что должно, и будь что будет
Re[13]: Раннее знакомство с Java калечит судьбы программисто
От: Sergey Chadov Россия  
Дата: 23.01.08 17:30
Оценка:
Здравствуйте, SergH, Вы писали:

SC>>Мне вот интересно, ты представляешь сколько платят молодому преподавателю(не зав каф, не декан) в провинциальном вузе?


SH>Провинциальность не при чём. Я молодой преподаватель в Питерском Политехе. На полставки, появляюсь там раз в неделю. Имею с этого 1200 рублей в месяц (цифра примерная, меня всё никак не могут официально устроить, в основном, правда, по моей вине ). Полная ставка — умножь на 2.


Да я знаю. Я тоже. Только не в Питере.
--
Sergey Chadov

... << RSDN@Home 1.2.0 alpha rev. 685>>
Re[2]: Раннее знакомство с Java калечит судьбы программистов
От: IT Россия linq2db.com
Дата: 23.01.08 19:03
Оценка:
Здравствуйте, Pavel Dvorkin, Вы писали:

PD>Так хочется ее на С++ переписать — думаю, строк в 500 уложился бы наверняка...


Или в 300 на C#.
Если нам не помогут, то мы тоже никого не пощадим.
Re[14]: Раннее знакомство с Java калечит судьбы программисто
От: SergH Россия  
Дата: 23.01.08 21:05
Оценка:
Здравствуйте, Sergey Chadov, Вы писали:

SC>Да я знаю. Я тоже. Только не в Питере.


Ну, вот мой поинт был в том, что в Питере — точно так же как у тебя. И в Москве, скорее всего, та же фигня.
Делай что должно, и будь что будет
Re[3]: Раннее знакомство с Java калечит судьбы программистов
От: Andrei F.  
Дата: 24.01.08 03:22
Оценка:
Здравствуйте, Геннадий Васильев, Вы писали:

ГВ>Именно этого делать нельзя вообще. Студенты — ещё дети. Разбегутся под крылья таких же полуоперившихся манагеров.


То есть надо учить таким языкам, которые нафиг никому не нужны, "чтобы студенты не разбежались"? Оригинально
Re[15]: Раннее знакомство с Java калечит судьбы программисто
От: nlv  
Дата: 24.01.08 03:44
Оценка:
Здравствуйте, Аноним, Вы писали:

А> ... собрался тут поучать *меня*? Ржунимагу!


Вразуми и спаси, тебя, Господи!
Re[4]: Раннее знакомство с Java калечит судьбы программистов
От: Геннадий Васильев Россия http://www.livejournal.com/users/gesha_x
Дата: 24.01.08 04:56
Оценка:
Здравствуйте, Andrei F., Вы писали:

Понёсся ёжик по ухабам...

Напоминаю:

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


AF>То есть надо учить таким языкам, которые нафиг никому не нужны, "чтобы студенты не разбежались"? Оригинально


Дальнейшее понятно, или продолжать пальцем тыкать?
Я знаю только две бесконечные вещи — Вселенную и человеческую глупость, и я не совсем уверен насчёт Вселенной. (c) А. Эйнштейн
P.S.: Винодельческие провинции — это есть рулез!
Re[3]: Раннее знакомство с Java калечит судьбы программистов
От: Pavel Dvorkin Россия  
Дата: 24.01.08 09:59
Оценка:
Здравствуйте, Геннадий Васильев, Вы писали:

ГВ>2008-й на дворе, а такое впечатление, что ты это только что открыл.


Я это давно знаю, но в реальной работе в первый раз пришлось Java на C++ переписывать
With best regards
Pavel Dvorkin
Re[3]: Раннее знакомство с Java калечит судьбы программистов
От: Pavel Dvorkin Россия  
Дата: 24.01.08 10:02
Оценка:
Здравствуйте, IT, Вы писали:

IT>Здравствуйте, Pavel Dvorkin, Вы писали:


PD>>Так хочется ее на С++ переписать — думаю, строк в 500 уложился бы наверняка...


IT>Или в 300 на C#.


Не-а. На C# будет столько же, сколько на Яве. Те же геттеры, те же сеттеры (ну синтаксис другой), те же классы в количестве, раз в 5 превышающим реально необходимое их. В общем, все то же самое
With best regards
Pavel Dvorkin
Re[8]: Раннее знакомство с Java калечит судьбы программистов
От: Аноним  
Дата: 25.01.08 08:21
Оценка:
<skip>

LVV>А в вузе сейчас мало таких профи. А те, кто есть (молодые аспиранты) — они не профи в области преподавания. Тоже проблема ж. Например, работает аспирант в отделе АСУ, пишет проги на додиезе, реальные проги. Знаем много, умеет много. Но преподать — проблема! Студенты у него как правило с трудом сдают, даже самые лучшие. И понятно почему. Он — программер, а не препод. Это две разные профессии.


<skip>

Судя по всему Вы преподаватель. Тогда откуда эта терминология — препод, прога, до диез....? Вы же уподобляетесь недоучкам. 2-
Re[9]: Раннее знакомство с Java калечит судьбы программистов
От: kaa.python Ниоткуда РСДН профессионально мёртв и завален ватой.
Дата: 25.01.08 08:34
Оценка:
Здравствуйте, <Аноним>, Вы писали:

А>Судя по всему Вы преподаватель. Тогда откуда эта терминология — препод, прога, до диез....? Вы же уподобляетесь недоучкам. 2-


Кстати, а что такое "до диез"?
Re[11]: Раннее знакомство с Java калечит судьбы программисто
От: LaptevVV Россия  
Дата: 25.01.08 08:46
Оценка:
Здравствуйте, Аноним, Вы писали:

А> Раньше тоже не особо знатно платили. Просто раньше это было не так важно, как Идея. А сейчас со школы учат, что бабки-бабки-бабки рулят, а остальное все ерунда.

Не, тут ты не прав. При социализме платили очень хорошо! Помнится декан моего фак в месяц получал 600-700 рублей. Конечно, доктор, профессор. Но и кандидаты вполне 300-400р имели.
Правда, тут оборотная сторона медали была: защитил диссер, и потом трава не расти -= обеспечен до пенсии. Поэтому в вузах частенько любыми средствами старались защититься. Кстати, сейчас наблюдаю ту же картину — стараются защититься как раз женщины, которых нормальный совет при социализме на пушечный выстрел к защите не подпустилбы.
И опять же потому, что условия создали такие в государстве, что всем выгодно. Лишняя защита в совете — это хорошо, совет работает. А ВАК практически не отклоняет кандидатские — только по особому сигналу. А оно кому-нить надо?

LVV>>Несколько выручают мои бывшие студенты (в том числе и девушки — есть просто классные программистки!) , но они не любят прподавать. Да и оформление совместителя у нас, в государственном вузе, себе дороже выходит. Был один раз случай, когда приказ о приеме на работу вышел за две недели до приказа об увольнении...

А> Весело у вас там...
Да вот так.
А>>> А быдло надо гнать ссаными тряпками. Без малейшей пощады. Эти скоты еще и других портят.
LVV>>Тут к сожалению, бывает себе дороже. Неявная установка руководства — тащить всех, кого можно.
А> После этого нельзя удивляться тому, что диплом ничего не стоит. Нынешний "специалист" с "высшим" "образованием" — никто и ничто.
Ну, наша лучшая половина как раз вполне квалифицированные спецы получаются. А вот вторая половина, которых надо было выгнать, работает фактически продавцами в компьютерных конторах. Правда, отдельные хорошие выпускники сами в бизнес подались — свои конторы пооткрывали.
LVV>> Хотя вполне половина можно выгнать. Но не дают. Если в ведомости более половины двоек, были случаи — ставился вопрос о компетентности прпода как педагога. Типа — научить не может.
А> Напоминает времена Сталина. Он тогда брякнул, что "научить летать можно даже обезьяну", какой-то член из окружения услышал и запомнил. В результате из летных школ исключать стали только вперед ногами (если ноги остались). Смертность возросла несказанно, у многих просто ума не хватало или способностей, но раз "научить можно даже обезьяну", то и учили до конца. Грустно.
Грустно-не грустно, а так у нас было. Да и не только у нас. Более половины двоек в ведомости — это предмет разбирательства и в соседнем вузе. Хотя там студенты похуже наших будут. Там нет такого количества элитных пацанов, как у нас. К нам все же три главных препода города по информатике и программированию стараются своих учеников направить — репутацию мы себе хорошую создали.
А>>> Всегда можно отмазаться ссылками на MIT, Беркли и Оксфорд.
LVV>>Это в качестве аргументов не принимается.
А> Занятно. Считают себя круче? :-O
Не, просто абсолютно не в курсе истинного положения дел в ИТ. У нас сейчас ректор и проректор по науке — химики. Проректор по информатизации — немного ближе (автоматизация технологических процессов), но он лоббирует интересы собственной фирмы — продает компьютеры себе от себя же.
LVV>>Наше руководство почему-то очень неровно дышит по любому поводу на соседний вуз. Чем это вызвано, не знаю, но постоянно выходит боком простым преподам, которые, естественно, преподают и здесь, и там.
А> Не, ну я понимаю, когда в Кембридже радуются, что "ну ладно, заняли мы 5-е место, зато Оксфорд вообще на последнем", и по этому поводу праздненство пьяное на неделю закатывают. Им можно. Но когда два провинциальных ВУЗа попами толкаются — это уже не смешно.
Ну, хоть мы и провинциальные, а в первые 70-80 технических универов России входим — руководство постоянно этим хвастается. По какой-то там классификации минобра. Недавно вот аттестация и аккредитация прошли — так там еще раз подтвердили, что мы довольно высоко.
Хочешь быть счастливым — будь им!
Без булдырабыз!!!
Re[6]: Раннее знакомство с Java калечит судьбы программистов
От: LaptevVV Россия  
Дата: 25.01.08 08:57
Оценка:
Здравствуйте, Pavel Dvorkin, Вы писали:

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


PD>Ну тогда, видимо, в Microsoft и Sun очень криворукие программисты .

PD>В C (даже не С++) весь практически файловый (и не только) ввод/вывод можно сделать на полутора десятках функций из stdio.h, ну а там где не хватит, придется кое-что из io.h брать. . Если инкапсулировать их, то 2 класса получится. В крайнем случае еще Win32 добавим — еще пара десятков функций.
Абсолютно согласен!
PD>А теперь берем C#
PD>Ну можно и в Яву заглянуть. Тут побольше будет.
PD>(Взял как есть из документации, так что если что-то лишнее попало — не ругайте. Суть дела это не изменит).
Я когда первый раз с Явой знакомился, все удивлялся абсолютному отсутствию систематичнсти во вводе-выводе. Большая куча не понять чего. Очень мне не понравилось.
Хочешь быть счастливым — будь им!
Без булдырабыз!!!
Re[6]: Раннее знакомство с Java калечит судьбы программистов
От: Аноним  
Дата: 25.01.08 11:32
Оценка:
Здравствуйте, Pavel Dvorkin, Вы писали:

PD>Я ничего не забыл ? Да, еще с десяток exception-классов. Ну нельзя же конец файла обработать иначе, как не создав для этой цели EndOfStreamException

PD>

Гнусная клевета. Достаточно проверки на null.
Re[8]: Раннее знакомство с Java калечит судьбы программистов
От: sndanil Россия  
Дата: 25.01.08 11:45
Оценка:
Здравствуйте, Pavel Dvorkin, Вы писали:

PD>Может, и не придется, но для того чтобы писать в файл грамотно, я должен знать, что именно использовать или можно то, что первым попадется ? Вот скажи просто так, не раздумывая, что лучше :


точно тебе говорю, не придется

PD>FileStream


PD>public override int Read (

PD> [InAttribute] [OutAttribute] byte[] array,
PD> int offset,
PD> int count
PD>)


PD>или


PD>BinaryReader


PD>public virtual byte[] ReadBytes (

PD> int count
PD>)

или StreamReader

PD>при условии, что ты начинающий программист на C#.


да, поначалу это не очевидно ...

PD>А на C тут и думать нечего : fread и все. Хоть в байтовый массив, хоть в небайтовый, хоть не в массив вообще.


думать ты начинаешь банально, когда те этим fread надо будет считать текст из файла в юникоде или в строго указанной кодировке ... особенно как ты гришь начинающему программисту, то вообще раздолье для раздумий

>> ... что бы действительно сравнить, просто набросай пример и все станет ясно ...

PD>Вот и набросаю, а потом мне скажут, что я не тот метод использовал...
PD>Думаешь, утрирую ? Отнюдь.

верю, сталкивался с таким и не раз ... ты главное попробуй (пример прочтения юникодного текстового файлы с выводом на консоль), беда ведь в том, что именно ты утверждаешь, что на шарпе будет больше писанины ... вот и убеди ...
Re[9]: Раннее знакомство с Java калечит судьбы программистов
От: Pavel Dvorkin Россия  
Дата: 25.01.08 13:58
Оценка:
Здравствуйте, sndanil, Вы писали:

S>да, поначалу это не очевидно ...


Вот именно. И не только поначалу, поскольку в любом пакете этих классов намного больше, чем сущностей.

PD>>А на C тут и думать нечего : fread и все. Хоть в байтовый массив, хоть в небайтовый, хоть не в массив вообще.


S>думать ты начинаешь банально, когда те этим fread надо будет считать текст из файла в юникоде или в строго указанной кодировке ... особенно как ты гришь начинающему программисту, то вообще раздолье для раздумий


Да о чем тут думать-то ? fgetws . Или fread (ей кодировки до лампочки) и MultiByteToWideChar или наоборот, WideCharToMultiByte.

>>> ... что бы действительно сравнить, просто набросай пример и все станет ясно ...

PD>>Вот и набросаю, а потом мне скажут, что я не тот метод использовал...
PD>>Думаешь, утрирую ? Отнюдь.

S>верю, сталкивался с таким и не раз ... ты главное попробуй (пример прочтения юникодного текстового файлы с выводом на консоль), беда ведь в том, что именно ты утверждаешь, что на шарпе будет больше писанины ... вот и убеди ...


Да уж...


int _tmain(int argc, _TCHAR* argv[])
{
    setlocale(LC_ALL, "Russian_Russia.866");
    wchar_t szLine[100];
    FILE * f = _wfopen(L"D:\\Пример.txt", L"rb");
    for( int i = 0; i < 3; i++)
        {
        fgetws(szLine,100,f);
        wprintf(L"%s", i == 0 ? szLine + 1 : szLine);
        }
    fclose(f);

    return 0;
}


В файле Пример.txt лежат 3 юникодные строки.

Только не надо флейм устраивать насчет того, почему я уверен, что 100 символов хватит.

А можно еще проще


int _tmain(int argc, _TCHAR* argv[])
{
    setlocale(LC_ALL, "Russian_Russia.866");
    HANDLE hFile = CreateFile(L"D:\\Пример.txt", GENERIC_READ, 0, NULL, OPEN_EXISTING, 0, 0);
    int sizeChars = (GetFileSize(hFile, NULL) - 2) / 2;
    HANDLE hFileMapping = CreateFileMapping(hFile, NULL, PAGE_READONLY, 0, 0, NULL);
    wchar_t* lpText = (wchar_t*) MapViewOfFile(hFileMapping, FILE_MAP_READ, 0, 0, 0);
    wchar_t* lpLine = lpText + 1;
    while(lpLine - lpText < sizeChars )
        {
            while (*lpLine != 0xD) 
                    _putwch(*lpLine++);
            _putwch('\n');
            lpLine += 2;
        }
    UnmapViewOfFile(lpText);
    CloseHandle(hFileMapping);
    CloseHandle(hFile);
    return 0;
}


Обращаю внимание — я не заводил никаких промежуточных буферов . Здесь нет ни одного массива, кроме, конечно, самого файла как проекции в память. Здесь меня совершенно не волнует длина строки — будь там в файле хоть одна строка на 100 Мб

Повтори на C#, please
With best regards
Pavel Dvorkin
Re[9]: Раннее знакомство с Java калечит судьбы программистов
От: Pavel Dvorkin Россия  
Дата: 25.01.08 14:09
Оценка:
Здравствуйте, sndanil, Вы писали:


S>верю, сталкивался с таким и не раз ... ты главное попробуй (пример прочтения юникодного текстового файлы с выводом на консоль), беда ведь в том, что именно ты утверждаешь, что на шарпе будет больше писанины ... вот и убеди ...


Уточнение. Не писанины на шарпе больше будет. а классов и прочих сущностей будет. Лишних действий меньше будет. Памяти расходоваться меньше будет. Быстрее работать будет.

Писанины, может, и меньше будет, если использовать классы, а не писать их.

Напиши свой вариант той же самой задачи. И давай попробуем на текстовом Юникодном файле размером так в 10-20 Мб.

Кстати, почему в C# большинство классов ввода/вывода sealed ? Чем им не угодит, если я наследника сделаю и кое-что там переопределю ? В С++ это никогда не запрещено.
With best regards
Pavel Dvorkin
Re[10]: Раннее знакомство с Java калечит судьбы программисто
От: Pavel Dvorkin Россия  
Дата: 25.01.08 14:24
Оценка:
Здравствуйте, Pavel Dvorkin, Вы писали:

Модифицировал свой тест. Входной файл размером в 12 Мб. Вывод на консоль убрал — ее я быстрой сделать не могу.


int _tmain(int argc, _TCHAR* argv[])
{
    DWORD dwTimeStart = GetTickCount();
    int nLines = 0;
    setlocale(LC_ALL, "Russian_Russia.866");
    HANDLE hFile = CreateFile(L"D:\\Пример1.txt", GENERIC_READ, 0, NULL, OPEN_EXISTING, 0, 0);
    int sizeChars = (GetFileSize(hFile, NULL) - 2) / 2;
    HANDLE hFileMapping = CreateFileMapping(hFile, NULL, PAGE_READONLY, 0, 0, NULL);
    wchar_t* lpText = (wchar_t*) MapViewOfFile(hFileMapping, FILE_MAP_READ, 0, 0, 0);
    wchar_t* lpLine = lpText + 1;
    while(lpLine - lpText < sizeChars )
        {
            while (*lpLine != 0xD) 
//                    _putwch(*lpLine++);
                    lpLine++;
//            _putwch('\n');
            lpLine += 2;
            nLines++;
        }
    UnmapViewOfFile(lpText);
    CloseHandle(hFileMapping);
    CloseHandle(hFile);
    DWORD dwTimeEnd = GetTickCount();
    printf("Total lines %d\n", nLines);
    printf("Time %f сек \n", (float) (dwTimeEnd - dwTimeStart) / 1000);
    return 0;
}



Результат

Total lines 718848
Time 0,015000 сек
With best regards
Pavel Dvorkin
Re[8]: Раннее знакомство с Java калечит судьбы программистов
От: IT Россия linq2db.com
Дата: 25.01.08 14:45
Оценка:
Здравствуйте, Pavel Dvorkin, Вы писали:

PD>Может, и не придется, но для того чтобы писать в файл грамотно, я должен знать, что именно использовать или можно то, что первым попадется ? Вот скажи просто так, не раздумывая, что лучше :


Лучше скажи, что лучше memset или setmem?
... << RSDN@Home 1.2.0 alpha rev. 771>>
Если нам не помогут, то мы тоже никого не пощадим.
Re[10]: Раннее знакомство с Java калечит судьбы программисто
От: LaptevVV Россия  
Дата: 26.01.08 09:50
Оценка:
Здравствуйте, kaa.python, Вы писали:

А>>Судя по всему Вы преподаватель. Тогда откуда эта терминология — препод, прога, до диез....? Вы же уподобляетесь недоучкам. 2-

KP>Кстати, а что такое "до диез"?
С# в музыкальной нотации называется До диез.
Хочешь быть счастливым — будь им!
Без булдырабыз!!!
Re[9]: Раннее знакомство с Java калечит судьбы программистов
От: LaptevVV Россия  
Дата: 26.01.08 09:51
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Судя по всему Вы преподаватель. Тогда откуда эта терминология — препод, прога, до диез....? Вы же уподобляетесь недоучкам. 2-

А что, преподы — не люди? Им жаргон запрещено использовать?

Поработайте преподом...
Хочешь быть счастливым — будь им!
Без булдырабыз!!!
Re[8]: Раннее знакомство с Java калечит судьбы программистов
От: IT Россия linq2db.com
Дата: 28.01.08 05:52
Оценка:
Здравствуйте, <Аноним>, Вы писали:

А>Уж не знаю что ответит Маєстро, но Ваш варинт можно немного упростить


Боюсь маэстро уже ничего не ответит.

А>
А>string GetLine(int n)
А>{
А>    return File.ReadAllLines("filename.ext")[n];
А>}
А>


Вот! Даже этот код можно упростить. И всё благодаря стандартным библиотекам. А на плюсах нам сейчас начнут возить указателями по памяти, надеясь где-нибудь нечаянно не промахнуться. В лучшем случае изобретут гору трёхколёсных велосипедов.
... << RSDN@Home 1.2.0 alpha rev. 771>>
Если нам не помогут, то мы тоже никого не пощадим.
Re[8]: Раннее знакомство с Java калечит судьбы программистов
От: Pavel Dvorkin Россия  
Дата: 28.01.08 09:26
Оценка:
Забыл еще сравнить потребности по памяти

У тебя

1. Кэширование файла операционной системой — раз.
2. Суммарная строка — два.
3. Массив строк — три.

У меня

Memory-mapped file — раз

и ничего больше, поскольку никакого файлового в/в здесь нет. А, кстати, если бы он и был — потребность в памяти не увеличилась бы, так как файловый кэш и mmf были бы сделаны на одном и том же наборе страниц RAM. У Рихтера этот вопрос подробно рассмотрен, раздел "когерентность".

Итого — в 3 раза меньше. Минимум.

Понадобится — еще меньше сделаю, буду отображать файл не целиком, а кусками. Код, конечно, усложнится, скорость — несколько упадет (за счет многих системных вызовов Map/UnmapViewOfFile. Но если именно память критична, решу задачу на 64 Кбайтах — при любом размере файла

P.S. Задачу, подобную этой , я студентам даю в качестве упражнения по memory-mapped файлам.
With best regards
Pavel Dvorkin
Re[10]: Раннее знакомство с Java калечит судьбы программисто
От: sndanil Россия  
Дата: 28.01.08 09:27
Оценка:
Здравствуйте, Pavel Dvorkin, Вы писали:

PD>Повтори на C#, please


Вуаля ...

using System;
using System.IO;

namespace ConsoleApplication2
{
    class Program
    {
        static void Main(string[] args)
        {
            using (StreamReader reader = new StreamReader("D:\\Пример1.txt"))
            {
                while (!reader.EndOfStream)
                {
                    Console.WriteLine(reader.ReadLine());
                }
            }
        }
    }
}


вторым параметром в стремридере можешь указать кодировку если нужна, по умолчанию юникод ... ну как?
Re[10]: Раннее знакомство с Java калечит судьбы программисто
От: sndanil Россия  
Дата: 28.01.08 09:35
Оценка:
Здравствуйте, Pavel Dvorkin, Вы писали:

PD>Уточнение. Не писанины на шарпе больше будет. а классов и прочих сущностей будет. Лишних действий меньше будет. Памяти расходоваться меньше будет. Быстрее работать будет.

PD>Писанины, может, и меньше будет, если использовать классы, а не писать их.

ниче не понял ... смотри выше на мой пример, чего там больше? все просто как желудь ...

PD>Напиши свой вариант той же самой задачи. И давай попробуем на текстовом Юникодном файле размером так в 10-20 Мб.


написал, пробуй ...

PD>Кстати, почему в C# большинство классов ввода/вывода sealed ? Чем им не угодит, если я наследника сделаю и кое-что там переопределю ? В С++ это никогда не запрещено.


это не ко мне ... есть класс стрим, наследуйся на здоровье ...
Re[9]: Раннее знакомство с Java калечит судьбы программистов
От: Геннадий Васильев Россия http://www.livejournal.com/users/gesha_x
Дата: 28.01.08 18:35
Оценка:
Здравствуйте, IT, Вы писали:

PD>>А нельзя ли объяснить, какое отношение XXXString имеет к вводу/выводу ? Подмена объекта обсуждения — не лучший способ дискутировать.

IT>Это имеет прямое отношение к стандартным библиотекам.

А какой должна быть "строка" на все случаи жизни? И почему?

И ещё. Как я тебе писал года, эдак три назад, нет никакой проблемы с (LPCTSTR)(CString) и т.п. Шаблонные функции ещё никто не отменял... Ах, забыл. Отменяли по MSVC7 включительно. Вкупе с частичной специализацией.
Я знаю только две бесконечные вещи — Вселенную и человеческую глупость, и я не совсем уверен насчёт Вселенной. (c) А. Эйнштейн
P.S.: Винодельческие провинции — это есть рулез!
Re[11]: Раннее знакомство с Java калечит судьбы программисто
От: Pavel Dvorkin Россия  
Дата: 29.01.08 06:16
Оценка:
Здравствуйте, IT, Вы писали:

PD>>Напиши код на C#, который решит ту же задачу за 0.015 сек, тогда и поговорим. Напиши, очень прошу


IT>Я его уже написал. На моей машине этот код выполняетя за 00:00:00.001000


Код в студию, please

IT>Но главное не это. Вот попробуй не просто ответить на вопрос, а подумать о нём хорошенько — зачем?


http://www.rsdn.ru/forum/message/1419711.1.aspx
Автор: Pavel Dvorkin
Дата: 05.10.05
With best regards
Pavel Dvorkin
Re[10]: Раннее знакомство с Java калечит судьбы программисто
От: sndanil Россия  
Дата: 29.01.08 07:36
Оценка:
Здравствуйте, Pavel Dvorkin, Вы писали:

IT>>Тут ты явно перестарался. Речь шла о небольших файлах.


PD>А откуда это следует ? Я такого нигде не утверждал.


например тут

В файле Пример.txt лежат 3 юникодные строки.

Только не надо флейм устраивать насчет того, почему я уверен, что 100 символов хватит.


твое?
сравнишь производительность на трех строчках?
Re[11]: Раннее знакомство с Java калечит судьбы программисто
От: Pavel Dvorkin Россия  
Дата: 29.01.08 10:08
Оценка:
Здравствуйте, sndanil, Вы писали:

PD>>А откуда это следует ? Я такого нигде не утверждал.


S>например тут


S>[q]

S>В файле Пример.txt лежат 3 юникодные строки.

А вот тут дочитать можно было ?

http://rsdn.ru/forum/message/2811970.1.aspx
Автор: Pavel Dvorkin
Дата: 25.01.08


Я ведь сначала вовсе не производительностью интересовался, а просто показал, как на С++ решается твоя задача. Но после этого разговор пошел уже о совсем другом, так что стоит вести дискуссию в контексте всего топика, а не прошлых ее частей.
With best regards
Pavel Dvorkin
Re[11]: Раннее знакомство с Java калечит судьбы программисто
От: Pavel Dvorkin Россия  
Дата: 29.01.08 10:25
Оценка:
Здравствуйте, sndanil, Вы писали:


S>вторым параметром в стремридере можешь указать кодировку если нужна, по умолчанию юникод ... ну как?


Да вот так. Внес маленькое изменение


using System;
using System.IO;

namespace ConsoleApplication2
{
    class Program
    {
        static void Main(string[] args)
        {
            DateTime dtStart = DateTime.Now;
            using (StreamReader reader = new StreamReader("D:\\Пример1.txt"))
            {
                while (!reader.EndOfStream)
                {
                    reader.ReadLine();
                }
            }
            DateTime dtEnd = DateTime.Now;
            Console.WriteLine(dtEnd - dtStart);
        }
    }
}


5 запусков

00:00:00.2656250
00:00:00.2343750
00:00:00.2343750
00:00:00.2812500
00:00:00.3281250

Так что я тебя поздравляю, конечно, по сравнению с тем, что тут IT предложил, в 2 раза примерно быстрее. Но по сравнению с 0.015 сек, что я сделал — это все же проигрывает более чем в 10 раз.
With best regards
Pavel Dvorkin
Re[12]: Раннее знакомство с Java калечит судьбы программисто
От: Геннадий Васильев Россия http://www.livejournal.com/users/gesha_x
Дата: 29.01.08 10:30
Оценка:
Здравствуйте, Pavel Dvorkin, Вы писали:

PD>Я ведь сначала вовсе не производительностью интересовался, а просто показал, как на С++ решается твоя задача. Но после этого разговор пошел уже о совсем другом, так что стоит вести дискуссию в контексте всего топика, а не прошлых ее частей.


Предлагаю отрезать эту ветку
Автор: Pavel Dvorkin
Дата: 18.01.08
, а потом перекинуть, например, в "Архитектуру". В автомодерилке уже я отметился.
Я знаю только две бесконечные вещи — Вселенную и человеческую глупость, и я не совсем уверен насчёт Вселенной. (c) А. Эйнштейн
P.S.: Винодельческие провинции — это есть рулез!
Re[12]: Раннее знакомство с Java калечит судьбы программисто
От: sndanil Россия  
Дата: 29.01.08 11:18
Оценка:
Здравствуйте, Pavel Dvorkin, Вы писали:

PD>Я ведь сначала вовсе не производительностью интересовался, а просто показал, как на С++ решается твоя задача. Но после этого разговор пошел уже о совсем другом, так что стоит вести дискуссию в контексте всего топика, а не прошлых ее частей.


ее вообще никто не мерял кроме тебя, и о другом только ты заговорил ...
первоначальный посыл (твой) был в том, что из-за большого количества сущностей программа на шарпе будет больше и сложнее ... тебе не раз показали обратное, вместо того что бы принять, ты взялся производительность мерять ...
Re[10]: Раннее знакомство с Java калечит судьбы программисто
От: sndanil Россия  
Дата: 29.01.08 11:24
Оценка:
Здравствуйте, Геннадий Васильев, Вы писали:

ГВ>Да ну?!


ГВ>
ГВ>bool get_line(std::string *s, int n)
ГВ>{
ГВ>  std::ifstream istr("myfile.txt");
ГВ>  while(n-- && std::getline(istr, *s));
ГВ>  return n < 0;
ГВ>}
ГВ>


ГВ>Только STL.


Unicode?
Re[12]: Раннее знакомство с Java калечит судьбы программисто
От: sndanil Россия  
Дата: 29.01.08 11:42
Оценка:
Здравствуйте, Pavel Dvorkin, Вы писали:

PD>Так что я тебя поздравляю, конечно, по сравнению с тем, что тут IT предложил, в 2 раза примерно быстрее. Но по сравнению с 0.015 сек, что я сделал — это все же проигрывает более чем в 10 раз.


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

ЗЫ: создал в 2005 студии проект вин32 консоль и вставил туда твой пример ... откомпилил ... запустил, че-то оно делало, при этом долгое время выдавая вопросы на консоль ... потом я это вырубил

ЗЫ2: Environment.TickCount
Re[10]: Раннее знакомство с Java калечит судьбы программисто
От: konsoletyper Россия https://github.com/konsoletyper
Дата: 29.01.08 14:13
Оценка:
Здравствуйте, Pavel Dvorkin, Вы писали:

PD>Во-первых, что понимается здесь под парсингом ? Это понятие довольно растяжимое. А во-вторых, код в студию. Если не имеешь права сам код привести — изложи идею. Я свой код привел, а от тебя пока что слышу только заявления насчет одного кода, который работает 0.00 сек и другого, который 20 сек работает, и ни строчки кода. А та строчка, что ты привел, на 12 Мб файле работает 0.5 сек, а если ей подсунуть 3 Гб файл — боюсь, минуты, а то и больше понадобится, да и ОП скорее всего не хватит вместе со своп-файлом.


Вот именно в этом и заключается корень Ваших заблуждений. Дело в том, что далеко не всегда нужно бить на строчки 12Гб файл. Чаще всего точно известно, что данной программе никто и никогда не подсунет файл больше 50К (а если и подсунет, тормозить, будет что-нибудь другое, да так, что мало не покажется). Конечно, бывают исключительные ситуации. Но фреймворки для того и создаются, чтобы покрывать 99% тех случаев, на которые они расчитаны. А вот как раз то, что в System.IO куча классов — очень либерально со стороны фреймворка. Потому что при наличии подобной специфической задачи мы не станем юзать другой фреймворк или писать свой велосипед, а заюзаем TextReader или даже Stream, в зависимости от того, насколько низкоуровневым должно быть решение.

А делать решение-на-все-случаи жизни — это заведомо неправильный путь, потому что дав адекватное средство для решения задач меньшинства, мы заставим матерясь срывать сроки большинство.
... << RSDN@Home 1.2.0 alpha rev. 672>>
Re[10]: Раннее знакомство с Java калечит судьбы программисто
От: konsoletyper Россия https://github.com/konsoletyper
Дата: 29.01.08 14:13
Оценка:
Здравствуйте, Pavel Dvorkin, Вы писали:

IT>>Редкостное дерьмо ваш STL, вы уж извините мне мой французский.


PD>Редкостно корректный способ дискутировать, Вы уж извините мой русский.


Про фреймворк на-все-случаи-жизни я писал в другом посте. Так вот, как мне кажется, проблема STL как раз в том, что он является библиотекой на-все-случаи-жизни, а это не есть хорошо.

По поводу конструктивной критики STL — послушаем IT, но я уже сходу могу указать на один момент, который меня бесит. Когда надо пройтись по коллекции, пишут что-то вроде:

for (list<pair<foo, bar>>::iterator iter = v.begin(); iter != v.end(); ++iter)


Короче, необходимость делать аннотацию типа iter меня убивает. Конечно, можно свалить всю вину на C++, но и разработчики STL могли бы учесть... Ещё один пункт: много приходилось трахаться с std::map. Хотят пример тут не приведу, т.к. с STL дааавно не работал, но воспоминания остались нехорошие.

Кстати, я сейчас всё более склоняюсь к тому, что все эти коллекции а-ля STL сдизайнены неправильно. Например, если методу класса передаётся коллекция, которую он должен где-то внутри класса сохранить, то эту коллекцию (за исключением тех ситуаций, когда и так приемлемо) в целях сохранения инкапсуляции придётся копировать явно. Кроме того, эту коллекцию, может быть, захочется выставить наружу как read-only и т.п. Я поматерившись написал для себя библиотечку. Там на каждую коллекцию Foo в стиле STL или System.Collection.Generic приходится интерфейс IFooReader, иммутабельный класс Foo и мутабельный FooBuilder. Так вот: FooBuilder как правило в общем и целом повторяет Foo и STL, зато Foo из моей библиотечки изменить нельзя, потому параметры методов у меня будут типа Foo. Если есть FooBuilder — то никогда не долго вызвать у него Build. Зато если уже есть Foo, и надо передать его ещё куда-то, то получается положительный побочный эффект в виде экономии числа копирований. Это уж не говоря о том, что Foo можно использовать в качестве ключа словаря или спокойно создавать множество Foo. Вообще, библиотечка вроде как внутрикорпоративная, но если начальство разрешит, то могу её сделать более открытой
... << RSDN@Home 1.2.0 alpha rev. 672>>
Re[11]: Раннее знакомство с Java калечит судьбы программисто
От: FR  
Дата: 29.01.08 14:59
Оценка:
Здравствуйте, sndanil, Вы писали:

S>Unicode?


wstring, wfstream
Re[11]: Раннее знакомство с Java калечит судьбы программисто
От: FR  
Дата: 29.01.08 15:09
Оценка:
Здравствуйте, konsoletyper, Вы писали:

K>Короче, необходимость делать аннотацию типа iter меня убивает. Конечно, можно свалить всю вину на C++, но и разработчики STL могли бы учесть... Ещё один пункт: много приходилось трахаться с std::map. Хотят пример тут не приведу, т.к. с STL дааавно не работал, но воспоминания остались нехорошие.


лечится typedef.
Вообще boost::range (http://www.boost.org/libs/range/doc/intro.html) конечно намного симпатичней чем пары итераторов.
Re[6]: Раннее знакомство с Java калечит судьбы программистов
От: SergH Россия  
Дата: 29.01.08 15:26
Оценка:
Здравствуйте, FR, Вы писали:

FR>Присваивание в Схеме есть.


(set! x y) ?
ну да, но этим стараются не пользоваться по возможности.

FR>Указателей нет, но есть списки, и за умение правильно с ними работать и понимать как они устроены, по моему отвечает та же часть мозга которая используется для работы с указателями


Делай что должно, и будь что будет
Re[7]: Раннее знакомство с Java калечит судьбы программистов
От: FR  
Дата: 29.01.08 15:50
Оценка:
Здравствуйте, SergH, Вы писали:

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


FR>>Присваивание в Схеме есть.


SH>(set! x y) ?


Угу

SH>ну да, но этим стараются не пользоваться по возможности.


Да хороший тон в схеме писать в функциональном стиле. Но никто не запрещает писать и императивно.
Я думаю схема очень хороший вариант для первого языка. И вообще для первоначального обучения по моему полезен любой язык для использования которого надо прилагать хоть какие-то умственные усилия, я вот например начинал с кодов для программируемого микрокалькультора
Re[13]: Раннее знакомство с Java калечит судьбы программисто
От: Pavel Dvorkin Россия  
Дата: 30.01.08 06:04
Оценка:
Здравствуйте, sndanil, Вы писали:

S>я тебя поздравляю с тем что ты победил самомго себя ... твой пример у меня не заработал ... ты доказал все бесперспективность твоего подхода


Ничего себе! У тебя он не заработал, из чего следует, что мой подход бесперспективный. Вопрос — а является ли бесперспективным все, что у тебя не хочет работать ?

S>ЗЫ: создал в 2005 студии проект вин32 консоль и вставил туда твой пример ... откомпилил ... запустил, че-то оно делало, при этом долгое время выдавая вопросы на консоль ... потом я это вырубил


Ну и аргументация. Во-первых, нет там никаких вопросов в тексте программы. И если уж вопросы выдавались, то можно было бы хоть один привести.

А во-вторых, если там и есть какая-то ошибка (я не бог, мог допустить), то можно было бы элементарно протрассировать и сказать, что не так.
With best regards
Pavel Dvorkin
Re[11]: Раннее знакомство с Java калечит судьбы программисто
От: Pavel Dvorkin Россия  
Дата: 30.01.08 06:18
Оценка:
Здравствуйте, konsoletyper, Вы писали:

K>
K>for (list<pair<foo, bar>>::iterator iter = v.begin(); iter != v.end(); ++iter)
K>


K>Короче, необходимость делать аннотацию типа iter меня убивает.


Может, я чего-то не понял, но чем это отличается от

IEnumerator en = collection.GetEnumerator();
while (en.MoveNext()) // do something


ИМХО только тем, что вместо явного указания !=v.end() мы пишем "пока есть"

K>Кстати, я сейчас всё более склоняюсь к тому, что все эти коллекции а-ля STL сдизайнены неправильно. Например, если методу класса передаётся коллекция, которую он должен где-то внутри класса сохранить, то эту коллекцию (за исключением тех ситуаций, когда и так приемлемо) в целях сохранения инкапсуляции придётся копировать явно.


Вот это серьезный вопрос, но дело здесь не в неправильности. Кто будет собственником этой коллекции ? Иными словами, если класс должен ее сохранить, должен ли он ее уничтожить при своем уничтожении, т.е. в своем деструкторе ? Тут три подхода возможны

1. При передаче классу коллекции (да и не коллекции, чего угодно) он ее забирает в собственность. Если надо — делайте копии себе до передачи.
2. При передаче классу коллекции он сам делает ее копию, а вашу коллекцию не трогает.
3. Расшаривание со счетчиком ссылок.

Все три подхода ИМХО имеют право на существование.
With best regards
Pavel Dvorkin
Re[10]: Раннее знакомство с Java калечит судьбы программисто
От: Pavel Dvorkin Россия  
Дата: 30.01.08 06:59
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Здравствуйте, Pavel Dvorkin, Вы писали:


PD>>P.S. Задачу, подобную этой , я студентам даю в качестве упражнения по memory-mapped файлам.


А> Павел, вы плохим вещам бедных наивных деток учите.


Да вроде пока никто не жаловался

А> Если задача стоит так, что требуется максимальная скорость доступа к записи с произвольным номером, то что из этого следует? Из этого следует, что файл должен быть организован так, что произвольный доступ стоил бы O(1). Точка.


Точка не проходит по очень простой причине. Дано : текстовый файл. И точка. Вот если у меня будет право самому выбрать структуру данных — разговор будет иной. А в этой задаче такого права мне не дано.

А>Если скорость принципиальна, то за использование плоского текстового файла надо карать жестоко


И бога ради, но при условии, что я в состоянии на это повлиять.

Вот ситуация, с которой я реально имел дело.

Заказчик дал мне CSV файл размером в 100 Мб примерно. Полей в каждой строке примерно 10. Мне надо было отсортировать его по каждому полю, т.е. иметь доступ к строкам этого файла сначала упорядоченно по первому полю, потом по второму и т.д. Дело было 5 лет назад, на машине не то 512, не то 256 Мб памяти.

Я что, должен был заказчику сказать, чтобы он мне в ином формате эти данные представил, уже отсортированные ?
With best regards
Pavel Dvorkin
Re[14]: Раннее знакомство с Java калечит судьбы программисто
От: sndanil Россия  
Дата: 30.01.08 07:01
Оценка:
Здравствуйте, Pavel Dvorkin, Вы писали:

S>>я тебя поздравляю с тем что ты победил самомго себя ... твой пример у меня не заработал ... ты доказал все бесперспективность твоего подхода


PD>Ничего себе! У тебя он не заработал, из чего следует, что мой подход бесперспективный. Вопрос — а является ли бесперспективным все, что у тебя не хочет работать ?


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

PD>Ну и аргументация. Во-первых, нет там никаких вопросов в тексте программы. И если уж вопросы выдавались, то можно было бы хоть один привести.


да пожалуйста, вот они

????????????????????????????????????????????????????????????????????????????????????????????????????????????????


хватит?

PD>А во-вторых, если там и есть какая-то ошибка (я не бог, мог допустить), то можно было бы элементарно протрассировать и сказать, что не так.


это именно тот яркий пример о котором тебе уже не раз говорили, в такой тривиальной задаче как чтение текста из файлы ты предлагашь трассировать ...
так вот зачем писать тривиальный код в котором ты можешь допустить ошибку? в моем примере много ошибок можно допустить? а в примере IT?
Re[12]: Раннее знакомство с Java калечит судьбы программисто
От: konsoletyper Россия https://github.com/konsoletyper
Дата: 30.01.08 07:03
Оценка:
Здравствуйте, Pavel Dvorkin, Вы писали:

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


K>>
K>>for (list<pair<foo, bar>>::iterator iter = v.begin(); iter != v.end(); ++iter)
K>>


K>>Короче, необходимость делать аннотацию типа iter меня убивает.


PD>Может, я чего-то не понял, но чем это отличается от


PD>IEnumerator en = collection.GetEnumerator();

PD>while (en.MoveNext()) // do something


PD>ИМХО только тем, что вместо явного указания !=v.end() мы пишем "пока есть"


Напоминаю: в C# есть foreach, а начиная с версии 2.0 — yield. А в C# 3.0 можно писать вот так:

var en = collection.GetEnumerator();


Кстати, ещё одно чисто языковое ограничение: после юзания вложенных функций с замыканиями и лямбд STL-ные функторы юзать вообще не хочется.

K>>Кстати, я сейчас всё более склоняюсь к тому, что все эти коллекции а-ля STL сдизайнены неправильно. Например, если методу класса передаётся коллекция, которую он должен где-то внутри класса сохранить, то эту коллекцию (за исключением тех ситуаций, когда и так приемлемо) в целях сохранения инкапсуляции придётся копировать явно.


PD>Вот это серьезный вопрос, но дело здесь не в неправильности. Кто будет собственником этой коллекции ? Иными словами, если класс должен ее сохранить, должен ли он ее уничтожить при своем уничтожении, т.е. в своем деструкторе ? Тут три подхода возможны


Какие деструкторы?

PD>1. При передаче классу коллекции (да и не коллекции, чего угодно) он ее забирает в собственность. Если надо — делайте копии себе до передачи.


Какая собственность? Как у value может быть собственник? Кому принадлежит 1, 2, 3, 42?

PD>2. При передаче классу коллекции он сам делает ее копию, а вашу коллекцию не трогает.


Какие копии? value не копируют? Где это видано, чтобы было 2 разные единицы, 5 разных восьмёрок?

PD>3. Расшаривание со счетчиком ссылок.


Вот это тема. Можно ещё и GC. Только пофигу. Значения не создают, они есть. Вот есть 1. Я могу это значение записать средствами языка. А есть множество. Пустое множество я тоже могу записать — Set<T>.Empty. А имея множества a и b и элемент e можно записать и такие множества: a | b, a & b, a — b, a.Add(e), a.Remove(e). Где здесь что-то уничтожается или создаётся?

PD>Все три подхода ИМХО имеют право на существование.


Да нет, не все. ИМХО, там где думаю на таком уровне абстракции, чтобы юзать предложенный подход, деструкторам не место.
... << RSDN@Home 1.2.0 alpha rev. 672>>
Re[13]: Раннее знакомство с Java калечит судьбы программисто
От: FR  
Дата: 30.01.08 07:21
Оценка:
Здравствуйте, konsoletyper, Вы писали:

K>Кстати, ещё одно чисто языковое ограничение: после юзания вложенных функций с замыканиями и лямбд STL-ные функторы юзать вообще не хочется.


Re[11]: Раннее знакомство с Java калечит судьбы программисто
От: rameel https://github.com/rsdn/CodeJam
Дата: 30.01.08 08:27
Оценка:
Здравствуйте, Pavel Dvorkin, Вы писали:

PD>Заказчик дал мне CSV файл размером в 100 Мб примерно. Полей в каждой строке примерно 10. Мне надо было отсортировать его по каждому полю, т.е. иметь доступ к строкам этого файла сначала упорядоченно по первому полю, потом по второму и т.д. Дело было 5 лет назад, на машине не то 512, не то 256 Мб памяти.


И конечно же время было самим узким местом?
... << RSDN@Home 1.2.0 alpha rev. 788 >>
Re[15]: Раннее знакомство с Java калечит судьбы программисто
От: Pavel Dvorkin Россия  
Дата: 30.01.08 09:06
Оценка:
Здравствуйте, sndanil, Вы писали:


S>

S>????????????????????????????????????????????????????????????????????????????????????????????????????????????????


S>хватит?


Нет, не хватит. Дело в том, что в моей программе вывод закомментирован. Вот здесь

http://rsdn.ru/forum/message/2811970.1.aspx
Автор: Pavel Dvorkin
Дата: 25.01.08


Ну а если ты хочешь его декомментировать и выводить все 12 млн символов — жди


S>это именно тот яркий пример о котором тебе уже не раз говорили, в такой тривиальной задаче как чтение текста из файлы ты предлагашь трассировать ...


Я так полагаю, что при разработке класса StreamReader его тоже трассировали, нет ?

S>так вот зачем писать тривиальный код в котором ты можешь допустить ошибку? в моем примере много ошибок можно допустить? а в примере IT?


А затем, чтобы он с нормальной скоростью работал.

Я все же жду от тебя код, который читает 12 Мб файл за 0.015 сек . На C#. С использованием чего угодно, кроме unmanaged code.
With best regards
Pavel Dvorkin
Re[12]: Раннее знакомство с Java калечит судьбы программисто
От: Pavel Dvorkin Россия  
Дата: 30.01.08 09:09
Оценка:
Здравствуйте, rameel, Вы писали:

R>Здравствуйте, Pavel Dvorkin, Вы писали:


PD>>Заказчик дал мне CSV файл размером в 100 Мб примерно. Полей в каждой строке примерно 10. Мне надо было отсортировать его по каждому полю, т.е. иметь доступ к строкам этого файла сначала упорядоченно по первому полю, потом по второму и т.д. Дело было 5 лет назад, на машине не то 512, не то 256 Мб памяти.


R>И конечно же время было самим узким местом?


В данной задаче как раз не время, а память.
With best regards
Pavel Dvorkin
Re[13]: Раннее знакомство с Java калечит судьбы программисто
От: Pavel Dvorkin Россия  
Дата: 30.01.08 09:19
Оценка:
Здравствуйте, konsoletyper, Вы писали:

K>Напоминаю: в C# есть foreach, а начиная с версии 2.0 — yield. А в C# 3.0 можно писать вот так:


Ну а в C++ нет foreach, так что при разработке STL на foreach никак нельзя было рассчитывать.

PD>>Вот это серьезный вопрос, но дело здесь не в неправильности. Кто будет собственником этой коллекции ? Иными словами, если класс должен ее сохранить, должен ли он ее уничтожить при своем уничтожении, т.е. в своем деструкторе ? Тут три подхода возможны


K>Какие деструкторы?


Обыкновенные деструкторы в С++. Мы же вроде STL обсуждали, а она на С++, а в нем они есть.

PD>>1. При передаче классу коллекции (да и не коллекции, чего угодно) он ее забирает в собственность. Если надо — делайте копии себе до передачи.


K>Какая собственность? Как у value может быть собственник? Кому принадлежит 1, 2, 3, 42?


Так, теперь я не понимаю. Ты вот это писал

>если методу класса передаётся коллекция, которую он должен где-то внутри класса сохранить, то эту коллекцию (за исключением тех ситуаций, когда и так приемлемо) в целях сохранения инкапсуляции придётся копировать явно.


Коллекций явно в C++ нет, есть, к примеру, список. Если этот список передать в другой класс, который будет его сохранять, то ... 3 моих варианта.

При чем тут какие-то 1, 2, 3, 42?


PD>>2. При передаче классу коллекции он сам делает ее копию, а вашу коллекцию не трогает.


K>Какие копии? value не копируют? Где это видано, чтобы было 2 разные единицы, 5 разных восьмёрок?


Ничего не понимаю. Какие такие value в C++ ?

PD>>3. Расшаривание со счетчиком ссылок.


K>Вот это тема. Можно ещё и GC. Только пофигу. Значения не создают, они есть. Вот есть 1. Я могу это значение записать средствами языка. А есть множество. Пустое множество я тоже могу записать — Set<T>.Empty. А имея множества a и b и элемент e можно записать и такие множества: a | b, a & b, a — b, a.Add(e), a.Remove(e). Где здесь что-то уничтожается или создаётся?



PD>>Все три подхода ИМХО имеют право на существование.


K>Да нет, не все. ИМХО, там где думаю на таком уровне абстракции, чтобы юзать предложенный подход, деструкторам не место.


Слушай,ИМХО разговор какой-то бессмысленный или мы говорим о разных совсем вещах. Ты начинаешь с критики STL, она на С++, а потом вдруг утверждаешь, что деструкторам там не место. Может, на высотах абстракции им там и не место, но в С++ они есть и это факт.
With best regards
Pavel Dvorkin
Re[11]: Раннее знакомство с Java калечит судьбы программисто
От: Pavel Dvorkin Россия  
Дата: 30.01.08 09:48
Оценка:
Здравствуйте, konsoletyper, Вы писали:

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


K>Вот именно в этом и заключается корень Ваших заблуждений. Дело в том, что далеко не всегда нужно бить на строчки 12Гб файл. Чаще всего точно известно, что данной программе никто и никогда не подсунет файл больше 50К (а если и подсунет, тормозить, будет что-нибудь другое, да так, что мало не покажется).


Вот с этим могу и согласиться. Если это действительно точно известно — да. В конце концов не надо ничего до абсурда доводить — файл из 10 строчек как ни читай, все равно будет одно и то же. Но...

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

>Конечно, бывают исключительные ситуации. Но фреймворки для того и создаются, чтобы покрывать 99% тех случаев, на которые они расчитаны. А вот как раз то, что в System.IO куча классов — очень либерально со стороны фреймворка. Потому что при наличии подобной специфической задачи мы не станем юзать другой фреймворк или писать свой велосипед, а заюзаем TextReader или даже Stream, в зависимости от того, насколько низкоуровневым должно быть решение.


K>А делать решение-на-все-случаи жизни — это заведомо неправильный путь,


Именно! Полностью согласен. Если бы эти методы использовались с анализом их применимости (т.е что они попадают в 99%, а не в 1%) — я бы не возражал. Если в файле 10 строк, я тоже игру с mmf устраивать не буду — из пушки по воробьям. Но , увы, я вижу, что для многих (может, не для тебя) никакой анализ применимости попросту не нужен. Есть класс, есть метод — бери. И запустит он TextReader и прочее для парсинга 100 Мб файла, и потратит 300 Мб памяти, и скажет, что так и должно быть. Потому что думать сам он не умеет и не хочет.

>потому что дав адекватное средство для решения задач меньшинства, мы заставим матерясь срывать сроки большинство.


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

Все же, ответь мне на вопрос, который я уже в десятый раз задаю. Как на C# сделать просмотр текстового файла в 12 Мб за 0.015 сек ? Ладно, пусть это 1%, пусть даже 0.01%, но вот несчастный я такой, попала моя задача в эти 0.01%, и времени больше нет, и памяти больше нельзя использовать ?
With best regards
Pavel Dvorkin
Re[14]: Раннее знакомство с Java калечит судьбы программисто
От: konsoletyper Россия https://github.com/konsoletyper
Дата: 30.01.08 09:50
Оценка:
Здравствуйте, Pavel Dvorkin, Вы писали:

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


K>>Напоминаю: в C# есть foreach, а начиная с версии 2.0 — yield. А в C# 3.0 можно писать вот так:


PD>Ну а в C++ нет foreach, так что при разработке STL на foreach никак нельзя было рассчитывать.


Вот я и говорю: один из недостатков STL — отсутствие поддержки со стороны языка. Я именно на этот факт и делал акцент.

Кстати, в C# всё равно есть преимущество: не надо юзать вложенный класс при аннотации типа — меньше писанины.

K>>Какие деструкторы?


PD>Обыкновенные деструкторы в С++. Мы же вроде STL обсуждали, а она на С++, а в нем они есть.


Мы обсуждали не STL, а коллекции вообще. Но даже если и так, в C++ от деструкторов можно отказаться. Для этого есть умные указатели. А умельцы даже прикручивают к нему GC.

PD>Коллекций явно в C++ нет, есть, к примеру, список. Если этот список передать в другой класс, который будет его сохранять, то ... 3 моих варианта.


PD>При чем тут какие-то 1, 2, 3, 42?


При том, что я поделился идеей, которую применил в собственной библиотеке. Мы ведь идею обсуждаем? Ну так вот, как я говорил, есть интерфейс IFooReader, классы Foo и FooBuilder. Foo — это наглая эмуляция value-семантики в рамках ОО. Так вот, "экземпляры" класс Foo (на самом деле правильно говорить значения типа Foo) — это такие же метафизические сущности, как и 1, 2, 3, 42. Ну нельзя создать 10 троек (разве что в каких нибудь смолтоках и прочих). Тройка — одна. Её нельзя ни создать, ни уничтожить. Список списков [[1, 2], [9,8], [42, 64]] — тоже нельзя ни создать не уничтожить. В частности, нельзя создать два таких списка. Он один. Можно связать этот список с несколькими именами. Физически, да, может быть хоть 10 списков, но никакой разницы (если явно не проверять object.ReferenceEquals) между ними нету.

PD>Ничего не понимаю. Какие такие value в C++ ?


Их можно эмулировать.

PD>>>3. Расшаривание со счетчиком ссылок.


K>>Да нет, не все. ИМХО, там где думаю на таком уровне абстракции, чтобы юзать предложенный подход, деструкторам не место.


PD>Слушай,ИМХО разговор какой-то бессмысленный или мы говорим о разных совсем вещах. Ты начинаешь с критики STL, она на С++, а потом вдруг утверждаешь, что деструкторам там не место. Может, на высотах абстракции им там и не место, но в С++ они есть и это факт.


Как я уже говорил, в том же C++ можно обходиться без деструкторов.
... << RSDN@Home 1.2.0 alpha rev. 672>>
Re[14]: Раннее знакомство с Java калечит судьбы программисто
От: konsoletyper Россия https://github.com/konsoletyper
Дата: 30.01.08 09:50
Оценка:
Здравствуйте, FR, Вы писали:

K>>Кстати, ещё одно чисто языковое ограничение: после юзания вложенных функций с замыканиями и лямбд STL-ные функторы юзать вообще не хочется.


FR>


Что-то не понял. Это улыбка в знак поддержки? Или я перепутал, и функторы — в бусте, а не в STL?
... << RSDN@Home 1.2.0 alpha rev. 672>>
Re[12]: Раннее знакомство с Java калечит судьбы программисто
От: konsoletyper Россия https://github.com/konsoletyper
Дата: 30.01.08 10:10
Оценка:
Здравствуйте, Pavel Dvorkin, Вы писали:

PD>Вот с этим могу и согласиться. Если это действительно точно известно — да. В конце концов не надо ничего до абсурда доводить — файл из 10 строчек как ни читай, все равно будет одно и то же. Но...


PD>при условии, что это не будет делаться в цикле


Смотря какой цикл и что ещё в нём делается.

PD>при условии. что можно быть уверенным в том. что он никогда не начнет сильно расти...


Условие редкое. Я про это писал.

PD>Именно! Полностью согласен. Если бы эти методы использовались с анализом их применимости (т.е что они попадают в 99%, а не в 1%) — я бы не возражал.


Ну дык. Думаю, тот же IT делает анализ применимости. Вася Пупкин, который полгода назад открыл для себя способ рисовать формочки в Делфях такого анализа не делает. Но внимание! Вася Пупкин и в C++ и STL наворотит такого (свинья везде грязь найдёт). Ну так вот: ради профессионалов вроде IT и проектируются фреймворки, чтобы они могли меньше времени тратить на вещи, которые не критичны (предполагается, что как специалисты, они могут выделить такие ситуации). Что же до ВП — всем пофигу, т.к. ВП спасёт не супермощный фреймворк, а супеполезные книжки.

PD> Если в файле 10 строк, я тоже игру с mmf устраивать не буду — из пушки по воробьям. Но, увы, я вижу, что для многих (может, не для тебя) никакой анализ применимости попросту не нужен. Есть класс, есть метод — бери. И запустит он TextReader и прочее для парсинга 100 Мб файла, и потратит 300 Мб памяти, и скажет, что так и должно быть. Потому что думать сам он не умеет и не хочет.


Ну, я думаю, и в C++ных библиотеках немало граблей, на которые гипотетический ВП может наступить и истратить 300Мб памяти и заставить работать прогу сутками.

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


Именно про то я и говорю. Как раз .NET Framework спроектирован по данному принципу. Не нравятся "высокоуровневые" TextReader, File и т.п., можно юзать Stream. Если слишком много проблем с ручной работой со Stream — BinaryReader тут как тут. Надо буферизацию сделать — нет ничего проще: оборачиваем Stream в BufferedStream.

PD>Все же, ответь мне на вопрос, который я уже в десятый раз задаю. Как на C# сделать просмотр текстового файла в 12 Мб за 0.015 сек ? Ладно, пусть это 1%, пусть даже 0.01%, но вот несчастный я такой, попала моя задача в эти 0.01%, и времени больше нет, и памяти больше нельзя использовать ?


Не знаю, насколько это критично. М.б. не подходит вообще для данной задачи C# (как не подходит, например, для написания драйверов видюх, хотя...). Тут всё зависит от. Будем ли мы писать универсальную функцию для всех кодировок, или нам заранее известна кодировка? Будем ли мы юзать StringBuilder и List, или сами изобретём более быстрый велосипед (в котором, например, Clear не будет физически обращать в 0 всю коллекцию). Надо ли нам возвращать string[], или достаточно будет вернуть буфер и список пар — (начальный индекс, конечный индекс). И т.д.
... << RSDN@Home 1.2.0 alpha rev. 672>>
Re[15]: Раннее знакомство с Java калечит судьбы программисто
От: Pavel Dvorkin Россия  
Дата: 30.01.08 10:10
Оценка:
Здравствуйте, konsoletyper, Вы писали:

K>Вот я и говорю: один из недостатков STL — отсутствие поддержки со стороны языка. Я именно на этот факт и делал акцент.


Нет, акцент (по крайней мере в том месте, на которое я возразил, был насчет имеенно того, как там итерация делается.

>Когда надо пройтись по коллекции, пишут что-то вроде:

for (list<pair<foo, bar>>::iterator iter = v.begin(); iter != v.end(); ++iter)
Короче, необходимость делать аннотацию типа iter меня убивает.

Вот на это я и возразил сл своим примером с IEnumeraеtor. И только.

K>Мы обсуждали не STL, а коллекции вообще. Но даже если и так, в C++ от деструкторов можно отказаться. Для этого есть умные указатели. А умельцы даже прикручивают к нему GC.


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

PD>>Коллекций явно в C++ нет, есть, к примеру, список. Если этот список передать в другой класс, который будет его сохранять, то ... 3 моих варианта.


PD>>При чем тут какие-то 1, 2, 3, 42?


K>При том, что я поделился идеей, которую применил в собственной библиотеке. Мы ведь идею обсуждаем? Ну так вот, как я говорил, есть интерфейс IFooReader, классы Foo и FooBuilder. Foo — это наглая эмуляция value-семантики в рамках ОО. Так вот, "экземпляры" класс Foo (на самом деле правильно говорить значения типа Foo) — это такие же метафизические сущности, как и 1, 2, 3, 42. Ну нельзя создать 10 троек (разве что в каких нибудь смолтоках и прочих). Тройка — одна. Её нельзя ни создать, ни уничтожить. Список списков [[1, 2], [9,8], [42, 64]] — тоже нельзя ни создать не уничтожить. В частности, нельзя создать два таких списка. Он один. Можно связать этот список с несколькими именами. Физически, да, может быть хоть 10 списков, но никакой разницы (если явно не проверять object.ReferenceEquals) между ними нету.


Насколько я понял, ты делаешь нечто свое, не в рамках того, о чемя подумал. Вполне допускаю, что ты прав, судить не могу, так как не видел, а по пяти строчкам объяснения судить не буду. Но все это никак не отменяет традиционного

K>Как я уже говорил, в том же C++ можно обходиться без деструкторов.


Теоретически, может быть, и можно (и то не уверен), а практически — зачем ? Если мне не нужны счетчики ссылок и GC, почему их не использовать ? В конце концов , деструктор — просто специфическая функция...
With best regards
Pavel Dvorkin
Re[15]: Раннее знакомство с Java калечит судьбы программисто
От: CreatorCray  
Дата: 30.01.08 10:30
Оценка:
Здравствуйте, <Аноним>, Вы писали:

А> Интересно, этот маленький смешной человечек, проявивший просто предельную неадекватность, собрался тут поучать *меня*? Ржунимагу!

Ты б хоть представился...
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re[10]: Раннее знакомство с Java калечит судьбы программисто
От: SergH Россия  
Дата: 30.01.08 10:54
Оценка:
Здравствуйте, CreatorCray, Вы писали:

CC>Если поставить С# и С++ в одинаковое положение просто сравняв возможности библ, которые идут с ними "по умолчанию" то окажется что разница то между ними в колве кода совсем маленькая.


но ведь по факту библиотеки не равны
кроме того, некоторые встроенные возможности C# С++ может только с трудом эмулировать.
Делай что должно, и будь что будет
Re[14]: Раннее знакомство с Java калечит судьбы программисто
От: konsoletyper Россия https://github.com/konsoletyper
Дата: 30.01.08 11:07
Оценка:
Здравствуйте, SergH, Вы писали:

K>>.. Но внимание! Вася Пупкин и в C++ и STL наворотит такого (свинья везде грязь найдёт)..


SH>С++ отличается тем, что вероятность написать на нём неработающую программу выше Т.е. на С++ Вася не наворотит — оно падать будет, это заставит его более плотно изучить предмет и именно так, в принудительном порядке, пойдёт процесс обучения.


Тогда надо заставлять Васю Пупкина писать на Хаскелле. Пока он разберётся, как хоть что-нибудь написать, он пройдёт процесс обучения.

А вообще, ставить вопрос "учить ли Яве или нет" некорректно. Учить. Можно даже выбрать её как первый язык. Но учить надо вообще разным вещам. Ведь программиста учат ещё и матекматике, физике, философии, наконец. Так почему по профильным дисциплинам должная фигурировать только Ява?
... << RSDN@Home 1.2.0 alpha rev. 672>>
Re[16]: Раннее знакомство с Java калечит судьбы программисто
От: konsoletyper Россия https://github.com/konsoletyper
Дата: 30.01.08 11:07
Оценка:
Здравствуйте, Pavel Dvorkin, Вы писали:

K>>Мы обсуждали не STL, а коллекции вообще. Но даже если и так, в C++ от деструкторов можно отказаться. Для этого есть умные указатели. А умельцы даже прикручивают к нему GC.


PD>Ну во-первых, умные указатели не панацея, а должны использоваться тогда, когда ни нужны. Использовать их везде и всегда — способ сделать программу непонимаемой, и только. Во-вторых, можно, конечно, перенести уничтожение многого в Release, но это не значит, что тем самым избавишься от деструкторов.


Я пишу на C# и стараюсь избавиться от IDiposable и финализаторов везде, где возможно. Если пишу интероп, то организую пул unmanaged-объектов и т.п. Т.е. оставляю явное управление ресурсами там, где это действительно необходимо.

PD>Насколько я понял, ты делаешь нечто свое, не в рамках того, о чемя подумал. Вполне допускаю, что ты прав, судить не могу, так как не видел, а по пяти строчкам объяснения судить не буду. Но все это никак не отменяет традиционного


Традиционное не отменяется — есть ListBuilder, SetBuilder, MapBuilder — полностью аналогичные std::vector, std::set, std::map. Если ситуация специфическая и мы должны юзать деструкторы — то можно использовать только эти классы. Если же мы остаёмся в рамках автоматического управления ресурсами, то получаем бонус в виде List, Set, Map.

K>>Как я уже говорил, в том же C++ можно обходиться без деструкторов.


PD>Теоретически, может быть, и можно (и то не уверен), а практически — зачем ? Если мне не нужны счетчики ссылок и GC, почему их не использовать ? В конце концов , деструктор — просто специфическая функция...


Ну а там, где без них никак? Какая-нибудь трёхэтажная алгоритмика, где передаётся список MultiMap-ов с Set-ов на List'ы?
... << RSDN@Home 1.2.0 alpha rev. 672>>
Re[17]: Раннее знакомство с Java калечит судьбы программисто
От: Pavel Dvorkin Россия  
Дата: 30.01.08 11:31
Оценка:
Здравствуйте, konsoletyper, Вы писали:

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


K>Я пишу на C# и стараюсь избавиться от IDiposable и финализаторов везде, где возможно. Если пишу интероп, то организую пул unmanaged-объектов и т.п. Т.е. оставляю явное управление ресурсами там, где это действительно необходимо.


Да бога ради, я же не говорю, что ты неправ. Тем более я не настолько уж специалиств C#, чтобы заявлять тут что-то...

K>Традиционное не отменяется — есть ListBuilder, SetBuilder, MapBuilder — полностью аналогичные std::vector, std::set, std::map. Если ситуация специфическая и мы должны юзать деструкторы — то можно использовать только эти классы. Если же мы остаёмся в рамках автоматического управления ресурсами, то получаем бонус в виде List, Set, Map.


Если действительно выложишь — напомни. Будет время (эх, если будет) — посмотрю. Любопытно.

K>Ну а там, где без них никак? Какая-нибудь трёхэтажная алгоритмика, где передаётся список MultiMap-ов с Set-ов на List'ы?


Вполне возможно, что в твоей системе классов это и есть лучшее решение
With best regards
Pavel Dvorkin
Re[11]: Раннее знакомство с Java калечит судьбы программисто
От: Pavel Dvorkin Россия  
Дата: 30.01.08 11:34
Оценка:
Здравствуйте, SergH, Вы писали:

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


SH>но ведь по факту библиотеки не равны

SH>кроме того, некоторые встроенные возможности C# С++ может только с трудом эмулировать.

А не наоборот ? Те же mmf, которые на С++ делаются элементарно, но C# можно только через PInvoke использовать, а потом непонятно. что с полученным указателем делать, так как бестиповый доступ к данным на C# противоречит его сути...
With best regards
Pavel Dvorkin
Re[12]: Раннее знакомство с Java калечит судьбы программисто
От: LaptevVV Россия  
Дата: 30.01.08 11:39
Оценка:
Здравствуйте, CreatorCray, Вы писали:

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


KP>>>Кстати, а что такое "до диез"?

LVV>>С# в музыкальной нотации называется До диез.
CC>Вы музыке учите или все таки программированию.
CC>Если программированию то извольте правильно называть то, чему учите.
А не подскажете, как перевести значок "решетка" на русский язык?
Или просто С-решетка говорить?
"С sharp" промпт перевел как "С острый" — это лучше?
На обложке книжки Павловской по С# изображен гитарный аккорд До диез...
Кстати, иногда его неверно называют Си-диез.
Хочешь быть счастливым — будь им!
Без булдырабыз!!!
Re[14]: Раннее знакомство с Java калечит судьбы программисто
От: SergH Россия  
Дата: 30.01.08 11:41
Оценка:
Здравствуйте, Pavel Dvorkin, Вы писали:

PD>Вообще-то он прямо сказал, что его не интересует, как оно там внутри устроено...


А после этого он ещё что-то про гигабайты говорил
Не, утверждение о том, что IT адекватен я рассматриваю как доказанное, я его живого лично видел

PD>Эх, если бы... Тогда я и говорить ничего не стал бы. Беда именно в том, что эти фреймворки ну прямо-таки как будто специально созданы для полупрофессионалов. Найди класс, найди метод — вперед.


Да. Но не понятно, как бы так сделать фреймворк, чтобы его только правильные люди использовали — он всем даёт преимущества, а "доброта" C# до времени скрывает ошибки, котрые сразу вылезли бы в C++. Хаскель, на самом деле, выход Его даже просто использовать — голову сломаешь.

PD>Это можно и без библиотек сделать. Помню втык, который я устроил одному студенту за транспонирование квадратной матрицы. Он для этого новую матрицу создал .

PD>Но вот для этого преподаватель и нужен. Чтобы сказал — так не делают, ищи решение получше. А когда перед глазами лишь фреймворк

PD>Matrix trans = mSrc.Transpose();


PD>то и ничего не скажешь. Хорошо, если там найдется метод, который на месте делает. Так ведь прямоугодьную матрицу на месте не транспонируешь, будут авторы FW специально этим частным случаем заниматься . Память сейчас не ресурс, new вам в руки и вперед, а старую матрицу со временем GC приберет


Зависит. При прочих равных, immutable объекты имеют кучу плюсов. Вот если в память не влезает или тормозит безбожно — тогда да, надо делать на месте. Но это резко снижает свободу использования такого объекта — на него нельзя отдавать куда угодно ссылки.

PD>И все же, как насчет 0.015 сек ? . Не выйдет ведь и со Stream. Потому что здесь вообще в/в неприменим, не даст он такой скорости даже на C++. Слишком много лишних действий.


Несложно найти задачу, с которой не справится и С. Потому что она без явного использования SSE2/3/4 не решается, а компилятор так оптимизить не умеет. Ну и что?
Делай что должно, и будь что будет
Re[15]: Раннее знакомство с Java калечит судьбы программисто
От: FR  
Дата: 30.01.08 11:44
Оценка:
Здравствуйте, konsoletyper, Вы писали:

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


K>>>Кстати, ещё одно чисто языковое ограничение: после юзания вложенных функций с замыканиями и лямбд STL-ные функторы юзать вообще не хочется.


FR>>


K>Что-то не понял. Это улыбка в знак поддержки? Или я перепутал, и функторы — в бусте, а не в STL?


Встретил собрата по несчастью
Re[12]: Раннее знакомство с Java калечит судьбы программисто
От: SergH Россия  
Дата: 30.01.08 11:46
Оценка:
Здравствуйте, Pavel Dvorkin, Вы писали:

PD>А не наоборот ?


yield, foreach, лямбды.
потоки, наконец.

PD>Те же mmf, которые на С++ делаются элементарно, но C# можно только через PInvoke использовать, а потом непонятно. что с полученным указателем делать, так как бестиповый доступ к данным на C# противоречит его сути...


mmf это же не встроенная возможность Это библиотека.
Но свобода обращения с данными чере указатели потеряна, согласен.
Делай что должно, и будь что будет
Re[14]: Раннее знакомство с Java калечит судьбы программисто
От: FR  
Дата: 30.01.08 12:01
Оценка:
Здравствуйте, Pavel Dvorkin, Вы писали:


PD>return File.ReadAllText("filename.ext").Split('\n')[n];


PD>Для меня тут несколько светофоров с красным светом поставлено. ReadAllText — это что, чтение целиком ? Куда ? В один буфер построчно ? Да нет, иначе какой потом Split ? Значит, в один буфер ? А это надо ? Зачем мне весь файл в память переводить, если одна строка нужна, хоть и последняя. Второй светофор — Split ? Он мне массив строк вернет ? Размер какой данных у этого массива ? Опять целый файл ? Да еще и выделение памяти на каждую строку. А строку как там делают ?


Тут конечно да все криво и в лоб но почти совпадающий с этим код вполне может все делать лениво ничего лишнего не выделяя, например на питоне:
print sum((1 for _ in file("input.txt")))
Re[15]: Раннее знакомство с Java калечит судьбы программисто
От: Pavel Dvorkin Россия  
Дата: 30.01.08 12:01
Оценка:
Здравствуйте, SergH, Вы писали:

SH>А после этого он ещё что-то про гигабайты говорил

SH>Не, утверждение о том, что IT адекватен я рассматриваю как доказанное,

Я не говорил, что он неадекватен

>я его живого лично видел


А это не доказательство

SH>Да. Но не понятно, как бы так сделать фреймворк, чтобы его только правильные люди использовали — он всем даёт преимущества,


И недостатки

>а "доброта" C# до времени скрывает ошибки, котрые сразу вылезли бы в C++.


Добрые мы все за чужой (заказчика) счет. Ох, добрые...


>Хаскель, на самом деле, выход Его даже просто использовать — голову сломаешь.





PD>>И все же, как насчет 0.015 сек ? . Не выйдет ведь и со Stream. Потому что здесь вообще в/в неприменим, не даст он такой скорости даже на C++. Слишком много лишних действий.


SH>Несложно найти задачу, с которой не справится и С. Потому что она без явного использования SSE2/3/4 не решается, а компилятор так оптимизить не умеет. Ну и что?


Это вообще-то не свойство C, а свойство компилятора.

Если компилятор не умеет генерировать некий набор команд, ну что же... Для SSE я, правда, не писал, только для MMX, лет 8 назад.


    _asm
    {
        mov        eax, 32768
        movd        mm5, eax
        psllq        mm5, 32
        movd        mm7, eax
        paddd        mm5, mm7


А как на C# ?
With best regards
Pavel Dvorkin
Re[13]: Раннее знакомство с Java калечит судьбы программисто
От: Pavel Dvorkin Россия  
Дата: 30.01.08 12:10
Оценка:
Здравствуйте, SergH, Вы писали:

SH>Здравствуйте, Pavel Dvorkin, Вы писали:


PD>>А не наоборот ?


SH>yield, foreach, лямбды.


Да, технические проблемы могут быть, но не фатально это.

SH>потоки, наконец.


А они куда девались ? _beginthreadex и т.д.

PD>>Те же mmf, которые на С++ делаются элементарно, но C# можно только через PInvoke использовать, а потом непонятно. что с полученным указателем делать, так как бестиповый доступ к данным на C# противоречит его сути...


SH>mmf это же не встроенная возможность Это библиотека.


Это не библиотека. Это базовый механизм Windows. Это то, что будет всегда в Windows при обращении к любому файлу любым способом. И вопрос лишь в том, сделаю ли это я сам явно (и потрачу при этом минимум времени и памяти) или это сделает Windows (кэш ФС, загрузка DLL и т.д.) и потратит сама вообще-то столько же, но вот я после этого еще добавлю на ввод/вывод как он в языке понимается
With best regards
Pavel Dvorkin
Re[16]: Раннее знакомство с Java калечит судьбы программисто
От: sndanil Россия  
Дата: 30.01.08 12:12
Оценка:
Здравствуйте, Pavel Dvorkin, Вы писали:

PD>Нет, не хватит. Дело в том, что в моей программе вывод закомментирован. Вот здесь

я запускал вариант где он был не закоментирован ..

PD>http://rsdn.ru/forum/message/2811970.1.aspx
Автор: Pavel Dvorkin
Дата: 25.01.08

вот как работает закоментированный вариант ...

Unhandled exception at 0x004114da in txt.exe: 0xC0000005: Access violation reading location 0x015d6000.

ты еще сам себя не убедил?
PD>Ну а если ты хочешь его декомментировать и выводить все 12 млн символов — жди

я направил твою программу на реальный текстовый файл ... вместо реально текста оно мне показывает вопросики, программа на шарпе при этом работала отлично ...

PD>Я так полагаю, что при разработке класса StreamReader его тоже трассировали, нет ?


возможно, самое главное — это делал не я и мне это уже не придется делать ...

S>>так вот зачем писать тривиальный код в котором ты можешь допустить ошибку? в моем примере много ошибок можно допустить? а в примере IT?

PD>А затем, чтобы он с нормальной скоростью работал.

протрахаться с трасировкой, что бы программа работала не 0.1с, а 0.01с. и так каждый раз когда нужно прочитать текстовый файл? ... ибо я уверен, что ты не первый раз пишешь чтение из текстового файла ...

PD>Я все же жду от тебя код, который читает 12 Мб файл за 0.015 сек . На C#. С использованием чего угодно, кроме unmanaged code.


очень хотелось сначала получить работающий пример на С++/С
ну а пока трассируешь, можешь еще и вот этот пример из мсдн-а проверить

        using (FileStream fs = File.OpenRead(path)) 
        {
            byte[] b = new byte[1024];
            UTF8Encoding temp = new UTF8Encoding(true);
            while (fs.Read(b,0,b.Length) > 0) 
            {
                Console.WriteLine(temp.GetString(b));
            }
        }
Re[16]: Раннее знакомство с Java калечит судьбы программисто
От: SergH Россия  
Дата: 30.01.08 12:12
Оценка:
Здравствуйте, Pavel Dvorkin, Вы писали:

PD>Это вообще-то не свойство C, а свойство компилятора.


Ну так и "Слишком много лишних действий" не свойство C#.

PD>Если компилятор не умеет генерировать некий набор команд, ну что же... Для SSE я, правда, не писал, только для MMX, лет 8 назад.


PD>
PD>    _asm
PD>    {
PD>        mov        eax, 32768
PD>        movd        mm5, eax
PD>        psllq        mm5, 32
PD>        movd        mm7, eax
PD>        paddd        mm5, mm7                

PD>


PD>А как на C# ?


По той же схеме. Пишем COM-компонент на С++ и используем его из C#.
Делай что должно, и будь что будет
Re[15]: Раннее знакомство с Java калечит судьбы программисто
От: Pavel Dvorkin Россия  
Дата: 30.01.08 12:15
Оценка:
Здравствуйте, FR, Вы писали:

FR>Тут конечно да все криво и в лоб но почти совпадающий с этим код вполне может все делать лениво ничего лишнего не выделяя, например на питоне:

FR>
FR>print sum((1 for _ in file("input.txt")))
FR>


Комментировать не могу, ибо со змеенышем не знаком, но ИМХО опять-таки не мешало бы знать детали реализации. Если реализация "правильная" — почему бы и нет ?
With best regards
Pavel Dvorkin
Re[14]: Раннее знакомство с Java калечит судьбы программисто
От: sndanil Россия  
Дата: 30.01.08 12:19
Оценка:
Здравствуйте, Pavel Dvorkin, Вы писали:

>>Вася Пупкин, который полгода назад открыл для себя способ рисовать формочки в Делфях такого анализа не делает. Но внимание! Вася Пупкин и в C++ и STL наворотит такого (свинья везде грязь найдёт).


PD>См. ответ SergH, мне нечего больше добавить.


тока не обижайся, но в моем случае ты и есть тот вася пупкин, ну не работает твоя программа
Re[14]: Раннее знакомство с Java калечит судьбы программисто
От: SergH Россия  
Дата: 30.01.08 12:19
Оценка:
Здравствуйте, Pavel Dvorkin, Вы писали:

SH>>потоки, наконец.


PD>А они куда девались ? _beginthreadex и т.д.


А это не свойство языка. Это библиотека.

Весь остальной язык на потоки не расчитан. В стандартной библиотеке кроме этих beginthreadex вообще ничего нет — ни средств синхронизации, ни средств общения потоков.

PD>Это не библиотека. Это базовый механизм Windows.


При чём здесь Windows??
А в юниксе? А на микроконтроллере?

Я писал именно про _встроенные_возможности_языка_ отвечая тов. CreatorCray, который предложил исключить их из рассмотрения.
С этой точки зрения плюсом С/С++ безусловно будет более простая интеграция с API существующих ОС. Это не удивительно, они все написаны именно в эпоху C. С# же компенсирует это более богатой стандартной библиотекой.
Делай что должно, и будь что будет
Re[17]: Раннее знакомство с Java калечит судьбы программисто
От: Pavel Dvorkin Россия  
Дата: 30.01.08 12:20
Оценка:
Здравствуйте, sndanil, Вы писали:

S>вот как работает закоментированный вариант ...

S>

S>Unhandled exception at 0x004114da in txt.exe: 0xC0000005: Access violation reading location 0x015d6000.


Дай текстовый файл. Можно и меньшего размера.
With best regards
Pavel Dvorkin
Re[15]: Раннее знакомство с Java калечит судьбы программисто
От: FR  
Дата: 30.01.08 12:24
Оценка:
Здравствуйте, sndanil, Вы писали:

S>тока не обижайся, но в моем случае ты и есть тот вася пупкин, ну не работает твоя программа


У меня кстати работала, но я что-то на автомате подправил, что не помню
Re[11]: Раннее знакомство с Java калечит судьбы программисто
От: CreatorCray  
Дата: 30.01.08 12:26
Оценка:
Здравствуйте, SergH, Вы писали:

CC>>Если поставить С# и С++ в одинаковое положение просто сравняв возможности библ, которые идут с ними "по умолчанию" то окажется что разница то между ними в колве кода совсем маленькая.

SH>но ведь по факту библиотеки не равны
Ну дык сравнивали вроде как языки а не библиотеки. Кроме того тут неподалеку было верно отмечено, что в случае если понадобится функционал, которого нет в библе то придется писать его самому и там и там.

SH>кроме того, некоторые встроенные возможности C# С++ может только с трудом эмулировать.

Ну, под разные задачи, в разное время созданные, с разным рантаймом.
Ждем выхода следующей ревизии С++.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re[17]: Раннее знакомство с Java калечит судьбы программисто
От: Pavel Dvorkin Россия  
Дата: 30.01.08 12:30
Оценка:
Здравствуйте, sndanil, Вы писали:


S>
S>        using (FileStream fs = File.OpenRead(path)) 
S>        {
S>            byte[] b = new byte[1024];
S>            UTF8Encoding temp = new UTF8Encoding(true);
S>            while (fs.Read(b,0,b.Length) > 0) 
S>            {
S>                Console.WriteLine(temp.GetString(b));
S>            }
S>        }
S>


Хм, а при чем тут UTF8 ? Я ведь программу писал для Юникода, а не для UTF8! Для того Юникода, в котором на каждый символ ровно по 2 байта, а в начале стоит FEFF. Естественно, на UTF8 я не рассчитывал.

Вот мой файл, проверь на нем. Он маленький, если хочешь, загрузи его в Notepad и увеличь путем Copy-Paste. Я из него таким образом делал пример1.txt.

http://files.rsdn.ru/187/%d0%9f%d1%80%d0%b8%d0%bc%d0%b5%d1%80.txt
With best regards
Pavel Dvorkin
Re[17]: Раннее знакомство с Java калечит судьбы программисто
От: Pavel Dvorkin Россия  
Дата: 30.01.08 13:00
Оценка:
Здравствуйте, sndanil, Вы писали:


S>
S>        using (FileStream fs = File.OpenRead(path)) 
S>        {
S>            byte[] b = new byte[1024];
S>            UTF8Encoding temp = new UTF8Encoding(true);
S>            while (fs.Read(b,0,b.Length) > 0) 
S>            {
S>                Console.WriteLine(temp.GetString(b));
S>            }
S>        }
S>


Может, он и из MSDN... Я его слегка модифицировал — вместо UTF8Encoding поставил UnicodeEncoding (это не принципиально, надеюсь ?) и в качестве файла взял пример.txt из трех строчек, о котором уже писал, длина его 56 байт
            using (FileStream fs = File.OpenRead("D:\\Пример2.txt"))
            {
                string s;
                int read;
                byte[] b = new byte[1024];
                UnicodeEncoding temp = new UnicodeEncoding();
                while ((read = fs.Read(b, 0, b.Length)) > 0)
                {
                    s = temp.GetString(b);
                    int len = s.Length;
                    Console.WriteLine(len);
                }
            }


read = 56, а len почему-то 512, цикл выполняется один раз. Я что-то не так делаю ?

И , кстати, маленький вопрос. Что здесь будет, если длина строки окажется больше 512 символов (1024 байт) ?
With best regards
Pavel Dvorkin
Re[17]: Раннее знакомство с Java калечит судьбы программисто
От: Pavel Dvorkin Россия  
Дата: 30.01.08 13:04
Оценка:
Здравствуйте, SergH, Вы писали:

PD>>А как на C# ?


SH>По той же схеме. Пишем COM-компонент на С++ и используем его из C#.


Ну спасибо. Я пару строчек на __asm минут за 10 напишу. А ты предлагаешь мне засесть за изучение COM (предположим, я его не знаю), да еще и на неизвестном мне (допустим) C++. На это минимум неделя — две понадобится, и это очень оптимистичная оценка.
With best regards
Pavel Dvorkin
Re[13]: Раннее знакомство с Java калечит судьбы программисто
От: CreatorCray  
Дата: 30.01.08 13:05
Оценка:
Здравствуйте, LaptevVV, Вы писали:

LVV>А не подскажете, как перевести значок "решетка" на русский язык?

переводить его не надо, названия не переводятся.
Более менее распространенные названия: решетка и диез
Но тогда уже "Си диез", но не "До диез"...

LVV>Или просто С-решетка говорить?

http://en.wikipedia.org/wiki/C_Sharp_%28programming_language%29
Поскольку это название языка программирования то называть его стоит так, как назвали авторы.
Кроме того следует помнить о compatibility с остальным сообществом.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re[15]: Раннее знакомство с Java калечит судьбы программисто
От: CreatorCray  
Дата: 30.01.08 13:05
Оценка:
Здравствуйте, SergH, Вы писали:

SH>Несложно найти задачу, с которой не справится и С. Потому что она без явного использования SSE2/3/4 не решается, а компилятор так оптимизить не умеет. Ну и что?

ICC 10.1.x ?
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re[17]: Раннее знакомство с Java калечит судьбы программисто
От: CreatorCray  
Дата: 30.01.08 13:05
Оценка:
Здравствуйте, SergH, Вы писали:

SH>По той же схеме. Пишем COM-компонент на С++ и используем его из C#.

И затраты на вызовы хавают почти весь выигрыш?
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re[15]: Раннее знакомство с Java калечит судьбы программисто
От: CreatorCray  
Дата: 30.01.08 13:05
Оценка:
Здравствуйте, SergH, Вы писали:

SH>Я писал именно про _встроенные_возможности_языка_ отвечая тов. CreatorCray, который предложил исключить их из рассмотрения.

Трудно отнести чтение файла построчно к встроенным возможностям языка. Это хэлпер.

SH>А в юниксе? А на микроконтроллере?

SH>С этой точки зрения плюсом С/С++ безусловно будет более простая интеграция с API существующих ОС. Это не удивительно, они все написаны именно в эпоху C. С# же компенсирует это более богатой стандартной библиотекой.
Которая нифига не переносима в полном объеме, если уж упоминали контроллеры и т.п. Потому как Windows Specific. Жалкую попытку порта под названием Mono — даже не упоминайте.
Впрочем и С++ стандартные библиотеки не везде могут быть реализованы.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re[15]: Раннее знакомство с Java калечит судьбы программисто
От: Pavel Dvorkin Россия  
Дата: 30.01.08 13:06
Оценка:
Здравствуйте, sndanil, Вы писали:

S>тока не обижайся, но в моем случае ты и есть тот вася пупкин, ну не работает твоя программа


Да зачем мне обижаться, если имеет место просто недоразумение UTF8 — Unicode. Конечно, не работает, ну не для этого типа файлов она сделана
With best regards
Pavel Dvorkin
Re[12]: Раннее знакомство с Java калечит судьбы программисто
От: SergH Россия  
Дата: 30.01.08 13:07
Оценка:
Здравствуйте, CreatorCray, Вы писали:

CC>Ну дык сравнивали вроде как языки а не библиотеки.


Сравнивали комплекс сущностей, доступный в ощущениях программисту при использовании языка. Библиотеки туда входят.

CC>Кроме того тут неподалеку было верно отмечено, что в случае если понадобится функционал, которого нет в библе то придется писать его самому и там и там.


Ну и что?

CC>Ну, под разные задачи, в разное время созданные, с разным рантаймом.


Отлично! Ты тоже с этим согласен. И я тоже считаю, что "под разные задачи, в разное время созданные". И считаю, что время изменилось и теперь задачи C# более актуальны. И что время C++ потихоньку уходит. И не понимаю, как ты, придерживаясь того же мнения можешь отстаивать преимущества С++.

Конечно, есть области, где C# отстанет. Но если он покрывает 99%..

CC>Ждем выхода следующей ревизии С++.


Жди. Я уже не жду.

Я боюсь, что следующая ревизия превратит С++ в язык, который плохо справляется со своими текущими задачами (из-за изменений), и плохо с новыми (из-за обратной совместимости). Поэтому я думаю переходить на более другие языки.
Делай что должно, и будь что будет
Re[16]: Раннее знакомство с Java калечит судьбы программисто
От: Pavel Dvorkin Россия  
Дата: 30.01.08 13:08
Оценка:
Здравствуйте, FR, Вы писали:

FR>У меня кстати работала, но я что-то на автомате подправил, что не помню


А время не замерил ? Интересно бы узнать. Вообще-то оно еще и от диска зависит, но для этого надо файл размером в сотню Мб взять, 0.015 — слишком мало для выводов.
With best regards
Pavel Dvorkin
Re[18]: Раннее знакомство с Java калечит судьбы программисто
От: SergH Россия  
Дата: 30.01.08 13:12
Оценка:
Здравствуйте, Pavel Dvorkin, Вы писали:

PD>Ну спасибо. Я пару строчек на __asm минут за 10 напишу.


Так, а если ты асм не знаешь? Вообще не знаешь?
Делай что должно, и будь что будет
Re[16]: Раннее знакомство с Java калечит судьбы программисто
От: SergH Россия  
Дата: 30.01.08 13:14
Оценка:
Здравствуйте, CreatorCray, Вы писали:

CC>ICC 10.1.x ?


Если мне ничего не изменяет, пользоваться SSE для того, чтобы обрабатывать одновременно несколько операндов он тоже не умеет. А именно тут заложен основной выигрыш.
Делай что должно, и будь что будет
Re[15]: Раннее знакомство с Java калечит судьбы программисто
От: Pavel Dvorkin Россия  
Дата: 30.01.08 13:14
Оценка:
Здравствуйте, SergH, Вы писали:

SH>Здравствуйте, Pavel Dvorkin, Вы писали:


SH>>>потоки, наконец.


PD>>А они куда девались ? _beginthreadex и т.д.


SH>А это не свойство языка. Это библиотека.


А class Thread — это прямо таки свойство языка ?

SH>Весь остальной язык на потоки не расчитан. В стандартной библиотеке кроме этих beginthreadex вообще ничего нет — ни средств синхронизации, ни средств общения потоков.


Нет, верно. Можно без труда сделать, в MFC есть, к примеру.

PD>>Это не библиотека. Это базовый механизм Windows.


SH>При чём здесь Windows??


При том, что memory-mapped files есть базовый механизм Windows. Он там везде и всюду, это единственный метод доступа к файлам в конечном счете. В Юниксе, насколько мне известно, это не так, да и вообще их там вроде нет.


SH>А в юниксе? А на микроконтроллере?


Если тебе известно что-то про mmf на микроконтроллере, поделись

SH>Я писал именно про _встроенные_возможности_языка_ отвечая тов. CreatorCray, который предложил исключить их из рассмотрения.

SH>С этой точки зрения плюсом С/С++ безусловно будет более простая интеграция с API существующих ОС. Это не удивительно, они все написаны именно в эпоху C. С# же компенсирует это более богатой стандартной библиотекой.

И в нем нет средств доступа к возможностям ОС, если они не инкапсулированыы этой библиотекой.
With best regards
Pavel Dvorkin
Re[18]: Раннее знакомство с Java калечит судьбы программисто
От: SergH Россия  
Дата: 30.01.08 13:16
Оценка:
Здравствуйте, CreatorCray, Вы писали:

CC>И затраты на вызовы хавают почти весь выигрыш?


Аналогичный вопрос для асма: и вызов функции (параметры в стек, сброс конвейера) сожрут весь выигрыш?
Нет, просто надо знать что, где и как оптимизировать.
Делай что должно, и будь что будет
Re[16]: Раннее знакомство с Java калечит судьбы программисто
От: SergH Россия  
Дата: 30.01.08 13:19
Оценка:
Здравствуйте, CreatorCray, Вы писали:

CC>Трудно отнести чтение файла построчно к встроенным возможностям языка. Это хэлпер.


Это библиотека. Но я и не про это. Я там написал Павлу, что отношу к встроенным возможностям.

CC>Которая нифига не переносима в полном объеме, если уж упоминали контроллеры и т.п. Потому как Windows Specific. Жалкую попытку порта под названием Mono — даже не упоминайте.


Плохо переносится GUI часть. Остальное, имхо, перенести можно.

CC>Впрочем и С++ стандартные библиотеки не везде могут быть реализованы.


Действительно. Особенно если добавить к ним MMF и MFC, о которых говорит Павел.
Делай что должно, и будь что будет
Re[19]: Раннее знакомство с Java калечит судьбы программисто
От: Pavel Dvorkin Россия  
Дата: 30.01.08 13:19
Оценка:
Здравствуйте, SergH, Вы писали:

SH>Здравствуйте, Pavel Dvorkin, Вы писали:


PD>>Ну спасибо. Я пару строчек на __asm минут за 10 напишу.


SH>Так, а если ты асм не знаешь? Вообще не знаешь?


Ну что же, пусть так. Посчитаем.

C++ . Мне надо изучить asm. Никуда не денешься, эти MMX/SSE иначе не напишешь.
C#. Мне надо изучить asm (все равно надо), COM (знать о нем не хотел бы, да придется), C++ (тоже придется)

3:1 не в твою пользу
With best regards
Pavel Dvorkin
Re[20]: Раннее знакомство с Java калечит судьбы программисто
От: SergH Россия  
Дата: 30.01.08 13:23
Оценка:
Здравствуйте, Pavel Dvorkin, Вы писали:

PD>Ну что же, пусть так. Посчитаем.


Не, ты не понял. Я не рекомендую на C# решать задачи, в которых нужен SSE. Я указал на способ повышения производительности — обращение к более подходящему для задачи языку, и на то, что C++ этот способ тоже использует.
Делай что должно, и будь что будет
Re[19]: Раннее знакомство с Java калечит судьбы программисто
От: Pavel Dvorkin Россия  
Дата: 30.01.08 13:29
Оценка:
Здравствуйте, CreatorCray, Вы писали:

CC>Здравствуйте, Pavel Dvorkin, Вы писали:


PD>>Хм, а при чем тут UTF8 ? Я ведь программу писал для Юникода, а не для UTF8! Для того Юникода, в котором на каждый символ ровно по 2 байта, а в начале стоит FEFF. Естественно, на UTF8 я не рассчитывал.

CC>Т.е. для UTF16 если его BOM = FEFF. Вот только незадача, у UTF16 символ может состоять из более чем 1 WORD-a. Двубайтовый "Уникод" с одним словом на символ это упрощенная (устаревшая) версия и называется UCS2. Работать с ней правда гораздо удобнее...

Именно ее я и имел в виду. Ее делает Notepad, если его попросить сохранить в Unicode. Ее же использует regedit при экспорте по умолчанию и т.д.

CC>Воскуривать тут http://en.wikipedia.org/wiki/UCS2


Спасибо за ссылку.

CC>Ну а полноценный Unicode это UTF32.


With best regards
Pavel Dvorkin
Re[14]: Раннее знакомство с Java калечит судьбы программисто
От: konsoletyper Россия https://github.com/konsoletyper
Дата: 30.01.08 13:35
Оценка:
Здравствуйте, Pavel Dvorkin, Вы писали:

PD>Это можно и без библиотек сделать. Помню втык, который я устроил одному студенту за транспонирование квадратной матрицы. Он для этого новую матрицу создал .

PD>Но вот для этого преподаватель и нужен. Чтобы сказал — так не делают, ищи решение получше. А когда перед глазами лишь фреймворк

Ох, Павел, учись я у Вас, был бы круглым двоечником Лично мне ближе позиция студента. Раз уж пошли примеры из жизни, приведу и я один.

К нам обратилась одна фирма, занимающаяся продажей неких товаров. От поставщиков им приходят прайсы, причём часто либо набранные ручками, либо неизвестно откуда (хотя подозреваю, что из 1С) экспортированные. Разброд полный, но прайсов много и ручками их не обработаешь. Была у этой фирмы какая-то прога на делфи, котоая жутко тормозила, и очень неэффективно работала. Чтобы объяснить почему, расскажу, как вообще она работает. Среди характеристик, которые надо выделять, есть такие, которые принимают одно значение из какого-либо конечного множества (такие характеристики описаны в базе знаений, которую пополняет пользователь). Например, таковыми являюся фирма-производитель, название модели и т.п (причём обратите внимание — наименований моделей может быть несколько тысяч, может быть, несколько десятков тысяч). Остальные характеристики выделяются как-то кривовато, по какому-то подобию шаблона. Короче, работало медленно и неэффективно.

Когда это дело пришло к нам, я вот на что сразу обратил внимание. Как выделить из ячейки прайс-листа, скажем, название модели? Думаю, самый разумный подход — регулярные выражения, причём это ещё и самый гибкий подход (можно искать не в точности такую же строку, а "приближённо такую же"). Регулярные выражения в типовых библиотеках работают на бэктрекинге, реже — на НКА, и только в TCL применён хитрый гибридный подход, что позволяет, в частности, делать неплохой subpattern addressing. Т.е. будем долго искать. Если же генерить ДКА то возникает обратная проблема — долго генерятся А ведь регулярное выражение для модели даже в "лучшем" случае — это model1 | model2 | .. | model9999. Т.е. состояний действительно дофига. Ко всему этому надо ещё добавить поддержку unicode.

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

Далее, конечно же, на каждого поставщика пишется шаблон. В шаблоне помимо регулярных выражений ещё куча всего. Так вот: я совершенно не заботился по поводу какой-либо сериализации данных. Т.е. при каждом считывании данные честно парсятся XML-парсером, текстовое содержимое парсится парсерами моих DSL-ей и т.п. AST и DOM даже и не думают сериализоваться/десериализоваться. А всё потому, что размер типового шаблона — 5-10Кб. И вряд ли когда-то станет 100Кб или тем более 100Мб. И парсятся эти шаблоны в общей сложности меньше секунды (на 100 шаблонов). Зато при каждой "синхронизации с БЗ" (так обозван процесс перегенерации ДКА) приходится ждать секунд 40. Спрашивается: оно мне надо было оптимизировать, чтобы снизить время ожидания на 2-3 сек? Кроме того, данные между гридом, где всё это выводится и обработчиком передаются жутко неэффективно, всюду копируются, хранятся в в структурах типа List и Dictionary, которые, как известно, жрут памяти поболее, чем им реально нужно. Ну и что? У меня одни только ДКА отжирают 90Мб. Лишние 2-3 Мб-не проблема.

PS: А история собиралась уже было закончиться хэппиэндом — на обработку одного прайса уходило менее 1 сек, так что была сделана, в отличие от предыдущего продукта, итерактивная обработка. Но потом мне вздумалось приделать недетерминированный поиск (чтобы решить некоторые проблемы и повысить качество обработки). Так вот теперь уже на один прайс может уходить от 5 до 60 сек. Придётся мне опять днями и ночами сидеть в профайлере, а так же придумывать эвристики, чтобы обрубать ветки дерева решений.

PPS: А если бы я ещё и на месте данные преобразовывал, не копируя, то даже боюсь представить, сколько времени у меня уходило бы на выявление глюков... Да и разобраться в этой махине, где что-то куда-то передаётся и там мутируется... Нет уж, лучше убить себя об стену
... << RSDN@Home 1.2.0 alpha rev. 672>>
Re[17]: Раннее знакомство с Java калечит судьбы программисто
От: FR  
Дата: 30.01.08 13:42
Оценка:
Здравствуйте, Pavel Dvorkin, Вы писали:

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


FR>>У меня кстати работала, но я что-то на автомате подправил, что не помню


PD>А время не замерил ? Интересно бы узнать. Вообще-то оно еще и от диска зависит, но для этого надо файл размером в сотню Мб взять, 0.015 — слишком мало для выводов.


Лучше не спрашивай
Re[19]: Раннее знакомство с Java калечит судьбы программисто
От: CreatorCray  
Дата: 30.01.08 13:51
Оценка:
Здравствуйте, SergH, Вы писали:

CC>>И затраты на вызовы хавают почти весь выигрыш?

SH>Аналогичный вопрос для асма: и вызов функции (параметры в стек, сброс конвейера) сожрут весь выигрыш?
В C++ для передачи параметров ассемблерной вставке далеко не всегда надо бросать что либо в стек и уж точно не нужно делать сброс конвейера (ЛОЛ!!!)

SH>Нет, просто надо знать что, где и как оптимизировать.

Разумеется. Та куча кода, через которую пройдет COM вызов мне лично кажется достаточно толстой, чтоб перекрыть не очень большую асм вставку.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re[17]: Раннее знакомство с Java калечит судьбы программисто
От: CreatorCray  
Дата: 30.01.08 13:51
Оценка:
Здравствуйте, SergH, Вы писали:

CC>>ICC 10.1.x ?

SH>Если мне ничего не изменяет, пользоваться SSE для того, чтобы обрабатывать одновременно несколько операндов он тоже не умеет. А именно тут заложен основной выигрыш.

Сам — нет. Слишком навороченная уж должна быть логика анализа С++ кода для такого рода оптимизаций
Зато предоставляет очень удобные интринзики для использования SSE
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re[20]: Раннее знакомство с Java калечит судьбы программисто
От: SergH Россия  
Дата: 30.01.08 13:57
Оценка:
Здравствуйте, CreatorCray, Вы писали:

CC>В C++ для передачи параметров ассемблерной вставке далеко не всегда надо бросать что либо в стек


Не всегда. Только когда оптимизатору не доступен весь проект. Например, если ты пишешь dll, lib или что-то подобное.

CC>и уж точно не нужно делать сброс конвейера (ЛОЛ!!!)


Это происходит само, если переход предсказан неправильно.

CC>Разумеется. Та куча кода, через которую пройдет COM вызов мне лично кажется достаточно толстой, чтоб перекрыть не очень большую асм вставку.


Читаем мой ответ Павлу на эту же тему.
Делай что должно, и будь что будет
Re[14]: Раннее знакомство с Java калечит судьбы программисто
От: SergH Россия  
Дата: 30.01.08 14:02
Оценка:
Здравствуйте, CreatorCray, Вы писали:

CC>Ты смотришь со своей колокольни. И видишь рядом с собой те задачи, которыми ты занимаешься. И для которых лучше подходит не С++.


Я занимаюсь очень разными задачами. Но если оценивать в процентах, причём не по моему опыту, а шире, то окажется, что мест, где актуален С++ осталось очень немного. Только те, где критична производительность/память.

CC>Каждый инструмент лучше всего подходит для решения определенного рода задач — раз

CC>У каждого инструмента есть недостатки, которые делают его непригодным для решения некоторого круга задач — два
CC>Нет инструмента, который бы решал все задачи — три
CC>Для достижения максимальной выгоды часто приходится использовать несколько инструментов — четыре

CC>Я отстаиваю то, что С++ лучше подходит для решения определенного круга задач. Ты же походу утверждаешь что С++ уже почти ни на что не годен, а С# рулит везде.


Я чуть выше обозначил область работы C++. Можешь свой вариант написать?
А С# тут просто для примера. Я на нём даже не писал почти
Делай что должно, и будь что будет
Re[21]: Раннее знакомство с Java калечит судьбы программисто
От: CreatorCray  
Дата: 30.01.08 14:04
Оценка:
Здравствуйте, SergH, Вы писали:

SH>Не, ты не понял. Я не рекомендую на C# решать задачи, в которых нужен SSE. Я указал на способ повышения производительности — обращение к более подходящему для задачи языку, и на то, что C++ этот способ тоже использует.

В С++ нет надобности использовать медленный COM механизм для вызова ассеблерного кода.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re[18]: Раннее знакомство с Java калечит судьбы программисто
От: Pavel Dvorkin Россия  
Дата: 30.01.08 14:09
Оценка:
Здравствуйте, FR, Вы писали:

FR>Лучше не спрашивай


Не понял. Что, в 0.015 не уложилась ?
With best regards
Pavel Dvorkin
Re[19]: Раннее знакомство с Java калечит судьбы программисто
От: FR  
Дата: 30.01.08 14:11
Оценка:
Здравствуйте, Pavel Dvorkin, Вы писали:

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


FR>>Лучше не спрашивай


PD>Не понял. Что, в 0.015 не уложилась ?


Да нет я подумал ты о скорости питоновского варианта спрашивал
Я уже не помню сейчас под рукой нет, но цифры с 0.0... были, питон раз в 15 медленее.
Re[15]: Раннее знакомство с Java калечит судьбы программисто
От: Pavel Dvorkin Россия  
Дата: 30.01.08 14:15
Оценка:
Здравствуйте, SergH, Вы писали:

Извиняюсь за вмешательство не в свой тред...

SH>Я занимаюсь очень разными задачами. Но если оценивать в процентах, причём не по моему опыту, а шире, то окажется, что мест, где актуален С++ осталось очень немного.


Почти все десктопное ПО как писали на C++, так и пишут.

Я тут не раз проводил голосование о том, сколько десктопных приложений на C# установлено на машине. У большинства — до 5 всего лишь.
With best regards
Pavel Dvorkin
Re[21]: Раннее знакомство с Java калечит судьбы программисто
От: CreatorCray  
Дата: 30.01.08 14:18
Оценка:
Здравствуйте, SergH, Вы писали:

CC>>В C++ для передачи параметров ассемблерной вставке далеко не всегда надо бросать что либо в стек

SH>Не всегда. Только когда оптимизатору не доступен весь проект. Например, если ты пишешь dll, lib или что-то подобное.
Вызов в DLL гораздо дешевле вызова через COM
lib же влинкуется в проект — оверхэд почти нулевой.

CC>>и уж точно не нужно делать сброс конвейера (ЛОЛ!!!)

SH>Это происходит само, если переход предсказан неправильно.
это только в случае conditional jump. Остальные варианты не рассматриваем, т.к. их в прикладном коде быть не должно.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re[18]: Раннее знакомство с Java калечит судьбы программисто
От: sndanil Россия  
Дата: 30.01.08 14:20
Оценка:
Здравствуйте, Pavel Dvorkin, Вы писали:

PD>read = 56, а len почему-то 512, цикл выполняется один раз. Я что-то не так делаю ?


что б те было спокойнее

            using (FileStream fs = File.OpenRead("D:\\Пример2.txt"))
            {
                int read = 0;
                byte[] b = new byte[1024];
                while ((read = fs.Read(b, 0, b.Length)) > 0)
                {
                    string str = Encoding.Unicode.GetString(bytes, 0, read);
                    int len = str.Length;
                    Console.WriteLine(len);
                }
            }


PD>И , кстати, маленький вопрос. Что здесь будет, если длина строки окажется больше 512 символов (1024 байт) ?


ниче не будет, программа просто отработает, без всяких ошибок ...
кстати че там у нас со скоростью?
Re[16]: Раннее знакомство с Java калечит судьбы программисто
От: CreatorCray  
Дата: 30.01.08 14:27
Оценка:
Здравствуйте, Pavel Dvorkin, Вы писали:

PD>Я тут не раз проводил голосование о том, сколько десктопных приложений на C# установлено на машине. У большинства — до 5 всего лишь.

К примеру у меня кроме йануса можно только MSVC причислить — в нем части на дотнете...
И всё.
При этом к производительности и потреблению памяти янусом у меня много претензий. (Private: 68 Mb, Working set: 49 Mb, Virtual 715 Mb)
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re[16]: Раннее знакомство с Java калечит судьбы программисто
От: SergH Россия  
Дата: 30.01.08 14:29
Оценка:
Здравствуйте, CreatorCray, Вы писали:

SH>>Я занимаюсь очень разными задачами. Но если оценивать в процентах, причём не по моему опыту, а шире, то окажется, что мест, где актуален С++ осталось очень немного. Только те, где критична производительность/память.


SH>>Я чуть выше обозначил область работы C++. Можешь свой вариант написать?

CC>Я бы сказал, где важна производительность и потребление ресурсов.

Так, а теперь мы будем спорить, что нам важнее — производительность, поддерживаемость, скорость написания?
Понятно, что важен баланс. Понятно, что за счёт роста мощностей и прогресса в компиляторах, он постепенно смещается от ассемблера (одна крайность) к скриптам (другая крайность). На мой взгляд, С++ как язык реализации сейчас уже редко является разумным выбором. Что, конечно не мешает многим его использовать.

CC>Потребление ресурсов по мне так важно везде. Потому как если маленькая утилита хавает 30 метров private bytes — это просто не приемлемо.


Маленькая утилитка пишется на Питоне и хавает немеряно байт и процессора. Но, тем, не менее, это гораздо, гораздо удобнее, чем писать её на C++.

CC>Самое интересное, что начали то с того, что плохо когда "пофиг как работает зато я решаю это одной строкой"


Это не я писал. Игорь высказался очень неаккуратно, предоставлю ему защищаться самому.
Делай что должно, и будь что будет
Re[17]: Раннее знакомство с Java калечит судьбы программисто
От: CreatorCray  
Дата: 30.01.08 15:05
Оценка:
Здравствуйте, SergH, Вы писали:

SH>>>Я чуть выше обозначил область работы C++. Можешь свой вариант написать?

CC>>Я бы сказал, где важна производительность и потребление ресурсов.
SH>Так, а теперь мы будем спорить, что нам важнее — производительность, поддерживаемость, скорость написания?
Это ты куда то в сторону от дискуссии отходишь. Мы говорим про вотчину С++. При наличии необходимых качественных библиотек и вменяемых программистов скорость написания и поддерживаемость будут на уровне. Вопрос в том, что нужны эти самые библиотеки и программисты.
Впрочем при отсутствии нужных библ и наличии только тупых быдлокодеров проект на С# будет тормозной, неподдерживаемый и долгоразрабатываемый.
Так что пришли к тому, что дело не столько в том, на каком языке. Дело в том, как на этом самом языке. Т.е. дело в людях.

CC>>Потребление ресурсов по мне так важно везде. Потому как если маленькая утилита хавает 30 метров private bytes — это просто не приемлемо.

SH>Маленькая утилитка пишется на Питоне и хавает немеряно байт и процессора. Но, тем, не менее, это гораздо, гораздо удобнее, чем писать её на C++.
Я в первую очередь имел в виду не одноразовое — запустил, отработало и все — а софт более длительного времени интерактивного использования.
Если эта маленькая утилитка мне нужна достаточно часто и работает при этом медленнее чем С++ аналог — я лучше напишу аналог на С++, пусть это будет мне менее удобно в процессе написания.

SH>Это не я писал. Игорь высказался очень неаккуратно, предоставлю ему защищаться самому.

Гм. Эт я не обратил внимания что автор другой.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re[18]: Раннее знакомство с Java калечит судьбы программисто
От: SergH Россия  
Дата: 30.01.08 15:20
Оценка:
Здравствуйте, CreatorCray, Вы писали:

CC>Это ты куда то в сторону от дискуссии отходишь. Мы говорим про вотчину С++. При наличии необходимых качественных библиотек и вменяемых программистов скорость написания и поддерживаемость будут на уровне. Вопрос в том, что нужны эти самые библиотеки и программисты.

CC>Впрочем при отсутствии нужных библ и наличии только тупых быдлокодеров проект на С# будет тормозной, неподдерживаемый и долгоразрабатываемый.
CC>Так что пришли к тому, что дело не столько в том, на каком языке. Дело в том, как на этом самом языке. Т.е. дело в людях.



А чего тогда не на ассемблере? Люди же важнее! Действительно, найдём классных программеров, которые напишут нам Янус на асме.



Да, я опять преувеличиваю. Разница между C++ и C# меньше чем между C++ и ассемблером. Но тем не менее, есть что-то и в языках. И в библиотеках. Библиотеку для работы на асме с SOAP найти очень сложно. На C++ — довольно легко. Но на C# она входит в стандартный комплект — не надо ни искать, ни устанавливать.

CC>Я в первую очередь имел в виду не одноразовое — запустил, отработало и все — а софт более длительного времени интерактивного использования.

CC>Если эта маленькая утилитка мне нужна достаточно часто и работает при этом медленнее чем С++ аналог — я лучше напишу аналог на С++, пусть это будет мне менее удобно в процессе написания.

А так же в процессе поддержки, исправления ошибок и добавления фич. И всё это будет верно только если ты это "медленнее" замечаешь. И оно не теряется на фоне ещё более медленного чего-то там. И если переписать на C++ реально по трудоёмкости.

На питоне тоже можно писать интерактивные приложения. Они будут к тому же кроcсплатформенными и исходного кода будет меньше, чем на C++. Я вот недавно писал утилитку на Питоне. 3 месяца писал вдвоём с коллегой. Я не возьмусь повторить это на C++ в обозримые сроки — очень долго получится.

И, хотя проблемы с производительностью были, они оказались в графической библиотеке PyQt4, которая опиралась на неудачную реализацию Qt4 (там работа со стилями тормозит), которая написана .. на C++ В следующем релизе Qt, возможно, исправят.
Делай что должно, и будь что будет
Re[19]: Раннее знакомство с Java калечит судьбы программисто
От: CreatorCray  
Дата: 30.01.08 15:38
Оценка:
Здравствуйте, SergH, Вы писали:

SH>А чего тогда не на ассемблере? Люди же важнее! Действительно, найдём классных программеров, которые напишут нам Янус на асме.

Так, отставить демагогию
Ежу понятно что можно и на брейнфаке.

SH>Да, я опять преувеличиваю. Разница между C++ и C# меньше чем между C++ и ассемблером. Но тем не менее, есть что-то и в языках. И в библиотеках. Библиотеку для работы на асме с SOAP найти очень сложно. На C++ — довольно легко. Но на C# она входит в стандартный комплект — не надо ни искать, ни устанавливать.


Опять таки вопрос в качестве этих библиотек. Не так сложно найти библиотеку — сложно найти качественную библиотеку, которая делает всё, что необходимо проге.

SH>А так же в процессе поддержки, исправления ошибок и добавления фич. И всё это будет верно только если ты это "медленнее" замечаешь. И оно не теряется на фоне ещё более медленного чего-то там. И если переписать на C++ реально по трудоёмкости.

Блин, такое ощущение что программирование на С++ ассоциируется с суровой рукопашной с указателями, копипастом кода и т.п.
Чем так сложны поддержка, отладка и развитие нормально спроектированной и написанной С++ проги от С# проги? А то что то я как то не пойму про какое "медленнее" ты говоришь. В общем случае на С++ можно точно так же "лепить из кубиков" как и на шарпе. Если не брать общий случай то и там и там вылазят разного рода "особенности" которые в равной мере тормозят эти процессы и там и там.

SH>На питоне тоже можно писать интерактивные приложения. Они будут к тому же кроcсплатформенными и исходного кода будет меньше, чем на C++. Я вот недавно писал утилитку на Питоне. 3 месяца писал вдвоём с коллегой.


SH>Я не возьмусь повторить это на C++ в обозримые сроки — очень долго получится.

Теперь давай добавим побольше конкретики: чего именно тебе не хватает чтобы написать на С++.
Причем давай говорить конкретно — не хватает класса строк с блаблабла функционалом.

Как бы не оказалось что не хватает просто фреймворка.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re[22]: Раннее знакомство с Java калечит судьбы программисто
От: Sergey Chadov Россия  
Дата: 30.01.08 18:03
Оценка:
Здравствуйте, CreatorCray, Вы писали:

CC>>>В C++ для передачи параметров ассемблерной вставке далеко не всегда надо бросать что либо в стек

SH>>Не всегда. Только когда оптимизатору не доступен весь проект. Например, если ты пишешь dll, lib или что-то подобное.
CC>Вызов в DLL гораздо дешевле вызова через COM
CC>lib же влинкуется в проект — оверхэд почти нулевой.
Вообще-то вызов COM-метода внутри apartment'а ничем не отличается от вызова обычной виртуальной функции.
--
Sergey Chadov

... << RSDN@Home 1.2.0 alpha rev. 685>>
Re[19]: Раннее знакомство с Java калечит судьбы программисто
От: Pavel Dvorkin Россия  
Дата: 31.01.08 06:15
Оценка:
Здравствуйте, sndanil, Вы писали:


S>что б те было спокойнее


S>
S>            using (FileStream fs = File.OpenRead("D:\\Пример2.txt"))
S>            {
S>                int read = 0;
S>                byte[] b = new byte[1024];
S>                while ((read = fs.Read(b, 0, b.Length)) > 0)
S>                {
S>                    string str = Encoding.Unicode.GetString(bytes, 0, read);
S>                    int len = str.Length;
S>                    Console.WriteLine(len);
S>                }
S>            } 
S>



PD>>И , кстати, маленький вопрос. Что здесь будет, если длина строки окажется больше 512 символов (1024 байт) ?


S>ниче не будет, программа просто отработает, без всяких ошибок ...


Это точно. Отработала. Дал на вход файл с одной текстовой строкой длиной 534 символа (длина файла 1070 байт). Вот что она печатает

512
23

Это, мягко выражаясь, несколько не соответствует действительности. Там все же одна строка, а не две. И к тому же лишний символ- 0xFEFF в начале эта программа почему-то включила в первую часть строки, хотя его надо было опознать как признак Юникодного файла и в строку не включать .



S>кстати че там у нас со скоростью?


Сначала сделай, чтобы программа работала, потом обсудим
With best regards
Pavel Dvorkin
Re[11]: Раннее знакомство с Java калечит судьбы программисто
От: Pavel Dvorkin Россия  
Дата: 31.01.08 06:31
Оценка:
Здравствуйте, IT, Вы писали:


IT>Но мы здесь не о том. Дворкин известный оптимизатор на пустом месте.


Уважаемый коллега, а нельзя ли обойтись в дискуссии без личных выпадов ? Применение подобной аргументации никого не красит.

Все остальные замечания оставляю без ответа, как и обещал.
With best regards
Pavel Dvorkin
Re[13]: Раннее знакомство с Java калечит судьбы программисто
От: mini_root_2  
Дата: 31.01.08 08:27
Оценка:
Здравствуйте, konsoletyper, Вы писали:

K>Ну дык. Думаю, тот же IT делает анализ применимости. Вася Пупкин, который полгода назад открыл для себя способ рисовать формочки в Делфях такого анализа не делает. Но внимание! Вася Пупкин и в C++ и STL наворотит такого (свинья везде грязь найдёт). Ну так вот: ради профессионалов вроде IT и проектируются фреймворки, чтобы они могли меньше времени тратить на вещи, которые не критичны (предполагается, что как специалисты, они могут выделить такие ситуации). Что же до ВП — всем пофигу, т.к. ВП спасёт не супермощный фреймворк, а супеполезные книжки.


Мля.... А кто такой профессионал? Это тот же Вася Пупкин в прошлом! Профессионалом он начнет становится когда САМ (я еще раз говорю — САМ!) начнем смотрет по сторонам и думать. Когда глядя на свой код он скажет: "А вот здесь можно сделать вот так и это будет гораздо лучше, потому что....".
А что касается преподаваталей, которые дают втык студентов — видел я за пять лет парочку таких МУДАКОВ (и я от этого определения не откажусь!).
Проблема нашей системы образования в том, что она абсолютно не подталкивает Пупкиных к таким выводам — она подталкивает их получиением росписей в зачетке (впрочем это недостаток всех формальных систем — подмена сути), но на самом деле проблема еще хуже — наша система образования (в ее реальном текущем состоянии) НЕ СПОСОБНА проконтролировать качество обучения: максимум что можно проконтролировать на сессии это тупое заучивание материала.

Результат виден когда человек приходит работать — учиться он УЖЕ не умеет (чтобы там не говорили, про "учим учиться"), дейсвтительно, а за чем? У него уже есть диплом (то есть бумажка), зато они замечтально могут поддакивать и смотреть умными глазами.

Кто-то из уважаемых преподавателей приводил пример с классом комплексных чисел — вы наивно думаете, что если студент правильно вам ответит, то он все понял и знает.... Какая наивность — понимать он начнем только тогда когда набьет себе шишек (и будет так или иначе набивать их всю жизнь), а этом он сделает (если конечно захочет) и без вашей сиятельной персоны. По собственному опыту объяснения Пупкиным (хотя я вообще не преподаватель, у меня даже образование с IT не связано, к тому же я в основном объяснял прекрасной половине челевечества, которая обучалась на соотвествующих специальностях) могу сказать, что самый лучший способ это свободное обсуждение того что было написано c попытками подтолкнуть к желанию что-то улучшить — без втыков, без репрессивных мер и без немерянного самомнения (я препод — ты дурак) — поверьте мне, где-нибудь на нашем голубом шарике есть спецы по сравнению с которыми почти любой препод (а тем более в нашей стране и по IT'шной специальности) — ПОЛНЫЙ ЛОХ. Будьте проще! Если пытаться объянсять таким образом сначла будет дикое непонимание, зато потом человек начинает понимать, что ты просто справочник и со своим кодом он может экспериментировать как хочет (и что самое главное ему за то НИЧЕГО не будет) — это тот путь превращаения Пупкиных который прошел я.

Теперь по поводу жабы — абсолютно все равно какой язык изучать (кроме брейнфака, хотя он замечательно иллюстрирует машину тьюринга в самом примитивном виде). Я напимер, читая SICP, многие примеры делал на Scala.

P.S. Я как раз типичный представитель семйства Пупкиных. Мой путь: Pascal(1 год), ASM(1 год)->C(3 года)/C++(1 год), Perl(3 года)->Java(3 года, и по сей день), Scala(1 год, и по сей день), Haskell(только начал), C#/Nemerle(если будет время), 1C (придется, провинция...). И ниче! И книжку по конечным автоматам сам себе купил, и по антипаттернам, и по проектированию, и SICP щас по второму разу читать буду. И заметьте — я сэкономил огромное количество нервов на общении с разного рода му... А вот бумажки по IT'шной специальности у меня нет и уже не будет (см. выше про сэкономленные нервы).
Re[23]: Раннее знакомство с Java калечит судьбы программисто
От: CreatorCray  
Дата: 31.01.08 08:39
Оценка:
Здравствуйте, Sergey Chadov, Вы писали:

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


CC>>>>В C++ для передачи параметров ассемблерной вставке далеко не всегда надо бросать что либо в стек

SH>>>Не всегда. Только когда оптимизатору не доступен весь проект. Например, если ты пишешь dll, lib или что-то подобное.
CC>>Вызов в DLL гораздо дешевле вызова через COM
CC>>lib же влинкуется в проект — оверхэд почти нулевой.

SC>Вообще-то вызов COM-метода внутри apartment'а ничем не отличается от вызова обычной виртуальной функции.

Вызов COM метода из managed кода == вызову виртуальной функции?
Мы про юзание асм кода из управляемого кода говорим.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re[18]: Раннее знакомство с Java калечит судьбы программисто
От: CreatorCray  
Дата: 31.01.08 08:39
Оценка:
Здравствуйте, Pavel Dvorkin, Вы писали:

PD>Кстати, о MSVC. Я до сих пор с тоской вспоминаю MSVC 6.0.

Аналогично.

PD> Тянул с переходом на новые версии до последнего, оставил ее когда уж совсем было нельзя.

Я сейчас так тяну с 2003-й. Благо компилер юзаю интеловский — его отдельно от вижуалки можно обновлять. Я то и с 6.0 слез только когда интел ее поддерживать перестал.
Вот с ужасом жду когда 2003ю перестанут

PD> Она буквально летала на компьютерах 5-летней давности. А нынешняя только проект открывает 10-15 сек...

А то и дольше...
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re: реальная проблема на Java - помогите решить
От: Pavel Dvorkin Россия  
Дата: 31.01.08 09:14
Оценка:
Ладно, господа. Меня тут уже обвинили в том, что я оптимизацией на пустом месте занимаюсь. Я как раз именно сейчас ей и занимаюсь — а вот на пустом месте или нет — предлагаю оценить, и если кто может, помочь.

Программа на Яве.

Программа делает вот что. Есть пары машин, которые гонят друг другу TCP трафик (в действительности сообщения некоторого протокола уровня приложения, протокол мне известен). На моей машине сидит сниффер, который этот трафик ловит, восстанавливает эти "сообщения" и пишет их в БД. Как он восстанавливает — несущественно сейчас.

2 потока, один ловит трафик, восстанавливает и пишет в очередь. Другой из очереди берет и в БД пишет.В качестве очереди использовал java.util.concurrent.LinkedBlockingQueue.

Про первый поток речи не будет, разговор пойдет о втором.

Вопрос — будет это тормозить или нет. Запустил профайлер.

Сделал две пары обменивающихся машин. YourKit Profiler утверждает , что на LinkedBlockingQueue.poll (взятие из очереди) уходит 16% суммарного времени (или 57% времени потока) при том, что на запись в БД — 12% (или 43% времени потока), итого 28% от общего времени . При одной паре машин на LinkedBlockingQueue.poll уходит в 2 раза меньше.

Это мне совсем не понравилось. Если так дальше пойдет, то и до 100% недалеко. В реальной обстановке таких пар машин будет много.

Запустил на всякий случай другой профайлер — JProfiler. Этот утверждает, что на поток записи вообще уходит всего лишь 5% от общего времени, про LinkedBlockingQueue.poll молчит как партизан, по-видимому, оценив затраты времени его как пренебрежимо малые, зато про запись в БД говорит, что на него уходит половина от этих 5%, а вторая половина — на мой код, о котором в свою очередь YourKit Profiler выдал 0.0%

Кому верить и что делать ?

Полез в имплементацию LinkedBlockingQueue.poll. Все, как положено, запутано до предела (черт возьми, умеют же писать сложным способом простые вещи). С десяток классов, интерфейсы, какие-то псевдобесконечные циклы. Долго ковырялся, и , в общем, без толка, понял лишь, что в конечном счете для блокировки вызывается

Unsafe java.util.concurrent.locks.AbstractQueuedSynchronizer.unsafe
Setup to support compareAndSet. We need to natively implement this here

Вот теперь сижу и думаю. Виновен этот LinkedBlockingQueue.poll или ни в чем не виновен ? Был бы C++ — послал бы этот LinkedBlockingQueue в RecycledBin, взял бы очередь из STL (а скорее всего и ее бы не стал брать, у меня своя реализация есть, примитивна, как лапоть), окружил бы все это Enter/LeaveCriticalSection и перестал бы об этом думать, зная. что быстрее под Windows невозможно.

Хоть свой собственный профайлер пиши...
With best regards
Pavel Dvorkin
Re[19]: Раннее знакомство с Java калечит судьбы программисто
От: Pavel Dvorkin Россия  
Дата: 31.01.08 09:24
Оценка:
Здравствуйте, CreatorCray, Вы писали:

PD>> Она буквально летала на компьютерах 5-летней давности. А нынешняя только проект открывает 10-15 сек...

CC>А то и дольше...

Меня тут sndanil свои вариантом чтения из файла донимает, все надеется 0.015 сек получить, пока что работать не хочет. Ну вот я проект и создал на шарпе, консольное шарп приложение с одним .cs файлом из 30 строчек. Его и открываю 10-15 сек
With best regards
Pavel Dvorkin
Re[21]: Раннее знакомство с Java калечит судьбы программисто
От: Pavel Dvorkin Россия  
Дата: 31.01.08 09:28
Оценка:
Здравствуйте, FR, Вы писали:

FR>Есть небольшая проблемка нет у C++ стандартного ABI, даже на одной платформе. Взять например Win, у разных компиляторов разное искажение имен и даже разная организация таблицы виртуальных классов. Тут только COM может помощь, но он обычно слишком тяжеловесен. Для Си ситуация чуть полегче можно добится совместимости, но и то вылазят иногда тонкости.


Да, верно. Увы. К сожалению (моему по крайней мере) это не было внесено в стандарт. Я ожнажды пытался скрестить классы от Borland C++ с программой на MSVC. Больше не буду
With best regards
Pavel Dvorkin
Re[22]: Раннее знакомство с Java калечит судьбы программисто
От: FR  
Дата: 31.01.08 09:52
Оценка:
Здравствуйте, CreatorCray, Вы писали:

SH>>Динамической типизации.

CC>Для чего?

У меня для прототипирования.

SH>>А так же генераторов

CC>см http://en.wikipedia.org/wiki/Generator_%28computer_science%29 раздел С++

Это даже не жалкая породия.

SH>> итераторов

CC>Уже есть в плюсах

Очень неудобные по сравнению м питоновсеими.

SH>> и GC.

CC>GC — зло в общем случае. + плохо сочетается с ручным управлением памятью.

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

SH>>И лямбд.

CC>Ну, вот чего нет так нет
CC>Насколько я понимаю, без GC они кривовато реализуются...

Лямбдам на GC плевать. Но лямбды обычно всегда идут в комплекте с замыканиями, а замыкания без GC да сплошной гемморой.

SH>>И возможности передать в функцию указатель на метод конкретного объекта (конкретного экземпляра, this передаётся незаметно) — прозрачно и для функции и для объекта.

CC>ИМХО реализуемо и в С++. Разумеется не так прозрачно

Угу как всегда очень коряво

SH>>Я не могу назвать что-то одно или исчерпывающий список. Я просто рекомендую тебе попробовать Питон.

CC>Пробовал. Дописывал функционал в готовой проге когда то давно... В проекте часть функционала вынесена в питоновские скрипты. Причем солидный такой кусок.
CC>Что могу сказать — скриптовый язык он и есть скриптовый...

И?


SH>>Причина — С++ слишком заботится о байтах. О машинном представлении. Даже если это скрыто внутри класса, это всегда приходится держать в уме.

CC>Т.е. думать надо о том, что получится перед тем как писать?

Думать к сожалению ( ) приходится не зависимо от используемого языка

CC>Мелочь писать на нем и всякие управляющие скрипты — можно. То, что не требует особой скорости — тоже. Но блин, почему как только человек открывает для себя новый язык он тут же стремится писать на нем все подряд?!


Это и к C++ относится.

Я вот сейчас на трех языках пишу, один из них C++ и ничего нормально.
И сейчас вполне реально для меня использовать C++ только как интерфейс для общения с OS.
Re[23]: Раннее знакомство с Java калечит судьбы программисто
От: CreatorCray  
Дата: 31.01.08 10:02
Оценка:
Здравствуйте, FR, Вы писали:

SH>>>Питон относится к этому проще.. Например, Питоновский int никогда не переполняется.

CC>>угу. И 287368235523^1024 * 76523876532^512 тоже посчитает и будет хранить?
Вопрос из любопытства, как человека, который занимается алгоритмами математики с большими числами — а сколько оно это считало?
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re[24]: Раннее знакомство с Java калечит судьбы программисто
От: FR  
Дата: 31.01.08 10:07
Оценка:
Здравствуйте, CreatorCray, Вы писали:

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


SH>>>>Питон относится к этому проще.. Например, Питоновский int никогда не переполняется.

CC>>>угу. И 287368235523^1024 * 76523876532^512 тоже посчитает и будет хранить?
CC>Вопрос из любопытства, как человека, который занимается алгоритмами математики с большими числами — а сколько оно это считало?

Практически моментально, нажал enter и консоль практически сразу выплюнуло ответ. Вообще считает же хорошо оптимизированный сишный код внутри интерпретатора.
Re[23]: Раннее знакомство с Java калечит судьбы программисто
От: CreatorCray  
Дата: 31.01.08 10:10
Оценка:
Здравствуйте, FR, Вы писали:

SH>>> итераторов

CC>>Уже есть в плюсах
FR>Очень неудобные по сравнению м питоновсеими.
Мм... А можно "на пальцах" разницу показать?

CC>>GC — зло в общем случае. + плохо сочетается с ручным управлением памятью.

FR>В общем члучае GC все таки добро, в частностях да бывает и зло, но в том же питоне GC как раз на счетчиках и поэтому добрый так как не умеет внизапно тормозить
Это гут.

FR>Лямбдам на GC плевать. Но лямбды обычно всегда идут в комплекте с замыканиями, а замыкания без GC да сплошной гемморой.

Это я и имел в виду.

SH>>>И возможности передать в функцию указатель на метод конкретного объекта (конкретного экземпляра, this передаётся незаметно) — прозрачно и для функции и для объекта.

CC>>ИМХО реализуемо и в С++. Разумеется не так прозрачно
FR>Угу как всегда очень коряво
Ну не надо передергивать. Не "как всегда" и не так уж "очень коряво".

SH>>>Я не могу назвать что-то одно или исчерпывающий список. Я просто рекомендую тебе попробовать Питон.

CC>>Пробовал. Дописывал функционал в готовой проге когда то давно... В проекте часть функционала вынесена в питоновские скрипты. Причем солидный такой кусок.
CC>>Что могу сказать — скриптовый язык он и есть скриптовый...
FR>И?
Не понравился. Как скриптовый язык по мне LUA несколько лучше с точки зрения юзабилити и интеропа. Хотя опять таки от задач зависит.

CC>>Т.е. думать надо о том, что получится перед тем как писать?

FR>Думать к сожалению ( ) приходится не зависимо от используемого языка
К сожалению, не все так считают. И при написании прог на управляемых языках наивно верят что можно ни о чем не заботясь фигачить "что вижу о том и пою". Ну и огребают потом проблем и удивляются, как так вышло.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re[24]: Раннее знакомство с Java калечит судьбы программисто
От: FR  
Дата: 31.01.08 10:12
Оценка:
Здравствуйте, CreatorCray, Вы писали:

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


SH>>>>Питон относится к этому проще.. Например, Питоновский int никогда не переполняется.

CC>>>угу. И 287368235523^1024 * 76523876532^512 тоже посчитает и будет хранить?
CC>Вопрос из любопытства, как человека, который занимается алгоритмами математики с большими числами — а сколько оно это считало?

Вот это
from time import clock

t1 = clock()
x = 287368235523**1024 * 76523876532**512
t2 = clock()

print t2 - t1


печатает (p4 2.8)

0.00779449739352
Re[3]: реальная проблема на Java - помогите решить
От: Pavel Dvorkin Россия  
Дата: 31.01.08 10:15
Оценка:
Здравствуйте, mik1, Вы писали:

M>Ну то, что при росте траффика до 100% от одного процессора доберетесь — это, думаю, очевидно. Ну это лирика.


Да, но когда ? Если там всего 5% уходит, это одно. Если 28% — очень сильно другое.

M>Какой процент от общего времени уходит на поток записи — это тоже лирика.

Кстати, кто мешает сделать несколько потоков записи?

А зачем ? Поставщик-то один, и очередь одна. Система один писатель — один читатель. Что я получу от нескольких читателей, крое оверхеда на переключение потоков ?

M>А вот про одну пару машин ничего не ясно. Можете привести такие же 4 цифры, какие приводили для двух пар машин? Тогда и станет ясно, где узкое место с ростом траффика будет.


Итак

2 пары машин (повторяю)

YourKit

Поток записи — 28% суммарного времени, из них 16% на poll, 12 — на запись в БД, остальное почти нули

JProfiler —

Поток записи — 5% суммарного времени, из них 2% на запись в БД, 2% на мой код, о котором речи не было, 1% по мелочам. poll не упоминается.

1 пара машин

YourKit

Поток записи — 34% суммарного времени, из них 21% на poll,14% на запись в БД

JProfiler —

Поток записи — 2.1% суммарного времени, из них 0.8% на запись в БД, 1% на мой код, 0.3% по мелочам. poll не упоминается.

В общем, похоже, что YourKit приплюсовал сюда время ожидания. Писатель-то не ждет (кроме лока), а вот читатель все время ждет — он быстрее, а точнее, писатель пока медленнее — трафик небольшой, он трафика ждет.

Если 2% на пару машин — это пока что еще оптимистично. Тем более там мой код, это не очередь явы оптимизировать

Правда, остается неясным, почему у YourKit столь велико время операций с БД. Хотя, мб, он и там включил время ожидания ответа.

Спасибо.
With best regards
Pavel Dvorkin
Re[24]: Раннее знакомство с Java калечит судьбы программисто
От: FR  
Дата: 31.01.08 10:31
Оценка:
Здравствуйте, CreatorCray, Вы писали:

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


SH>>>> итераторов

CC>>>Уже есть в плюсах
FR>>Очень неудобные по сравнению м питоновсеими.
CC>Мм... А можно "на пальцах" разницу показать?

Итераторы напрямую подерживаются языком, поэтому они гораздо безопаснее и мощнее, например легко делать цепочки функции обрабатывающих итераторы практически в стандартной библотеке http://docs.python.org/lib/itertools-functions.html есть набор повторяющий базовый для функциональных языков.

а на пальцах
for x in array:

вместо
for(my_vector::iterator it = array.begin(); it != array.end(); ++it)



SH>>>>И возможности передать в функцию указатель на метод конкретного объекта (конкретного экземпляра, this передаётся незаметно) — прозрачно и для функции и для объекта.

CC>>>ИМХО реализуемо и в С++. Разумеется не так прозрачно
FR>>Угу как всегда очень коряво
CC>Ну не надо передергивать. Не "как всегда" и не так уж "очень коряво".

Коряво, я например очень редко в C++ пользуюсь такими указателями и почти всегда смотрю в книжку чтобы вспомнить синтаксис, в питоне же это простое присваивание.
"Как всегда" тоже верно стоит посмотреть на boost::lambda хотя бы Хотя вот boost::python неплох.

SH>>>>Я не могу назвать что-то одно или исчерпывающий список. Я просто рекомендую тебе попробовать Питон.

CC>>>Пробовал. Дописывал функционал в готовой проге когда то давно... В проекте часть функционала вынесена в питоновские скрипты. Причем солидный такой кусок.
CC>>>Что могу сказать — скриптовый язык он и есть скриптовый...
FR>>И?
CC>Не понравился. Как скриптовый язык по мне LUA несколько лучше с точки зрения юзабилити и интеропа. Хотя опять таки от задач зависит.

Lua да хороший скриптовый язык. Питон же не хуже lua в этом качестве, но он больше чем скриптовый, на нем вполне можно и приложения реализовывать и как язык-клей использовать. А интероп у луа проще если ручками делаешь, с билиотеками же разницы нет, тот же boost::python во многом мощнее луавских оберток.

CC>>>Т.е. думать надо о том, что получится перед тем как писать?

FR>>Думать к сожалению ( ) приходится не зависимо от используемого языка
CC>К сожалению, не все так считают. И при написании прог на управляемых языках наивно верят что можно ни о чем не заботясь фигачить "что вижу о том и пою". Ну и огребают потом проблем и удивляются, как так вышло.

На неуправляемых тоже, я вот недавно кучу гавнокода на C++ разгребал, там такие перлы попадались что невозможно было поверить что приложение работало и не падало
Re[4]: реальная проблема на Java - помогите решить
От: mik1  
Дата: 31.01.08 10:40
Оценка:
Здравствуйте, Pavel Dvorkin, Вы писали:

PD>Да, но когда ? Если там всего 5% уходит, это одно. Если 28% — очень сильно другое.


Я знаю, но это не имеет отношения к тому, где именно в потоке узкое место.

PD>А зачем ? Поставщик-то один, и очередь одна. Система один писатель — один читатель. Что я получу от нескольких читателей, крое оверхеда на переключение потоков ?


Что-то мне подсказывает, что прочитать данные из сети можно быстрее, чем закинуть их в БД. Из-за этой разницы и предлагаю сделать дополнительных читателей (писателей в БД).

PD>2 пары: Поток записи — 28% суммарного времени, из них 16% на poll, 12 — на запись в БД, остальное почти нули

PD>1 пара: Поток записи — 34% суммарного времени, из них 21% на poll,14% на запись в БД

Пропорция для 1 пары машин: 3 к 2, для 2 пар машин — уже 4 к 3. То есть процент времени на poll уменьшается, а на запись в БД растет. На самом деле, судя по времени, очень похоже, что здесь включено время ожидания (с ростом траффика оно будет стремиться к нулю).

Да, я бы еще обратил внимание на то, что при росте траффика суммарное время, съеденное потоком записи в БД, уменьшается. Может, сначала сниффер посмотреть?

Еще что прошу уточнить — БД локальная или на другой машине? Подозреваю, что удаленная.
Re[13]: Раннее знакомство с Java калечит судьбы программисто
От: Pavel Dvorkin Россия  
Дата: 31.01.08 10:45
Оценка:
Здравствуйте, mik1, Вы писали:

M>Здравствуйте, Pavel Dvorkin, Вы писали:


M>Внесу предложение на Яве.


<skipped>

M>Время прошу отмасштабировать к Вашему размеру файла (У меня файл чуть побольше получился). Получилась разница уже в 4 раза.

M>

M>Time elapsed: 0,063000 sec
M>Line count = 767555


У меня вышло

Time elapsed: 0,125000 sec
Line count = 718847

Java 1.5, Eclipse 3.3.1.1

Это второй и следующие запуски. Первый был около 0.5 сек, он не в счет по понятной причине.

Спасибо. Я и не знал, что в Яве есть поддержка mmf.

Запустил я на твою программу профайлер (пришлось в цикл ее вставить). В общем, что я и ожидал — половина времени уходит на get

Ты смог сделать половину того, что в моем примере на 0.015 сек было. Там 2 основных момента это mmf и p++. Первое ты сделал, а второе все же Яве противоречит. Или придумаешь ?

Кстати, вот тут

for (int i = 2; i < (fl — 3) >> 1; i++)

я бы все же (fl — 3) >> 1 из заголовка вынес. Не меняется же fl
With best regards
Pavel Dvorkin
Re[22]: Раннее знакомство с Java калечит судьбы программисто
От: SergH Россия  
Дата: 31.01.08 11:10
Оценка:
Здравствуйте, CreatorCray, Вы писали:

SH>>Динамической типизации.

CC>Для чего?
SH>>А так же генераторов
CC>см http://en.wikipedia.org/wiki/Generator_%28computer_science%29 раздел С++
SH>> итераторов
CC>Уже есть в плюсах
SH>> и GC.
CC>GC — зло в общем случае. + плохо сочетается с ручным управлением памятью.
SH>>И лямбд.
CC>Ну, вот чего нет так нет
CC>Насколько я понимаю, без GC они кривовато реализуются...

Всё это позволяет меньше думать о реализации и больше о смысле. При этом, в отличии от костылей в C++, использование всех перечисленных возможностей в коде просто и красиво.

SH>>И возможности передать в функцию указатель на метод конкретного объекта (конкретного экземпляра, this передаётся незаметно) — прозрачно и для функции и для объекта.

CC>ИМХО реализуемо и в С++. Разумеется не так прозрачно

На С++ даже динамическая типизация реализуема при желании, почитай Коплиена. Только, действительно "не так прозрачно".

В C++ есть указатель на функцию-член, но к нему нужен указатель на объект. Чтобы совместить, нужно засунуть всё это в объект "КАЛЛБЕК", который имеет функцию call (очевидно, со всеми вариантами параметров) и два конструктора — один для обычных указателей на функции, а второй — для указателей на методы объектов. Пока всё хорошо (хотя и есть проблема с параметрами), но вот как ты заставишь все стандартные и сторонние библиотеки работать с твоим КАЛЛБЕК-ом?

SH>> Хотя бы — тупой пример — какой класс строк должна использовать эта библиотека?

CC>std::wstring

Отличный выбор! Как насчёт COM? COM-у нужен BSTR.. Как насчёт использования этой библиотеки в приложении на ATL? У них свои строки. В приложении на MFC, на WTL, на Qt? Как насчёт "правильного юникода"? Не поручусь, но, имхо, питоновские строки работают с правильным юникодом, а не с UCS2.

CC>Т.е. думать надо о том, что получится перед тем как писать?


Я там ниже развернул, в отдельном собщении.

CC>угу. И 287368235523^1024 * 76523876532^512 тоже посчитает и будет хранить?


Мне нечего добавить к ответу FR

CC>В чем приличие?


Их достаточно для всех разумных use-case-ов и никому не приходится писать свой вариант.

CC> Но блин, почему как только человек открывает для себя новый язык он тут же стремится писать на нем все подряд?!


Чтобы понять границы. Чтобы попробовать тоже, но по новому. Кроме того, я же явно оговорил область применимости C++. Я в неё не вмешиваюсь. Правда, из неё нужно вычесть область применимости Фортрана и Ассемблера
Делай что должно, и будь что будет
Re[14]: Раннее знакомство с Java калечит судьбы программисто
От: mik1  
Дата: 31.01.08 11:17
Оценка:
Здравствуйте, Pavel Dvorkin, Вы писали:

PD>У меня вышло

PD>Time elapsed: 0,125000 sec
PD>Line count = 718847
PD>Java 1.5, Eclipse 3.3.1.1

Ключик -server не забыли? Ну и машины то разные (C2D 6600, правда хард дешевый на 80 гиг).

PD>Спасибо. Я и не знал, что в Яве есть поддержка mmf.


Она декларируемая. Зависит от реализации JVM.

PD>Запустил я на твою программу профайлер (пришлось в цикл ее вставить). В общем, что я и ожидал — половина времени уходит на get


Я знаю. Было критически важно уменьшить кол-во get-ов в цикле. Можно было бы еще немного схитрить, оставив байтовый буфер и ища 0x0D на четных позициях, но это было бы не совсем одно и тоже. А ну совсем прямого доступа к памяти нету...

PD>Ты смог сделать половину того, что в моем примере на 0.015 сек было. Там 2 основных момента это mmf и p++. Первое ты сделал, а второе все же Яве противоречит. Или придумаешь ?

А нет смысла...

PD>я бы все же (fl — 3) >> 1 из заголовка вынес. Не меняется же fl


Я знаю. Только в отличие от вызова метода в условии for, я сомневаюсь, что компилятор здесь сам не оптимизирует.
Re[20]: Раннее знакомство с Java калечит судьбы программисто
От: sndanil Россия  
Дата: 31.01.08 11:35
Оценка:
Здравствуйте, Pavel Dvorkin, Вы писали:

PD>Это точно. Отработала. Дал на вход файл с одной текстовой строкой длиной 534 символа (длина файла 1070 байт). Вот что она печатает

PD>Это, мягко выражаясь, несколько не соответствует действительности. Там все же одна строка, а не две. И к тому же лишний символ- 0xFEFF в начале эта программа почему-то включила в первую часть строки, хотя его надо было опознать как признак Юникодного файла и в строку не включать .

а кто тебе сказал что она по строкам считывает файл? ... ты там еще что-нить припиши и потом повозмущайся ... вывод количества символов ведь твоих рук дело ...

S>>кстати че там у нас со скоростью?


PD>Сначала сделай, чтобы программа работала, потом обсудим


ничего не путаешь?
Автор: sndanil
Дата: 25.01.08


пример прочтения юникодного текстового файлы с выводом на консоль


поставь там Console.Write(str); вместо Console.WriteLine(len); и все ... она работает ... или можешь взять еще здесь
Автор: sndanil
Дата: 30.01.08
...
Re[15]: Раннее знакомство с Java калечит судьбы программисто
От: Pavel Dvorkin Россия  
Дата: 31.01.08 11:40
Оценка:
Здравствуйте, mik1, Вы писали:

M>Здравствуйте, Pavel Dvorkin, Вы писали:


M>Ключик -server не забыли?


Нет, не ставил. Куда его — в Arguments ? Добавил сейчас — то же самое. Запускаю так — RunAs — Java Application. Предварительно открыл Open Run Dialog и там в Arguments его поставил.

А зачем он нужен ? Там есть в Run Run At Server, я его и не пробовал.

Ну и машины то разные (C2D 6600, правда хард дешевый на 80 гиг).

А вот это да. У меня Athlon 4200+

M>Она декларируемая. Зависит от реализации JVM.


Я ими воспользуюсь. Переносимость меня совсем не волнует.


PD>>я бы все же (fl — 3) >> 1 из заголовка вынес. Не меняется же fl


M>Я знаю. Только в отличие от вызова метода в условии for, я сомневаюсь, что компилятор здесь сам не оптимизирует.


А вынести все же лучше. Бог его знает, соптимизирует или нет.
With best regards
Pavel Dvorkin
Re[26]: Раннее знакомство с Java калечит судьбы программисто
От: FR  
Дата: 31.01.08 11:41
Оценка:
Здравствуйте, CreatorCray, Вы писали:

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


FR>>Коряво, я например очень редко в C++ пользуюсь такими указателями

CC>Я вообще не пользуюсь такими указателями. Просто не возникало надобности. На данный момент не могу себе представить ситуацию, в которой это было бы самым удобным решением. ИМХО если возникает такая надобность то что то не в порядке в архитектуре проги.

Архитектура тут ни причем, в других языках (да и даже в борландовском диалекте C++) широко пользуются подобными указателями. Просто это так коряво сделано, что я тоже практически этим в C++ не пользуюсь.
Re[19]: Раннее знакомство с Java калечит судьбы программисто
От: FR  
Дата: 31.01.08 11:43
Оценка:
Здравствуйте, konsoletyper, Вы писали:

K>Кстати, посмотрел бы я на MSVC 6.0, если бы он обеспечивал столь же мощную работу с кодом, что и VS2008 в случае с C#. А то работал он может и побыстрее, но эффективность кодинга была раза в 3-4 меньше.


Visual Assist + VS 6 по функциональности ни чем ни хуже VS 80 для C++.
Re[25]: Раннее знакомство с Java калечит судьбы программисто
От: CreatorCray  
Дата: 31.01.08 11:59
Оценка:
Здравствуйте, FR, Вы писали:

FR>печатает (p4 2.8)

FR>0.00779449739352
У меня Time: 0.002160 sec 4'763'396 ticks в сишном коде на Core2 E4500

Впрочем числа то маленькие да и рантайм не на питоне писан
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re[16]: Раннее знакомство с Java калечит судьбы программисто
От: mik1  
Дата: 31.01.08 12:03
Оценка:
Здравствуйте, Pavel Dvorkin, Вы писали:

M>>Ключик -server не забыли?


PD>Нет, не ставил. Куда его — в Arguments ? Добавил сейчас — то же самое. Запускаю так — RunAs — Java Application. Предварительно открыл Open Run Dialog и там в Arguments его поставил.


PD>А зачем он нужен ? Там есть в Run Run At Server, я его и не пробовал.


С Эклипсом не работаю, поэтому куда его в окнах написать — не подскажу. Он должен попасть в аргументы для java.exe. Вкючает использование серверной (есть еще клиентская) JVM. Разница в том, что в серверной раньше отрабатывает компилятор, оптимизации более агрессивные... Если само приложение относительно небольшое и/или приложение должно работать долго (серверный процесс), то использование серверной JVM очень оправдано.
Re[21]: Раннее знакомство с Java калечит судьбы программисто
От: Pavel Dvorkin Россия  
Дата: 31.01.08 12:15
Оценка:
Здравствуйте, sndanil, Вы писали:

S>Здравствуйте, Pavel Dvorkin, Вы писали:


S>а кто тебе сказал что она по строкам считывает файл? ... ты там еще что-нить припиши и потом повозмущайся ... вывод количества символов ведь твоих рук дело ...


Вообще-то вроде бы мы давно уже обсуждаем задачу чтения построчно. Вот тут, например

http://rsdn.ru/forum/message/2813818.1.aspx
Автор: sndanil
Дата: 28.01.08


Твое ? И работает, только время большое. Но когда ты это писал, ты был согласен, что речь идет о чтении строк, иначе зачем все это ? Потом тебе захотелось это улучшить, при этом заехал ты малость не туда (это не страшно, бывает), а теперь ищешь аргументы.
With best regards
Pavel Dvorkin
Re[23]: Раннее знакомство с Java калечит судьбы программисто
От: CreatorCray  
Дата: 31.01.08 12:24
Оценка:
Здравствуйте, SergH, Вы писали:

SH>>> Хотя бы — тупой пример — какой класс строк должна использовать эта библиотека?

CC>>std::wstring
SH>Отличный выбор! Как насчёт COM? COM-у нужен BSTR.. Как насчёт использования этой библиотеки в приложении на ATL? У них свои строки. В приложении на MFC, на WTL, на Qt?
Это уже проблема совместимости с уже написанными велосипедами. Это не столько проблема языка, сколько его наследия...
А если тебе не надо COM, ATL, MFC, Qt (с WTL у меня проблем не было) то тогда что? В качестве гуи у меня в основном WTL (я больше системное на С++ пишу, там нет интерфейса в большинстве случаев) и все остальное радостно принимает вообще WCHAR*

SH>Как насчёт "правильного юникода"? Не поручусь, но, имхо, питоновские строки работают с правильным юникодом, а не с UCS2.

Медленный уж очень полный юникод. Всякие там сравнения и поиск в строке с учетом всех правил этож вообще убицца веником. Лучше уже тогда сразу только в нормализованном виде и в UTF32

CC>>угу. И 287368235523^1024 * 76523876532^512 тоже посчитает и будет хранить?

SH>Мне нечего добавить к ответу FR
А что там добавлять. Такой функционал инта ИМХО не оправдан. Т.к. для вычислений с небольшими числами (коих в общем то куда больше чем с большими) будут неоправданные затраты хотя бы на то, чтоб проверить какой из алгоритмов соответствует операции — медленный с большими числами или быстрый с обычными.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re[24]: Раннее знакомство с Java калечит судьбы программисто
От: FR  
Дата: 31.01.08 12:30
Оценка:
Здравствуйте, CreatorCray, Вы писали:


CC>Это уже проблема совместимости с уже написанными велосипедами. Это не столько проблема языка, сколько его наследия...


Это проблема языка, даже в чистом си с этим гораздо лучше чем в C++.

CC>А если тебе не надо COM, ATL, MFC, Qt (с WTL у меня проблем не было) то тогда что? В качестве гуи у меня в основном WTL (я больше системное на С++ пишу, там нет интерфейса в большинстве случаев) и все остальное радостно принимает вообще WCHAR*


Если все это не надо значит пишешь что очень низкоуровневое и все хорошо, я такое тоже на C++ люблю писать
Re[26]: Раннее знакомство с Java калечит судьбы программисто
От: FR  
Дата: 31.01.08 12:34
Оценка:
Здравствуйте, CreatorCray, Вы писали:

CC>Впрочем числа то маленькие да и рантайм не на питоне писан


Так это правильно что рантайм на питоне, "метод фреймворка" рулит. То есть приложение состоит из двух частей низкоуровневого фреймворка (Си / С++) и собственно приложения на языке высокого уровня (например питон).
Re[25]: Раннее знакомство с Java калечит судьбы программисто
От: CreatorCray  
Дата: 31.01.08 12:35
Оценка:
Здравствуйте, FR, Вы писали:

FR>Если все это не надо значит пишешь что очень низкоуровневое и все хорошо, я такое тоже на C++ люблю писать

Ну виндовые сервисы (мониторинг и обработка данных), криптография, управление железом и все такое
Не так давно ещё и в геймдеве работал ...
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re[24]: Раннее знакомство с Java калечит судьбы программисто
От: SergH Россия  
Дата: 31.01.08 12:46
Оценка:
Здравствуйте, CreatorCray, Вы писали:

CC>Это уже проблема совместимости с уже написанными велосипедами.


Майкрософт покраснел от стыда и "умер всем офисом", вслед за ними утопился Тролльтеч и прочие и прочие

Это всё-таки не велосипеды. Это местами даже фреймворки. Типичный фреймворк как раз пытается решить эту проблему С++ — обеспечить функциональность "на все случаи жизни" (в рамках фантазии авторов) и ввести набор типов/правил, которые используют все библиотеки фреймворка. Это обеспечивает совместимость. Проблема с вражескими фреймворками и "свободными библиотеками".

CC>Это не столько проблема языка, сколько его наследия...


Но язык провоцирует, согласись
Кроме того, от наследия сложно куда-то деться, приходится со всей этой гадостью работать как-то...

CC>А если тебе не надо COM, ATL, MFC, Qt (с WTL у меня проблем не было) то тогда что? В качестве гуи у меня в основном WTL (я больше системное на С++ пишу, там нет интерфейса в большинстве случаев) и все остальное радостно принимает вообще WCHAR*


Если тебе всего этого не надо, то С++ — очень неплохой язык. Со склонностью к низкоуровневому программированию, правда, но иногда, в своей области, это оправдано. Проблема в том, что, как ты написал "почему на нём пытаются писать всё?" У него есть своя ниша, из которой его вряд ли кто-то прогонит в обозримом будущем.

А в WTL ты тоже использовал wstring?

CC>А что там добавлять. Такой функционал инта ИМХО не оправдан. Т.к. для вычислений с небольшими числами (коих в общем то куда больше чем с большими) будут неоправданные затраты хотя бы на то, чтоб проверить какой из алгоритмов соответствует операции — медленный с большими числами или быстрый с обычными.


Это _подход_. Больше парится компилятор, меньше программист. Да, этот подход не работает, если нужны большие скорости. Но если они не нужны, программист чувствует себя сухо и комфортно. И мысль "а что если <..подставь вариант..> больше четырёх миллиардов?" его не беспокоит.
Делай что должно, и будь что будет
Re[26]: Раннее знакомство с Java калечит судьбы программисто
От: FR  
Дата: 31.01.08 12:46
Оценка:
Здравствуйте, CreatorCray, Вы писали:

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


FR>>Если все это не надо значит пишешь что очень низкоуровневое и все хорошо, я такое тоже на C++ люблю писать

CC>Ну виндовые сервисы (мониторинг и обработка данных), криптография, управление железом и все такое

Я сейчас на работе тоже утилитами на C++ занимаюсь, свои же проекты на смеси.

CC>Не так давно ещё и в геймдеве работал ...


Ксати тоже не так давно там же работал
Re[25]: Раннее знакомство с Java калечит судьбы программисто
От: CreatorCray  
Дата: 31.01.08 12:57
Оценка:
Здравствуйте, SergH, Вы писали:

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

CC>>Это уже проблема совместимости с уже написанными велосипедами.
SH>Майкрософт покраснел от стыда и "умер всем офисом"
[мечтательно] А былоб неплохо. Висту по крайней мере я им не прощу!
SH>, вслед за ними утопился Тролльтеч и прочие и прочие

SH>Это всё-таки не велосипеды. Это местами даже фреймворки.

Любой фреймворк ИМХО когда то был велосипедом. И опять таки велосипед может вырасти в солидный фреймворк.
Но в любом случае признаю, с велосипедами я децл погорячился

SH>Но язык провоцирует, согласись

Возможно.

SH>Кроме того, от наследия сложно куда-то деться, приходится со всей этой гадостью работать как-то...

Одно отмирает, другое появляется. MFC ИМХО уже надо стараться не юзать — неповоротливый он какой то.

CC>>А если тебе не надо COM, ATL, MFC, Qt (с WTL у меня проблем не было) то тогда что? В качестве гуи у меня в основном WTL (я больше системное на С++ пишу, там нет интерфейса в большинстве случаев) и все остальное радостно принимает вообще WCHAR*


SH>Если тебе всего этого не надо, то С++ — очень неплохой язык.

Программирование вообще то не крутится вокруг COM, ATL, MFC, Qt. ИМХО гуевые проги щас проще писать на том же шарпе.

SH> Со склонностью к низкоуровневому программированию, правда, но иногда, в своей области, это оправдано.

Он и затачивался больше под низкоуровневое. Чтоб дать программеру как можно больше мощности асма.

SH>Проблема в том, что, как ты написал "почему на нём пытаются писать всё?"

Писал я это вообще не про С++ а про любой язык и отношение "общеслучайного" программера к свежеизученному языку.

SH> У него есть своя ниша, из которой его вряд ли кто-то прогонит в обозримом будущем.

+1

SH>А в WTL ты тоже использовал wstring?

WTL всего то обертка над винапишными функциями. Все что я оттуда использовал хавало const WCHAR* ну и получало .c_str()
Опять таки, использовал я его далеко не на 100%, только то, что надо было
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re[26]: Раннее знакомство с Java калечит судьбы программисто
От: SergH Россия  
Дата: 31.01.08 13:08
Оценка:
Здравствуйте, CreatorCray, Вы писали:

CC>Одно отмирает, другое появляется. MFC ИМХО уже надо стараться не юзать — неповоротливый он какой то.


MFC я стараюсь не использовать последние лет 7 Как начал программировать, так и стараюсь его не использовать Искренне считаю его ужасным.

CC>Программирование вообще то не крутится вокруг COM, ATL, MFC, Qt.


Ну, COM это не гуи, это средство связи...

CC>ИМХО гуевые проги щас проще писать на том же шарпе.


Да! Именно!

CC>Он и затачивался больше под низкоуровневое. Чтоб дать программеру как можно больше мощности асма.


Я понимаю. Я даже понимаю, что 25 лет назад это было необходимо.. Но не сейчас.

CC>Писал я это вообще не про С++ а про любой язык и отношение "общеслучайного" программера к свежеизученному языку.


Да, я понимаю, что ты имел ввиду меня и Питон Но с С++ точно та же проблема. Это язык системного программирования, который в большинстве случаев (по уважительным историческим причинам, но тем не менее) используется не по назначению.
Делай что должно, и будь что будет
Re[27]: Раннее знакомство с Java калечит судьбы программисто
От: CreatorCray  
Дата: 31.01.08 13:31
Оценка:
Здравствуйте, SergH, Вы писали:

SH>MFC я стараюсь не использовать последние лет 7 Как начал программировать, так и стараюсь его не использовать Искренне считаю его ужасным.

+10

CC>>Программирование вообще то не крутится вокруг COM, ATL, MFC, Qt.

SH>Ну, COM это не гуи, это средство связи...
я в курсе. я список просто скопипастил из пред. мессаги, так что ком попал туда случайно

CC>>Он и затачивался больше под низкоуровневое. Чтоб дать программеру как можно больше мощности асма.

SH>Я понимаю. Я даже понимаю, что 25 лет назад это было необходимо.. Но не сейчас.
И сейчас нужно. И асм сейчас кое где ой как нужен.

CC>>Писал я это вообще не про С++ а про любой язык и отношение "общеслучайного" программера к свежеизученному языку.

SH>Да, я понимаю, что ты имел ввиду меня и Питон Но с С++ точно та же проблема. Это язык системного программирования, который в большинстве случаев (по уважительным историческим причинам, но тем не менее) используется не по назначению.

На том и порешим.
А то мы тут "Образование и наука" в СВ превратили... Надоб отдетачить ветку
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re[22]: Раннее знакомство с Java калечит судьбы программисто
От: sndanil Россия  
Дата: 31.01.08 14:31
Оценка:
Здравствуйте, Pavel Dvorkin, Вы писали:

S>>а кто тебе сказал что она по строкам считывает файл? ... ты там еще что-нить припиши и потом повозмущайся ... вывод количества символов ведь твоих рук дело ...


PD>Вообще-то вроде бы мы давно уже обсуждаем задачу чтения построчно. Вот тут, например


PD>http://rsdn.ru/forum/message/2813818.1.aspx
Автор: sndanil
Дата: 28.01.08


PD>Твое ? И работает, только время большое. Но когда ты это писал, ты был согласен, что речь идет о чтении строк, иначе зачем все это ? Потом тебе захотелось это улучшить, при этом заехал ты малость не туда (это не страшно, бывает), а теперь ищешь аргументы.


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

более того писалось все это исключительно что бы показать что при работе с файлом не надо оперировать огромным количеством сущностей, на которые ты первоначально сетовал ... беда тока в том что когда тебе это показали, ты начал сетовать на производительность, когда те показали что и произодительно тоже нормальная, ты нашел другой аргумент ...
Re[20]: Раннее знакомство с Java калечит судьбы программисто
От: konsoletyper Россия https://github.com/konsoletyper
Дата: 31.01.08 16:49
Оценка:
Здравствуйте, FR, Вы писали:

K>>Кстати, посмотрел бы я на MSVC 6.0, если бы он обеспечивал столь же мощную работу с кодом, что и VS2008 в случае с C#. А то работал он может и побыстрее, но эффективность кодинга была раза в 3-4 меньше.


FR>Visual Assist + VS 6 по функциональности ни чем ни хуже VS 80 для C++.


См. выделенное.
... << RSDN@Home 1.2.0 alpha rev. 672>>
Re[14]: Раннее знакомство с Java калечит судьбы программисто
От: Sergey Chadov Россия  
Дата: 31.01.08 17:07
Оценка:
Здравствуйте, mini_root_2, Вы писали:



__>Проблема нашей системы образования в том, что она абсолютно не подталкивает Пупкиных к таким выводам — она подталкивает их получиением росписей в зачетке (впрочем это недостаток всех формальных систем — подмена сути), но на самом деле проблема еще хуже — наша система образования (в ее реальном текущем состоянии) НЕ СПОСОБНА проконтролировать качество обучения: максимум что можно проконтролировать на сессии это тупое заучивание материала.

Не знаю, ни разу не занимался тупым заучиванием по специальным предметам(да и не по специальным редко). Да и не помогает это у нормальных преподавателей.


__>Кто-то из уважаемых преподавателей приводил пример с классом комплексных чисел — вы наивно думаете, что если студент правильно вам ответит, то он все понял и знает.... Какая наивность — понимать он начнем только тогда когда набьет себе шишек (и будет так или иначе набивать их всю жизнь), а этом он сделает (если конечно захочет) и без вашей сиятельной персоны. По собственному опыту объяснения Пупкиным (хотя я вообще не преподаватель, у меня даже образование с IT не связано, к тому же я в основном объяснял прекрасной половине челевечества, которая обучалась на соотвествующих специальностях) могу сказать, что самый лучший способ это свободное обсуждение того что было написано c попытками подтолкнуть к желанию что-то улучшить — без втыков, без репрессивных мер и без немерянного самомнения (я препод — ты дурак)

Такое отношение почти всегда говорит о том, что препод в своем предмете полный ноль.
--
Sergey Chadov

... << RSDN@Home 1.2.0 alpha rev. 685>>
Re[24]: Раннее знакомство с Java калечит судьбы программисто
От: Sergey Chadov Россия  
Дата: 31.01.08 17:07
Оценка:
Здравствуйте, CreatorCray, Вы писали:


SC>>Вообще-то вызов COM-метода внутри apartment'а ничем не отличается от вызова обычной виртуальной функции.

CC>Вызов COM метода из managed кода == вызову виртуальной функции?
CC>Мы про юзание асм кода из управляемого кода говорим.
Сам по себе вызов не должен быть сильно медленнее(хотя хз, я в дотнетах не спец), а вот подготовка данных, всякий range-checking, boxing/unboxing и все такое в принципе могут подтормаживать.
Впрочем, если не дергать COM десятками раз в секунду, то думаю некритично.
--
Sergey Chadov

... << RSDN@Home 1.2.0 alpha rev. 685>>
Re[21]: Раннее знакомство с Java калечит судьбы программисто
От: FR  
Дата: 31.01.08 17:20
Оценка:
Здравствуйте, konsoletyper, Вы писали:

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


K>>>Кстати, посмотрел бы я на MSVC 6.0, если бы он обеспечивал столь же мощную работу с кодом, что и VS2008 в случае с C#. А то работал он может и побыстрее, но эффективность кодинга была раза в 3-4 меньше.


FR>>Visual Assist + VS 6 по функциональности ни чем ни хуже VS 80 для C++.


K>См. выделенное.


Выделенное невозможно, так как C# появился через четыре года после VS6
Re[15]: Раннее знакомство с Java калечит судьбы программисто
От: mini_root_2  
Дата: 31.01.08 17:33
Оценка:
Здравствуйте, Sergey Chadov, Вы писали:


SC>Не знаю, ни разу не занимался тупым заучиванием по специальным предметам(да и не по специальным редко). Да и не помогает это у нормальных преподавателей.


Помогает у 90%.

SC>Такое отношение почти всегда говорит о том, что препод в своем предмете полный ноль.


Это далеко не всегда так, человек действительно может что-то знать, и при этом не принимать факта что вокруг люди этого не знают и при этом прекрасно без этого обходятся. Потом подобная публика начинает орать что студенты тупые. Мое личное наблюдение на основании общения студентами соответствующих специальностей: то что для меня было интересным хобби и подработкой на младших курсах (C/C+,Perl, а потом и Java) — для них было тяжелой обузой и мысли многих крутились на том, как от этого всего избавиться побыстрее. И дело тут не в тупых студентах — эти товарищи набрали вполне приличные балы на вступительных — когда я поступал проходной бал на АС был 36 (из 40) + зачет по русскому, на ПМ — 33, АИ — 35. И на всех специальностях толпы медалистов.
Re[16]: Раннее знакомство с Java калечит судьбы программисто
От: Sergey Chadov Россия  
Дата: 31.01.08 18:13
Оценка:
Здравствуйте, mini_root_2, Вы писали:

SC>>Не знаю, ни разу не занимался тупым заучиванием по специальным предметам(да и не по специальным редко). Да и не помогает это у нормальных преподавателей.


__>Помогает у 90%.

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

SC>>Такое отношение почти всегда говорит о том, что препод в своем предмете полный ноль.


__>Это далеко не всегда так, человек действительно может что-то знать, и при этом не принимать факта что вокруг люди этого не знают и при этом прекрасно без этого обходятся. Потом подобная публика начинает орать что студенты тупые.

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

__> Мое личное наблюдение на основании общения студентами соответствующих специальностей: то что для меня было интересным хобби и подработкой на младших курсах (C/C+,Perl, а потом и Java) — для них было тяжелой обузой и мысли многих крутились на том, как от этого всего избавиться побыстрее.

Здесь преподаватели вряд ли виноваты. Точнее, здесь виноваты не только преподаватели.

__> И дело тут не в тупых студентах — эти товарищи набрали вполне приличные балы на вступительных — когда я поступал проходной бал на АС был 36 (из 40) + зачет по русскому, на ПМ — 33, АИ — 35. И на всех специальностях толпы медалистов.

Медалисты бывают разные.
--
Sergey Chadov

... << RSDN@Home 1.2.0 alpha rev. 685>>
Re[22]: Раннее знакомство с Java калечит судьбы программисто
От: konsoletyper Россия https://github.com/konsoletyper
Дата: 31.01.08 20:31
Оценка:
Здравствуйте, FR, Вы писали:

FR>Выделенное невозможно, так как C# появился через четыре года после VS6


Я говорю про удобство, как в случае с C#.
... << RSDN@Home 1.2.0 alpha rev. 672>>
Re[16]: Раннее знакомство с Java калечит судьбы программисто
От: konsoletyper Россия https://github.com/konsoletyper
Дата: 31.01.08 20:31
Оценка:
Здравствуйте, mini_root_2, Вы писали:

__> набрали вполне приличные балы на вступительных — когда я поступал проходной бал на АС был 36 (из 40) + зачет по русскому, на ПМ — 33, АИ — 35. И на всех специальностях толпы медалистов.


Ты случаем не из Липецка? Не про ЛГТУ говоришь?
... << RSDN@Home 1.2.0 alpha rev. 672>>
Re[23]: Раннее знакомство с Java калечит судьбы программисто
От: FR  
Дата: 01.02.08 05:01
Оценка:
Здравствуйте, konsoletyper, Вы писали:

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


FR>>Выделенное невозможно, так как C# появился через четыре года после VS6


K>Я говорю про удобство, как в случае с C#.


Про удобство для C++?
В этом случае повторю VS6.0 + Visual Assist ничем ни уступает VS8.
Re[23]: Раннее знакомство с Java калечит судьбы программисто
От: Pavel Dvorkin Россия  
Дата: 01.02.08 06:17
Оценка:
Здравствуйте, sndanil, Вы писали:

S>не брат, аргументы ищешь ты, все мои примеры удовлетворяют условию задачи и прекрасно работают ... и нигде условие не менялось или ты можешь показать сообщение где говорится о том что надо построчно? ...

S>написал я это затем, что это классический пример работы с текстовыми файлами в дотнете, а не потому что был согласен с чем-то ...

Не стоит так аргументировать. Идем выше по этому треду и попадаем вот сюда

http://rsdn.ru/forum/message/2811907.1.aspx
Автор: Pavel Dvorkin
Дата: 25.01.08


Там я и привел пример с мэппингом и ясно написал

>Обращаю внимание — я не заводил никаких промежуточных буферов . Здесь нет ни одного массива, кроме, конечно, самого файла как проекции в память. Здесь меня совершенно не волнует длина строки — будь там в файле хоть одна строка на 100 Мб (Выделил я сейчас- PD)


>Повтори на C#, please


На что ты ответил

http://rsdn.ru/forum/message/2813818.1.aspx
Автор: sndanil
Дата: 28.01.08


PD>Повтори на C#, please


>Вуаля ...


и дальше упорно пытался повторить, но так и не смог. А теперь вдруг выясняется, что твое решение удовляетворяет условию задачи

В общем, вот что я тебе скажу. Тот пример, Который я привел, не может быть решен с указанной скоростью без использования двух сущностей, о чем я написал вот здесь

http://rsdn.ru/forum/message/2818961.1.aspx
Автор: Pavel Dvorkin
Дата: 31.01.08


mik1 сумел одну из этих проблем решить на Яве. Можно ли на C# — не знаю. Второе, вроде, не решается без указателей.

Почему этот код столь быстрый — объяснять сейчас не буду, почитай Рихтера (не по C#, а по Win32), ну и Соломона с Руссиновичем. Просто здесь задействованы глубинные, базовые механизмы Windows, причем задействованы напрямую, отсюда и скорость.
В конце концов дело не в том, чтобы что-то друг другу доказать. То, что ты делаешь — я тоже умею, а вот наоборот — у тебя не получится. Так что вместо того, чтобы доказывать недоказуемое, лучше ознакомиться с тем, что я использовал — будешь знать об этой возможности. В конце концов, то, что я сделал, можно и на C# повторить, правда, без PInvoke и unmanaged тут не обойдешься.

Все, дискуссию завершаю. Если хочешь — за тобой последнее слово
With best regards
Pavel Dvorkin
Re[16]: Раннее знакомство с Java калечит судьбы программисто
От: Pavel Dvorkin Россия  
Дата: 01.02.08 06:34
Оценка:
Здравствуйте, Pavel Dvorkin, Вы писали:

PD>Почти все десктопное ПО как писали на C++, так и пишут.


Кстати, одно небольшое замечание. В настоящее время Микрософт готовит к выпуску новую версию MFC. Я ее изучал по книге Круглински для VS 4.2 , кажется , 1994 года перевод. Практически MFC с тех пор не менялась. Думаю, что и от команды, которяа ее тогда делала, ничего уже не осталось. И вот спустя 15 лет Микрософт решила развивать эту библиотеку.

Будет она хорошей или нет, время покажет. За эти годы новые библиотеки появились для Win32, та же Qt, к примеру. Но говорит многое, что Микрософт решила к ней вернуться.

Судя по всему, они понимают, что затея с .Net для десктопных приложений провалилась...
With best regards
Pavel Dvorkin
Re[17]: Раннее знакомство с Java калечит судьбы программисто
От: Курилка Россия http://kirya.narod.ru/
Дата: 01.02.08 06:39
Оценка:
Здравствуйте, Pavel Dvorkin, Вы писали:

PD>Здравствуйте, Pavel Dvorkin, Вы писали:


PD>>Почти все десктопное ПО как писали на C++, так и пишут.


PD>Кстати, одно небольшое замечание. В настоящее время Микрософт готовит к выпуску новую версию MFC. Я ее изучал по книге Круглински для VS 4.2 , кажется , 1994 года перевод. Практически MFC с тех пор не менялась. Думаю, что и от команды, которяа ее тогда делала, ничего уже не осталось. И вот спустя 15 лет Микрософт решила развивать эту библиотеку.


PD>Будет она хорошей или нет, время покажет. За эти годы новые библиотеки появились для Win32, та же Qt, к примеру. Но говорит многое, что Микрософт решила к ней вернуться.


PD>Судя по всему, они понимают, что затея с .Net для десктопных приложений провалилась...


Посмотрим, если будет что-то заметное, то это будет прикольный финт со стороны МС.
Только хочется заметить, что доля этих самых десктопных приложений медленно, но верно уменьшается.
Re[18]: Раннее знакомство с Java калечит судьбы программисто
От: Pavel Dvorkin Россия  
Дата: 01.02.08 10:03
Оценка:
Здравствуйте, Курилка, Вы писали:

К>Посмотрим, если будет что-то заметное, то это будет прикольный финт со стороны МС.


Да она уже есть, beta

http://www.microsoft.com/downloads/details.aspx?FamilyID=d466226b-8dab-445f-a7b4-448b326c48e7&amp;DisplayLang=en
With best regards
Pavel Dvorkin
Re[19]: Раннее знакомство с Java калечит судьбы программисто
От: Курилка Россия http://kirya.narod.ru/
Дата: 01.02.08 11:01
Оценка:
Здравствуйте, Pavel Dvorkin, Вы писали:

PD>Здравствуйте, Курилка, Вы писали:


К>>Посмотрим, если будет что-то заметное, то это будет прикольный финт со стороны МС.


PD>Да она уже есть, beta


PD>http://www.microsoft.com/downloads/details.aspx?FamilyID=d466226b-8dab-445f-a7b4-448b326c48e7&amp;DisplayLang=en


Под "заметным" имелось в виду, что это дело будет поддержано разработчиками и т.д.
За ссылку спасибо.
Re[26]: Раннее знакомство с Java калечит судьбы программисто
От: SergH Россия  
Дата: 01.02.08 12:01
Оценка:
Здравствуйте, CreatorCray, Вы писали:

CC>Я вообще не пользуюсь такими указателями. Просто не возникало надобности. На данный момент не могу себе представить ситуацию, в которой это было бы самым удобным решением. ИМХО если возникает такая надобность то что то не в порядке в архитектуре проги.


Вспомнил, когда это нужно.

В С/C++ куча стандартных функций, принимающих каллбеки имеет параметр user_data или что-то типа того. Типичный вариант использования в C++ — передать туда this, а в каллбеке привести void* к нужному типу и вызвать метод объекта. Ну а в Питоне просто передаёшь указатель на метод.
Делай что должно, и будь что будет
Re[17]: Раннее знакомство с Java калечит судьбы программисто
От: mini_root_2  
Дата: 02.02.08 19:25
Оценка:
Здравствуйте, konsoletyper, Вы писали:


K>Ты случаем не из Липецка? Не про ЛГТУ говоришь?



Про него
Re[18]: Раннее знакомство с Java калечит судьбы программисто
От: LaptevVV Россия  
Дата: 05.02.08 15:39
Оценка:
Здравствуйте, mini_root_2, Вы писали:
K>>Ты случаем не из Липецка? Не про ЛГТУ говоришь?
__>Про него
Где только не встретишь земляков!
Я в Липецке прожил 3 года. Лучшее время: 7-8-9 класс. Учился в 19-й школе.
Наверное теперь это 19-й лицей.
Хочешь быть счастливым — будь им!
Без булдырабыз!!!
Re[19]: Раннее знакомство с Java калечит судьбы программисто
От: konsoletyper Россия https://github.com/konsoletyper
Дата: 05.02.08 17:00
Оценка:
Здравствуйте, LaptevVV, Вы писали:

LVV>Где только не встретишь земляков!

LVV>Я в Липецке прожил 3 года. Лучшее время: 7-8-9 класс. Учился в 19-й школе.
LVV>Наверное теперь это 19-й лицей.

Вот: http://www.moug19.lipetsk.ru/ (прошу обратить внимание на то, что написано в "О сайте" и сравнить с моим профилем). Сам я оканчивал 1-ю гимназию, а для 19-й сделал сайт, потому что меня попросила знакомая, которая там работает (странно, почему-то ни кому "родной" школе не пришла в голову идея попросить меня, хотя, м.б. оно и к лучшему, т.к. веб-дизайнер я некудышный).

Кстати, у нас в конторе работают два выпускника 19-й гимназии. Вот такие совпадения.
... << RSDN@Home 1.2.0 alpha rev. 672>>
Re[16]: Раннее знакомство с Java калечит судьбы программисто
От: konsoletyper Россия https://github.com/konsoletyper
Дата: 05.02.08 17:00
Оценка:
Здравствуйте, mini_root_2, Вы писали:

__>Это далеко не всегда так, человек действительно может что-то знать, и при этом не принимать факта что вокруг люди этого не знают и при этом прекрасно без этого обходятся. Потом подобная публика начинает орать что студенты тупые. Мое личное наблюдение на основании общения студентами соответствующих специальностей: то что для меня было интересным хобби и подработкой на младших курсах (C/C+,Perl, а потом и Java) — для них было тяжелой обузой и мысли многих крутились на том, как от этого всего избавиться побыстрее. И дело тут не в тупых студентах — эти товарищи набрали вполне приличные балы на вступительных — когда я поступал проходной бал на АС был 36 (из 40) + зачет по русскому, на ПМ — 33, АИ — 35. И на всех специальностях толпы медалистов.


Вот-вот. А я вообще не прошёл, т.к. в тот год, когда я поступал, на ПМ был проходной балл аж 35 (а на все остальные — ещё выше). Кстати, я победитель областной олимпиады по информатике, в Питер ездил на всероссийскую, но там занял восемьдесят-какое-то место. И это не дало мне никаких преимуществ при поступлении. Ну, набрал я 33 балла, пришлось идти в ЛГПУ учиться на учителя математики. Хотя даже не знаю, жалеть мне или нет, что не поступил в политех. Наслушался от товарищей про кульхацкеризм, царящий на фак-те. Про препода, который по совместительству держит ларёк с дисками с пиратским софтом, и ещё хвалится этим перед студентами.
... << RSDN@Home 1.2.0 alpha rev. 672>>
Re[17]: Раннее знакомство с Java калечит судьбы программисто
От: mini_root_2  
Дата: 06.02.08 08:17
Оценка:
Здравствуйте, konsoletyper, Вы писали:

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


K>Вот-вот. А я вообще не прошёл, т.к. в тот год, когда я поступал, на ПМ был проходной балл аж 35 (а на все остальные — ещё выше). Кстати, я победитель областной олимпиады по информатике, в Питер ездил на всероссийскую, но там занял восемьдесят-какое-то место. И это не дало мне никаких преимуществ при поступлении. Ну, набрал я 33 балла, пришлось идти в ЛГПУ учиться на учителя математики. Хотя даже не знаю, жалеть мне или нет, что не поступил в политех. Наслушался от товарищей про кульхацкеризм, царящий на фак-те. Про препода, который по совместительству держит ларёк с дисками с пиратским софтом, и ещё хвалится этим перед студентами.



У меня еще хуже — 32 бала (правда информатика 20 из 20, это к вопросу информатика/математика), но в пед я не пошел, а пошел на ЭП. Пять лет своей жизни я угробил на этой специальности. Впрочем щас уже не жалею что не попал на АС/АИ/ПМ — там тоже самое.
Re: Раннее знакомство с Java калечит судьбы программистов
От: alexandrST  
Дата: 10.02.08 12:41
Оценка:
Про Java, C++ (особенно, с его нечеловеческим синтаксисом) и т.д. — согласен.
Про pascal — изначально Вирт его разработал именно как язык для обучения студентов.
У меня первым языком на котором учился был Oberon (среда разработки BlackBox называется по-моему).
Если бы мне была поставлена задача научить программировать людей с нуля я бы использовал именно это ПО.
Re[16]: Раннее знакомство с Java калечит судьбы программисто
От: Michael7 Россия  
Дата: 13.03.08 21:22
Оценка:
Здравствуйте, Pavel Dvorkin, Вы писали:

PD>>>Это не библиотека. Это базовый механизм Windows.


SH>>При чём здесь Windows??


PD>При том, что memory-mapped files есть базовый механизм Windows. Он там везде и всюду, это единственный метод доступа к файлам в конечном счете. В Юниксе, насколько мне известно, это не так, да и вообще их там вроде нет.


Не знаю с чего SergH и вы решили, что в юниксах нет memory-mapped files, очень даже есть:


MMAP(2) Linux Programmer’s Manual MMAP(2)

NAME
mmap, munmap — map or unmap files or devices into memory

SYNOPSIS
#include <sys/mman.h>

void *mmap(void *start, size_t length, int prot, int flags,
int fd, off_t offset);
int munmap(void *start, size_t length);

DESCRIPTION
mmap() creates a new mapping in the virtual address space of the call‐
ing process. The starting address for the new mapping is specified in
start. The length argument specifies the length of the mapping.

If start is NULL, then the kernel chooses the address at which to cre‐
ate the mapping; this is the most portable method of creating a new
mapping. If start is not NULL, then the kernel takes it as a hint
about where to place the mapping; on Linux, the mapping will be created
at the next higher page boundary. The address of the new mapping is
returned as the result of the call.
......
[cut]


Так что механизм действительно получается более-менее универсальный, но могут быть две проблемы:
1)сложности с некоторыми файловыми системами.
2)для 32-битных систем может исчерпаться адресное пространство.
Re[17]: Раннее знакомство с Java калечит судьбы программисто
От: SergH Россия  
Дата: 13.03.08 21:27
Оценка:
Здравствуйте, Michael7, Вы писали:

M>Не знаю с чего SergH и вы решили, что в юниксах нет memory-mapped files.


Не знаю, с чего вы решили, что я так решил. Цитату может приведёте?
Делай что должно, и будь что будет
Re[18]: Раннее знакомство с Java калечит судьбы программисто
От: Michael7 Россия  
Дата: 13.03.08 22:10
Оценка:
Здравствуйте, SergH, Вы писали:

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


M>>Не знаю с чего SergH и вы решили, что в юниксах нет memory-mapped files.


SH>Не знаю, с чего вы решили, что я так решил. Цитату может приведёте?


ваше сообщение
Автор: SergH
Дата: 30.01.08

PD>Это не библиотека. Это базовый механизм Windows.

При чём здесь Windows??
А в юниксе? А на микроконтроллере?

Мне показалось ваш вопрос был противопоставлением, в смысле, не везде имеется обсуждаемый базовый механизм (mmf).
Как сейчас вижу, возможно ошибался относительно смысла вашего высказывания.
Re[19]: Раннее знакомство с Java калечит судьбы программисто
От: SergH Россия  
Дата: 13.03.08 22:27
Оценка:
Здравствуйте, Michael7, Вы писали:

M>Мне показалось ваш вопрос был противопоставлением, в смысле, не везде имеется обсуждаемый базовый механизм (mmf).

M>Как сейчас вижу, возможно ошибался относительно смысла вашего высказывания.

Смысл был в том, что это не механизм языка.

Павел упорно причислял (и возможно до сих пор — не буду за него выступать) возможности API Windows к встроенным возможностям C++. Упоминая юникс и микроконтроллеры я подводил его к мысле, что на Windows свет клином всё же не сошёлся. Но без контекста получилось несколько двусмысленно, вы правы.

А mmf действительно есть не везде. Хотя бы потому, что не везде есть операционная система
Делай что должно, и будь что будет
Re[20]: Раннее знакомство с Java калечит судьбы программисто
От: Pavel Dvorkin Россия  
Дата: 14.03.08 04:40
Оценка:
Здравствуйте, SergH, Вы писали:

SH>Павел упорно причислял (и возможно до сих пор — не буду за него выступать) возможности API Windows к встроенным возможностям C++.


А не наоборот ?

SH>mmf это же не встроенная возможность Это библиотека.


PD> Это не библиотека. Это базовый механизм Windows.


http://www.rsdn.ru/forum/message/2817360.1.aspx
Автор: Pavel Dvorkin
Дата: 30.01.08
With best regards
Pavel Dvorkin
Re[21]: Раннее знакомство с Java калечит судьбы программисто
От: SergH Россия  
Дата: 14.03.08 07:31
Оценка:
Здравствуйте, Pavel Dvorkin, Вы писали:

PD>А не наоборот ?


SH>>mmf это же не встроенная возможность Это библиотека.


PD>> Это не библиотека. Это базовый механизм Windows.


PD>http://www.rsdn.ru/forum/message/2817360.1.aspx
Автор: Pavel Dvorkin
Дата: 30.01.08


лыко, мочало — начинай с начала!




Не, не наоборот

С точки зрения языка С++ нет такого понятия как "базовый механизм Windows". Даже если взять общее — "базовый механизм ОС" — такого тоже нет. Даже если назвать это "системные вызовы" — так и их нету

С точки зрения языка есть:

— встроенные возможности (for, if, class и т.п.)
— библиотеки
— код, написанный с использованием возможностей/библиотек

всё

А "базовые механизмы Windows" или "вызов методов COM-объектов" это всего лишь детали реализации библиотек. В данном случае эти детали сообщают нам, что библиотеки ещё и системно-зависимые.
Делай что должно, и будь что будет
Re[3]: Раннее знакомство с Java калечит судьбы программистов
От: Skynin Украина skynin.blogspot.com
Дата: 17.12.08 19:24
Оценка:
Здравствуйте, Курилка, Вы писали:

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


К>[cut]

S>>Третьим — Scheme или Lisp. Для того чтобы дать представление о соооовсем другом подходе и: мышлении. Именно чистые ФП, чтобы не было каши в голове, от попыток использовать предыдущие знания, как то будет в случае Scala, Python, ...
К>Только вот выделенное несколько противоречит друг другу...

К>[cut]

Ых, на самом то деле проблема вообще не в джаве и "несколько противоречит" (в чем измеряется то это — не-сколько?)

Ричард Ф. Фейнман, в книге «Вы, конечно, шутите, мистер Фейман!»:

«Я обнаружил очень странное явление: я задавал вопрос, и студенты отвечали, не задумываясь. Но когда я задавал вопрос еще раз — на ту же тему и, как мне казалось, тот же самый вопрос, они вообще не могли ответить!
...
После длительного расследования я, наконец, понял, что студенты все запоминали, но ничего не понимали. Когда они слышали «свет, отраженный от преломляющей среды», они не понимали, что под средой имеется в виду, например, вода. Они не понимали, что «направление распространения света» – это направление, в котором видишь что-то, когда смотришь на него, и т.д. Все только запоминалось, и ничего не переводилось в осмысленные понятия.
Конвеер ...
Re[4]: Раннее знакомство с Java калечит судьбы программистов
От: Курилка Россия http://kirya.narod.ru/
Дата: 17.12.08 20:37
Оценка:
Здравствуйте, Skynin, Вы писали:

S>Здравствуйте, Курилка, Вы писали:


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


К>>[cut]

S>>>Третьим — Scheme или Lisp. Для того чтобы дать представление о соооовсем другом подходе и: мышлении. Именно чистые ФП, чтобы не было каши в голове, от попыток использовать предыдущие знания, как то будет в случае Scala, Python, ...
К>>Только вот выделенное несколько противоречит друг другу...

К>>[cut]

S>Ых, на самом то деле проблема вообще не в джаве и "несколько противоречит" (в чем измеряется то это — не-сколько?)
Это был укор за то, что говорить об обучении исходя из в чём-то некорректных предпосылок по-моему неправильно.
А по поводу "несколько": на лиспе можно программировать практически "чисто", но всёж в гораздо большей степени он "грязный" императивный язык (по ср., скажем, с ML или Haskell)
Хотя в корне проблем с обучением гораздо более другие вещи, чем эти частности.

S>Ричард Ф. Фейнман, в книге «Вы, конечно, шутите, мистер Фейман!»:


S> «Я обнаружил очень странное явление: я задавал вопрос, и студенты отвечали, не задумываясь. Но когда я задавал вопрос еще раз — на ту же тему и, как мне казалось, тот же самый вопрос, они вообще не могли ответить!

S>...
S>После длительного расследования я, наконец, понял, что студенты все запоминали, но ничего не понимали. Когда они слышали «свет, отраженный от преломляющей среды», они не понимали, что под средой имеется в виду, например, вода. Они не понимали, что «направление распространения света» – это направление, в котором видишь что-то, когда смотришь на него, и т.д. Все только запоминалось, и ничего не переводилось в осмысленные понятия.
S>Конвеер ...

Это ты именно про студентов, или [paranoia mode on] это был такой "тонкий" намёк, что я запомнил, но не понимаю, что такое Scheme/Lisp и чистые ФЯ? [paranoia mode off]
Re[14]: Раннее знакомство с Java калечит судьбы программисто
От: Аноним  
Дата: 27.12.08 07:31
Оценка:
Здравствуйте, CreatorCray, Вы писали:

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


LVV>>А не подскажете, как перевести значок "решетка" на русский язык?

CC>переводить его не надо, названия не переводятся.
CC>Более менее распространенные названия: решетка и диез
CC>Но тогда уже "Си диез", но не "До диез"...

LVV>>Или просто С-решетка говорить?

CC>http://en.wikipedia.org/wiki/C_Sharp_%28programming_language%29
CC>Поскольку это название языка программирования то называть его стоит так, как назвали авторы.
CC>Кроме того следует помнить о compatibility с остальным сообществом.

Если у Вас кругозор настолько узкий и вы не видите дальше своего программирования даже на расстоянии метра.. И просто элементарно 7 нот не знаете, то как минимум не стОит защищать такую позицию "До диез" он и в Африке До-диез ) Если бы еще извращались и называли его Р-бемоль, то это да, уже извращения А так — вполне себе. "Си-диез" это вообще бред )) Это называется смешали все в кучу. B# — вот си-диез )

А преподаватель должен преподавать всегда с юмором и интересно, иначе его материал хуже запоминается, поэтому До-диез только привествуется
Re[15]: Раннее знакомство с Java калечит судьбы программисто
От: Аноним  
Дата: 27.12.08 07:36
Оценка:
Здравствуйте, Аноним, Вы писали:


А>Если у Вас кругозор настолько узкий и вы не видите дальше своего программирования даже на расстоянии метра.. И просто элементарно 7 нот не знаете, то как минимум не стОит защищать такую позицию "До диез" он и в Африке До-диез ) Если бы еще извращались и называли его Р-бемоль, то это да, уже извращения А так — вполне себе. "Си-диез" это вообще бред )) Это называется смешали все в кучу. B# — вот си-диез )


хотя B# это в свою очередь просто C )
Re[15]: Раннее знакомство с Java калечит судьбы программисто
От: CreatorCray  
Дата: 29.12.08 10:05
Оценка:
Здравствуйте, <Аноним>, Вы писали:

А>Если у Вас кругозор настолько узкий и вы не видите дальше своего программирования даже на расстоянии метра.. И просто элементарно 7 нот не знаете, то как минимум не стОит защищать такую позицию "До диез" он и в Африке До-диез ) Если бы еще извращались и называли его Р-бемоль, то это да, уже извращения А так — вполне себе. "Си-диез" это вообще бред )) Это называется смешали все в кучу. B# — вот си-диез )

Речь шла не о нотах, а о том, как называть отдельный символ #.
Я смотрю чем ближе к НГ тем более невнимательно читают посты перед тем как на них отвечать.

А>А преподаватель должен преподавать всегда с юмором и интересно, иначе его материал хуже запоминается, поэтому До-диез только привествуется

Преподаватель программирования должен рассказывать о программировании а не о музыке.
И называть язык так, как он называется в оригинале (стандартизированное название между прочим), а не придумывать ему свои тупорылые названия.

Вот стандарт: http://www.ecma-international.org/publications/standards/Ecma-334.htm
Еще более конкретно вот: http://www.ecma-international.org/publications/files/ECMA-ST/Ecma-334.pdf

Standard ECMA-334
Раздел 6. Acronyms and abbreviations

The name C# is pronounced “C Sharp”.

... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re[16]: Раннее знакомство с Java калечит судьбы программисто
От: Аноним  
Дата: 30.12.08 15:28
Оценка:
Здравствуйте, CreatorCray, Вы писали:

CC>Речь шла не о нотах, а о том, как называть отдельный символ #.


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

CC>Я смотрю чем ближе к НГ тем более невнимательно читают посты перед тем как на них отвечать.


Ты сам писал:

CC>Но тогда уже "Си диез", но не "До диез"...


..а я тебе на это собственно и ответил. Что нельзя читать отдельно решетку. А про семь нот я сказал к тому, что в музыке символ "С" произносится как "до".

Соответственно если ты называешь решетку "диез"-ом, то это означает, что слева от диеза должна стоять нота. А там стоит символ С, а значит это До. А все вместе: До-диез.

А>>А преподаватель должен преподавать всегда с юмором и интересно, иначе его материал хуже запоминается, поэтому До-диез только привествуется

CC>Преподаватель программирования должен рассказывать о программировании а не о музыке.
CC>И называть язык так, как он называется в оригинале (стандартизированное название между прочим), а не придумывать ему свои тупорылые названия.

Да ничего он никому не должен. Учить он хорошо должен. Или ты на стандарты преподавания тоже пару линков дашь?



А вообще это все флуд на музыкальную тематику пошел уже. Я думаю в этой ветке по-барабану всем и на ноты и на диезы Да и я уверен препод, который на форумах пишет "до-диез" на первых лекциях по решеткам не объясняет студентам все в виде: "Пыщпыщ упячко онотолей рооскажед вам сиводня пра до-диез", а как раз нормально вводит понятие как сишарп, чтобы не было путаницы. А не на лекциях, в обычной жизни препод тоже человек в конце концов
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.