Чтобы разъяснить, приведу пример. У меня есть друг по имени Саня.
Саня выучил несколько аккордов на шестиструнной гитаре, ля-минор,
ре-минор, до-мажор, и фа-мажор, но реже, ибо для того, чтобы взять
фа-мажор нужно использовать прием барре. Саня знает тысячи современных
песен, в любой тусовке он "в тему", т.к. может сносно сыграть практически
любую песню, какую вы захотите. И если вы спросите у Сани умеет ли он
играть на гитаре, то он вероятно скажет что он виртуоз, и что еще
он гений бас-гитары и кудесник барабанов.
А вот если вы спросите у Дейва Гилмора, умеет ли он играть на гитаре,
то он наверняка скажет что у него изредка получается хороший бенд
в Shine On You Creazy Diamond (Part II).
И, что характерно, Саня над ним обязательно посмеется. Потому что
Саня не знает что такое Pink Floyd, и вообще Саня классный гитарист,
он же знает три с половиной аккорда.
Самое смешное, что Саня будет по своему прав, ибо D.G. и Саня -- это
два совершенно различных масштаба. И вероятно, Саня будет говорить
что играть как D.G. -- это слишком сложно, тут много граблей, и даже
иногда приходиться напрягать мозг, чтобы хорошо сыграть, в то время как
фанерная гитара и три аккорда -- это наш выбор, потому что деревенские
девченки от этой комбинации без ума.
Давайте проведем небольшой экскурс в историю. Вспомните, уважаемый
человек заводит тему про printf(), в которой поносит C++ и обвиняет
его во всех смертных грехах, топик переходит в 12-страничный флейм который
не приносит ничего толкового. А вот другой человек, встретившись с той же ошибкой
подумает: "при использовании printf() надо быть внимательнее", вот и все.
Или вот другой персонаж решает войти в стройные ряды emacs-оидов, он качает,
пытается все установить и настроить, у него ничего не получается и он
заводит тему с обидным названием "xemacs-помойка", который также переходит
в мощный многостраничный флейм, заканичвающийся матом и перемыванием косточек.
А другой человек скачивает тот же дистрибутив, устанавливает, у него ничего
не получается, он читает документацию, снова пробует, снова читает, и вот --
чудо -- все работает!
Если хотите увидеть невежество в абсолюте, безграничное и бесконечное
столпотворение невежд -- посмотрите форум на gamedev.ru.
Так вот, мое программное заявление заключается в том, что нет плохих
инструментов. Есть замечательная пословица: "нечего не зеркало пенять
коли рожа кривая".
"Тысячи людей с удовольствием программируют на C++, почему у меня это не
получается?"
"Тысячи людей с удовольствием используют Emacs, почему у меня это не
получается?"
Я приведу небольшой пример. Некоторое время назад к нам в контору взяли
человека, с которым я должен был работать. Когда он стал спрашивать меня
про разницу между виртуальными и статическими функциями, я удивился: как
могли взять человека, который не знает даже этого. Но когда он стал писать
сложнейшие части системы, моему удивлению небыло пределов.
Именно поэтому, я утверждаю что C++ простой и интуитивный язык. Совершенно
не нужно знать тонкости ADL, чтобы писать нужные и полезные программы. Точка.
У меня недавно был совершенно замечательный опыт общения с конечным
пользователем. Он рассказывал, что в один прекрасный момент начальство
решило обновить их базу данных и вот молодые люди в очках с высокими
лбами написали новую базу данных на .NET. База оказалась неудобной и полной
ошибок и они вернулись к старой, проверенной базе на FoxPro. Как выразился
конечный пользователь, "эта база данных умненькая, проводишь сканером, а она
все заносит в базу"
Но почему старая база данных оказалась лучше новой? FoxPro лучше .NET? Не
верю. Что помешало программистам с высокими лбами в очках написать "умненькую"
базу данных? Я думаю, что все дело в них самих.
Фишка в том, что у каждого инструмента есть правильный способ использования.
Фишка в том, что инструмент может не понравиться программисту из чисто
субъективных причин.
Фишка в том, что на языке конкретному проргаммисту может быть трудно выразить
свои мысли, а может быть, что мыслей нет вообще.
Отношение конкретного программиста к конкретному языку может быть основано на
сотне различных факторов, объективных и субъективных, на вкусе, способе мышления,
на настроении, которое было у человека, когда он столкнулся с языком, на
царящей в этот момент парадигме и идеях программирования.
Потрясающе малое количество людей могут делать выводы независимо.
И, самая главная истина заключается в том, что иногда при работе с техникой
возникает раздражение, и ни в коем случае не стоит позволять раздражению
формировать свое отношение к технике.
Поймите, что никто не утверждает что Oberon сам по себе плох.
Точно так же, как никто не утверждает что BlackBox сам по себе плох.
И никто не будет говорить что красный Fender Stratocaster с сериным
номером DG00001 сам по себе плох -- ведь на нем можно сыграть то, что
заставляет миллионы сердец по всему миру биться чаще.
А вы, почему то беретесь говорить, что C++ плох, дескать он труден.
Помилуйте! Ведь он гарантированно позволяет добиться таких результатов!
Вероятно, на нем написано более чем 90 процентов софта, которым вы пользуйтесь
ежедневно.
Качественного, дешевого, классного софта. Прямо здесь и прямо сейчас.
И пока вы здесь, расписываясь в своем невежестве и незнании поносите
этот язык, миллионы талантливых программистов по всему миру с удовольствием
программируют на нем.
Прямо здесь и прямо сейчас.
Засим, хотелось бы попросить прощения за некоторую жесткость в рассуждениях
и высказываниях, но что делать -- такова истина, а с ней не поспоришь.
Здравствуйте, sch, Вы писали:
sch>После прочтения темы http://blackbox.metasystems.ru/forum/viewtopic.php?t=5 я все-таки заинтересовался, что же представляет из себя этот Оберон? И почему потомки должны быть им благодарны?
sch>(Да и имя какое хорошее Вирт подобрал: Оберон -- это царь эльфов.)
sch>Захожу на главную страничку сайта и вижу...
sch>
sch>У нас есть значительный опыт использования языков C++ (Borland C++ Builder, GCC) и Delphi.
sch>Дорогие коллеги! Ничего личного, но Borland C++ Builder -- это не один из "языков C++", это среда разработки; а GCC -- это вообще набор компиляторов от GNU. У C++ вообще нет и не может быть диалектов, т.к. есть ANSI\ISO\IEC 14882.
sch>P.S. Трудящиеся скандируют: "hello world на Обероне -- в студию!"
Мне как ярой поклоннице C++ горько слышать от своего коллеги такие слова. Почему у моего любимца не могут быть диалекты? Вы хотите сказать, что C++ в реализации Microsoft это стандарт. А когда он ему соответствовал? А Борланд когда соответствовал и на сколько? А какому из них: ISO 14882:1998 или ISO 14882:2003? А знаете ли вы про работы над C++0x ? А что такое GNU C++? Печально, однако
Здравствуйте, Nickolay Ch, Вы писали:
NC>Действительно, нельзя же иронизировать над человеком, изучивший С++(вообще то один из самых сложных промышленных языков) в совершенстве...
Действительно. Вот ведь глупость какая, ха-ха!
А то, что за этой насмешкой стоит очевидный факт, что язык Си++ нельзя выучить в совершенстве за 1 год (и за два, и за три, и вообще нельзя ) принимается как должное.
Вот так вот проводят свои лучшие годы серьезные люди, и это даже не насмешка. Это сочувствие.
Но существует одно качество, которое нельзя купить, — это надежность. Цена надежности — погоня за крайней простотой. Это цена, которую очень богатому труднее всего заплатить.
Здравствуйте, CrystaX, Вы писали:
CX>Вот я честно пытался разобраться с Обероном, но "не поймал кайфа". Да, наверное, у меня не хватило терпения (да и других дел много), но вот что интересно — C++ меня "зацепил" почти сразу же после начала его изучения. Ты посмотри на высказывания других C++ программистов — ведь очень многие говорят о C++ в том же духе. C++ — интересный язык. Я хочу, чтобы работать было интересно. От Оберона же веет какой-то затхлостью, прости господи. Сразу же прошу не возражать на это заявление — это исключительно мое мнение и касается оно интересности языка как такового и ничего более.
Я честно пытался писать карандашом но "не поймал кайфа", уж какой-то он затхлый. Другое дело писать чернильной ручкой. Она меня сразу зацепила. Её надо самостоятельно заправлять чернилами. Следить чтобы чернила не протекали, и чтобы по неосторожности не получилось кляксы. После написания текста чернильной ручкой, бумагу надо просушить — чернила должны высохнуть. Чернильная ручка — интересная ручка! Не то что какой-то там неинтересный карандаш. Мне интересно писать чернильной ручкой!
Просмотрел темы... немного думал...
Там начинается неплохой холи вар Оберон vs C++.
Интересно будет почитать на досуге.
А вот мой любимый .нет заслужил комплимент от самих последователей дедушки Вирта:
".NET вообще тяготеет к паскалевким концепциям с с-шным синтаксисом", так что я теперь спокоен
Чтож, одной развлекаловкой с псевдопрограммистским уклоном в инете стало больше(наряду с отличным сайтом http://www.linux.org.ru/index.jsp )...
Здравствуйте, Сергей Губанов, Вы писали:
СГ>Здравствуйте!
СГ>Теперь у оберонщиков, наконец-то, появилась своя "песочница": СГ>http://metasystems.ru/blackbox/frm/
СГ>С уважением, СГ>Сергей Губанов
А почему было им не выделить здесь отдельную песочницу?
Здравствуйте, AVC, Вы писали:
CX>>Алексей, рад тебя слышать.
AVC>Аналогично, Дмитрий!
CX>>Ну например, ни один уважающий себя физик не скажет, что он выучил физику в совершенстве, и будет прав. При этом физики, как правило, действительно серьезные люди, и именно физике они посвящают свои лучшие годы. Их ведь ты не жалеешь?
AVC>Однако физика не создает искусственных трудностей. AVC>Кроме того, физика — наука (а наука, как известно, никогда не познает предмет до конца).
Языки программирования — это тоже отнюдь не сельское хозяйство.
AVC>А язык программирования — всего лишь один из инструментов. Он не должен "заслонять" собой задачу.
Видимо, в этом и есть корень всех противоречий. Для меня язык — не только (и даже не столько) инструмент. Для меня язык представляет исследовательский интерес. А проекты, которые выполняются с его помощью — полигон для испытаний его возможностей.
Можно до хрипоты спорить о правильности такого подхода, но я не хочу. В конце-концов, я таков, каков я есть. И находится достаточное количество работодателей, которых мой подход устраивает.
Вот я честно пытался разобраться с Обероном, но "не поймал кайфа". Да, наверное, у меня не хватило терпения (да и других дел много), но вот что интересно — C++ меня "зацепил" почти сразу же после начала его изучения. Ты посмотри на высказывания других C++ программистов — ведь очень многие говорят о C++ в том же духе. C++ — интересный язык. Я хочу, чтобы работать было интересно. От Оберона же веет какой-то затхлостью, прости господи. Сразу же прошу не возражать на это заявление — это исключительно мое мнение и касается оно интересности языка как такового и ничего более.
AVC>Чтобы пояснить свою мысль, я немного "трансформирую" текст обычного объявления для приема программистов на работу. AVC>Получится что-нибудь вроде: AVC>
AVC>Требуется специалист, владеющий карандашом.
AVC>Желателен опыт владения авторучкой.
AVC>Владение языком — в совершенстве (чтобы наклеивать марки ).
Мне несимпатично такое отношение к работе. Оно не предполагает развития. Я на такую работу не пойду.
AVC>И вот примерно это (утрированно, конечно) мы здесь с таким жаром обсуждаем.
Нееет! Это не мы обсуждаем! Это ты обсуждаешь! А я — обсуждаю совсем другое. А Евгений, например, — что-то и вовсе третье. Пока мы это не поймем — так и будем "с жаром" обсуждать разные вещи.
Здравствуйте, AVC, Вы писали:
AVC>Здравствуйте, sch, Вы писали:
sch>>А вы, почему то беретесь говорить, что C++ плох, дескать он труден.
AVC>Я так понял — этот пост адресован мне. AVC>Так что отвечаю. AVC>Сразу вопрос: отрицаете ли Вы, что Си++ — большой и трудный язык? AVC>Я участвовал в достаточно серьезных проектах на Си++. AVC>Приведу Вам типовую шутку моих коллег (и фанатов Си++): AVC>
AVC>Си++ был создан, чтобы отсечь лишних людей от индустрии.
sch>>Помилуйте! Ведь он гарантированно позволяет добиться таких результатов! sch>>Вероятно, на нем написано более чем 90 процентов софта, которым вы пользуйтесь sch>>ежедневно.
AVC>На RSDN периодически возникает тема "сравнительной популярности" языков программирования. AVC>Проводятся собственные опросы, приводятся также результаты чужих. AVC>Согласно этим данным, Си++ не является самым популярным языком программирования. AVC>Поэтому согласитесь, что "более 90 процентов софта" — некоторый перебор.
sch>>Качественного, дешевого, классного софта. Прямо здесь и прямо сейчас.
AVC>Как понимать "дешевизну" софта? AVC>Си++ — сложный язык, обучение занимает много времени. (Это данные самих сторонников Си++.) AVC>Как же такой софт может быть дешевым?
sch>>И пока вы здесь, расписываясь в своем невежестве и незнании поносите sch>>этот язык, миллионы талантливых программистов по всему миру с удовольствием sch>>программируют на нем.
AVC>Увы. Расписываюсь в невежестве. AVC>Хотя все же с некоторым (вероятно, недостаточным; но у кого достаточные познания в Си++? ) знанием предмета.
sch>>Засим, хотелось бы попросить прощения за некоторую жесткость в рассуждениях sch>>и высказываниях, но что делать -- такова истина, а с ней не поспоришь.
AVC>Never mind! AVC>Ясно, что Вам нравится Си++, а я невольно задел Ваши чувства. Ваш выстрел, граф! AVC>А вот насчет истины Вы, пожалуй, несколько погорячились!
Господа гусары, позвольте мадемуазель вклиниться в ваш горячий спор. Пошто вы ругаете C++ ? Хороший язык. Даже я его освоила. А назовите мне хотя бы одну мадемуазель, которая освоила Оберон (я не в счет)? И приведите примерчик. То-то...
Здравствуйте, sch, Вы писали:
sch>P.S. Покажите пожалуйста реализацию какой-нибудь алгоритмически-сложной задачи на Обероне, будте добры. Хотя бы пузырьковую сортировку. Ей богу, очень интересно.
Быстрое дискретное преобразование Фурье подойдёт?
MODULE SignalsFFT;
IMPORT Math, SignalsMath;
CONST
Pi = SignalsMath.Pi;
chop_const = 1.0E-15;
TYPE
Complex = SignalsMath.Complex;
Array* = ARRAY OF Complex;
ReversIndex = POINTER TO RECORD
p: INTEGER;
index: POINTER TO ARRAY OF INTEGER;
next: ReversIndex
END;
Trig = POINTER TO RECORD
N: INTEGER;
cos, sin: POINTER TO ARRAY OF REAL;
next: Trig
END;
VAR
ReversIndexList: ReversIndex;
trigList, invTrigList: Trig;
PROCEDURE GetReverseIndexTable(p: INTEGER): POINTER TO ARRAY OF INTEGER;
VAR u: ReversIndex; i, n: INTEGER;
BEGIN
u := ReversIndexList;
WHILE (u # NIL) & (u.p # p) DO u := u.next END;
IF u = NIL THEN
NEW(u); NEW(u.index, p); u.p := p;
n := SignalsMath.Log(2*p - 1);
FOR i := 0 TO p-1 DO u.index[i] := ORD( SignalsMath.Reverse(BITS(i), n) ) END;
u.next := ReversIndexList; ReversIndexList := u
END;
RETURN u.index
END GetReverseIndexTable;
PROCEDURE BitReverseCopy (IN input: Array; OUT output: Array);
VAR i, j, p: INTEGER; a,b: Complex; index: POINTER TO ARRAY OF INTEGER;
BEGIN p := LEN(input) DIV 2;
index := GetReverseIndexTable(p);
FOR i := 0 TO p-1 DO
j := index[i]; a := input[i]; b := input[i+p];
output[j].re := a.re + b.re; output[j].im := a.im + b.im;
output[j+1].re := a.re - b.re; output[j+1].im := a.im - b.im;
END
END BitReverseCopy;
PROCEDURE fft4 (direction: BOOLEAN; VAR val: Array);
VAR i0, i1, i2, i3, N: INTEGER; z0, z1, z2, z3: Complex;
BEGIN N := LEN(val); i0 := 0; i1 := 1; i2 := 2; i3 := 3;
IF direction THEN
WHILE i3 < N DO
z0 := val[i0]; z1 := val[i1]; z2 := val[i2]; z3 := val[i3];
val[i0].re := z0.re + z2.re; val[i0].im := z0.im + z2.im;
val[i1].re := z1.re - z3.im; val[i1].im := z1.im + z3.re;
val[i2].re := z0.re - z2.re; val[i2].im := z0.im - z2.im;
val[i3].re := z1.re + z3.im; val[i3].im := z1.im - z3.re;
INC(i0, 4); INC(i1, 4); INC(i2, 4); INC(i3, 4);
END
ELSE
WHILE i3 < N DO
z0 := val[i0]; z1 := val[i1]; z2 := val[i2]; z3 := val[i3];
val[i0].re := z0.re + z2.re; val[i0].im := z0.im + z2.im;
val[i1].re := z1.re + z3.im; val[i1].im := z1.im - z3.re;
val[i2].re := z0.re - z2.re; val[i2].im := z0.im - z2.im;
val[i3].re := z1.re - z3.im; val[i3].im := z1.im + z3.re;
INC(i0, 4); INC(i1, 4); INC(i2, 4); INC(i3, 4);
END
END
END fft4;
PROCEDURE GetCosSin(direction: BOOLEAN; N: INTEGER; OUT cos, sin: POINTER TO ARRAY OF REAL);
VAR n: INTEGER; coeff: REAL; u: Trig;
BEGIN
N := N DIV 2;
IF direction THEN u := trigList ELSE u := invTrigList END;
WHILE (u # NIL) & (u.N # N) DO u := u.next END;
IF u = NIL THEN
IF direction THEN coeff := Pi / N ELSE coeff := - Pi / N END;
NEW(cos, N); NEW(sin, N);
FOR n := 0 TO N-1 DO cos[n] := Math.Cos(coeff*n); sin[n] := Math.Sin(coeff*n) END;
NEW(u); u.N := N; u.cos := cos; u.sin := sin;
IF direction THEN u.next := trigList; trigList := u ELSE u.next := invTrigList; invTrigList := u END;
ELSE
cos := u.cos; sin := u.sin
END
END GetCosSin;
PROCEDURE Mult(VAR array: Array; multiplier: REAL);
VAR i: INTEGER;
BEGIN
FOR i := 0 TO LEN(array)-1 DO
array[i].re := array[i].re * multiplier;
array[i].im := array[i].im * multiplier;
END
END Mult;
PROCEDURE Check(IN input: Array; OUT output: Array);
VAR N: INTEGER;
BEGIN N := LEN(input);
ASSERT(SignalsMath.IsPower2(N), 20);
ASSERT(LEN(output) = N, 21);
END Check;
PROCEDURE FFT (direction: BOOLEAN; IN input: Array; OUT output: Array);
VAR np, d, n, k, m, p2, p, N, f: INTEGER; a, b, t: Complex; cos, sin: REAL;
Cos, Sin: POINTER TO ARRAY OF REAL;
BEGIN
Check(input, output);
N := LEN(input);
BitReverseCopy(input, output);
fft4(direction, output);
GetCosSin(direction, N, Cos, Sin);
p := 4;
WHILE p < N DO
p2 := 2*p; m := 0; d := N DIV p2;
WHILE m < N DO
f := 0;
FOR k := 0 TO p-1 DO
n := m + k; a := output[n]; np := n+p; t := output[np];
cos := Cos[f]; sin := Sin[f]; INC(f, d);
b.re := cos*t.re - sin*t.im; b.im := sin*t.re + cos*t.im;
output[n].re := a.re + b.re; output[n].im := a.im + b.im;
output[np].re := a.re - b.re; output[np].im := a.im - b.im;
END;
INC(m, p2);
END;
p := p2;
END;
Mult(output, 1.0/Math.Sqrt(N))
END FFT;
PROCEDURE Direct* (IN signal: Array; OUT spectrum: Array);
BEGIN FFT(TRUE, signal, spectrum)
END Direct;
PROCEDURE Inverse* (IN spectrum: Array; OUT signal: Array);
BEGIN FFT(FALSE, spectrum, signal)
END Inverse;
END SignalsFFT.
MODULE SignalsMath;
CONST
Pi* = 3.1415926535897932384626433832795028841971693;
Epsilon* = 1.0E-15;
TYPE
Complex* = RECORD
re*, im*: REAL
END;
PROCEDURE ChopReal* (VAR x: REAL);
BEGIN
IF ABS(x) <= Epsilon THEN x := 0.0 END
END ChopReal;
PROCEDURE ChopComplex* (VAR z: Complex);
BEGIN
IF ABS(z.re) <= Epsilon THEN z.re := 0.0 END;
IF ABS(z.im) <= Epsilon THEN z.im := 0.0 END
END ChopComplex;
PROCEDURE ChopComplexArray* (VAR z: ARRAY OF Complex);
VAR n: INTEGER;
BEGIN
FOR n := 0 TO LEN(z)-1 DO
IF ABS(z[n].re) <= Epsilon THEN z[n].re := 0.0 END;
IF ABS(z[n].im) <= Epsilon THEN z[n].im := 0.0 END
END
END ChopComplexArray;
PROCEDURE Log* (n: INTEGER): INTEGER;
VAR i, r: INTEGER;
BEGIN r := 0; WHILE n > 0 DO n := ASH(n, -1); INC(r) END; RETURN r
END Log;
PROCEDURE IsPower2* (N: INTEGER): BOOLEAN;
VAR i, n: INTEGER; s: SET;
BEGIN s := BITS(N); n := 0;
FOR i := 0 TO 31 DO
IF i IN s THEN INC(n) END
END;
RETURN n = 1
END IsPower2;
PROCEDURE RoundToPower2* (N: INTEGER): INTEGER;
BEGIN
RETURN ASH(1, Log(N))
END RoundToPower2;
PROCEDURE Reverse* (s: SET; Count: INTEGER): SET;
VAR i: INTEGER; r: SET;
BEGIN r := {}; DEC(Count);
FOR i := 0 TO Count DO
IF i IN s THEN INCL(r, Count - i) END
END; RETURN r
END Reverse;
END SignalsMath.
(Да и имя какое хорошее Вирт подобрал: Оберон -- это царь эльфов.)
Захожу на главную страничку сайта и вижу...
У нас есть значительный опыт использования языков C++ (Borland C++ Builder, GCC) и Delphi.
Дорогие коллеги! Ничего личного, но Borland C++ Builder -- это не один из "языков C++", это среда разработки; а GCC -- это вообще набор компиляторов от GNU. У C++ вообще нет и не может быть диалектов, т.к. есть ANSI\ISO\IEC 14882.
P.S. Трудящиеся скандируют: "hello world на Обероне -- в студию!"
Здравствуйте, Oyster, Вы писали:
O>Я преклоняюсь перед автором этих строк! Не то что я, бездырь, — за два года ни черта .NET FW не знаю...
Советую Вам поразмышлять над этим своим утверждением хотя бы одну минуту.
(Что такое одна минута, когда только на .NET уходят годы?)
А иронизировать-то мы все мастера.
Но существует одно качество, которое нельзя купить, — это надежность. Цена надежности — погоня за крайней простотой. Это цена, которую очень богатому труднее всего заплатить.
Здравствуйте, Nickolay Ch, Вы писали:
NC>Действительно, нельзя же иронизировать над человеком, изучивший С++(вообще то один из самых сложных промышленных языков) в совершенстве...
Забыл написать что всего то за 1 год.
sch>У нас есть значительный опыт использования языков C++ (Borland C++ Builder, GCC) и Delphi.
sch>Дорогие коллеги! Ничего личного, но Borland C++ Builder -- это не один из "языков C++", это среда разработки; а GCC -- это вообще набор компиляторов от GNU.
Я думаю, что они в скобках просто указали конкретные IDE с которыми работали, а не языки. А вот насчёт Delphi не знаю: IDE это или язык тоже так называется ?
sch>У C++ вообще нет и не может быть диалектов, т.к. есть ANSI\ISO\IEC 14882.
Тем не менее они есть. Или вы хотите сказать, что C++ везде одинаков ?
SJA>Я думаю, что они в скобках просто указали конкретные IDE с которыми работали, а не языки. А вот насчёт Delphi не знаю: IDE это или язык тоже так называется ?
Язык — Object Pascal. Delphi — это все же среда разработки
Здравствуйте, Nickolay Ch, Вы писали:
NC>>Действительно, нельзя же иронизировать над человеком, изучивший С++(вообще то один из самых сложных промышленных языков) в совершенстве... NC>Забыл написать что всего то за 1 год.
Мое имхо в том, что изучить C++ в совершенстве может только разработчик C++ компилятора.
Может быть человек, о котором идет речь написал свой компилятор C++?
... << RSDN@Home 1.1.4 stable rev. 510>>
SObjectizer: <микро>Агентно-ориентированное программирование на C++.
Алексей, рад тебя слышать.
NC>>Действительно, нельзя же иронизировать над человеком, изучивший С++(вообще то один из самых сложных промышленных языков) в совершенстве...
AVC>Действительно. Вот ведь глупость какая, ха-ха! AVC>А то, что за этой насмешкой стоит очевидный факт, что язык Си++ нельзя выучить в совершенстве за 1 год (и за два, и за три, и вообще нельзя ) принимается как должное. AVC>Вот так вот проводят свои лучшие годы серьезные люди, и это даже не насмешка. Это сочувствие.
Ну например, ни один уважающий себя физик не скажет, что он выучил физику в совершенстве, и будет прав. При этом физики, как правило, действительно серьезные люди, и именно физике они посвящают свои лучшие годы. Их ведь ты не жалеешь?
AVC>Действительно. Вот ведь глупость какая, ха-ха! AVC>А то, что за этой насмешкой стоит очевидный факт, что язык Си++ нельзя выучить в совершенстве за 1 год (и за два, и за три, и вообще нельзя ) принимается как должное. AVC>Вот так вот проводят свои лучшие годы серьезные люди, и это даже не насмешка. Это сочувствие.
Вы не поверите, но сносно программировать на C++ можно научиться за пару недель; многие останавливаются в своем развитии на этом уровне, ибо этот уровень достаточен для написания серьезных программ.
Видимо, предметом спора стала разница в понимании терминалогии. Знать C++ означает знать наизусть весь текст стандарта, понимать его и уметь применять на практике; естественно, что это не воможно из-за объема информации, который придется выучить.
Но, как отмечали замечательные мастера David Vandervoode и Nicolai Josuttis в своей превосходной монографии, посвященной шаблонам C++, книге, перегруженной деталями и часто малозначительными правилами, "многое в C++ интуитивно-понятно и просто, но при этом есть сотни правил, которые заставляют язык вести себя именно таким образом".
Так что миф о сложности C++ это всего лишь миф.
P.S. Покажите пожалуйста реализацию какой-нибудь алгоритмически-сложной задачи на Обероне, будте добры. Хотя бы пузырьковую сортировку. Ей богу, очень интересно.
Здравствуйте, CrystaX, Вы писали:
CX>Здравствуйте, AVC, Вы писали:
CX>Алексей, рад тебя слышать.
Аналогично, Дмитрий!
CX>Ну например, ни один уважающий себя физик не скажет, что он выучил физику в совершенстве, и будет прав. При этом физики, как правило, действительно серьезные люди, и именно физике они посвящают свои лучшие годы. Их ведь ты не жалеешь?
Однако физика не создает искусственных трудностей.
Кроме того, физика — наука (а наука, как известно, никогда не познает предмет до конца).
А язык программирования — всего лишь один из инструментов. Он не должен "заслонять" собой задачу.
Чтобы пояснить свою мысль, я немного "трансформирую" текст обычного объявления для приема программистов на работу.
Получится что-нибудь вроде:
Требуется специалист, владеющий карандашом.
Желателен опыт владения авторучкой.
Владение языком — в совершенстве (чтобы наклеивать марки ).
И вот примерно это (утрированно, конечно) мы здесь с таким жаром обсуждаем.
Но существует одно качество, которое нельзя купить, — это надежность. Цена надежности — погоня за крайней простотой. Это цена, которую очень богатому труднее всего заплатить.
Здравствуйте, sch, Вы писали:
sch>А вы, почему то беретесь говорить, что C++ плох, дескать он труден.
Я так понял — этот пост адресован мне.
Так что отвечаю.
Сразу вопрос: отрицаете ли Вы, что Си++ — большой и трудный язык?
Я участвовал в достаточно серьезных проектах на Си++.
Приведу Вам типовую шутку моих коллег (и фанатов Си++):
Си++ был создан, чтобы отсечь лишних людей от индустрии.
sch>Помилуйте! Ведь он гарантированно позволяет добиться таких результатов! sch>Вероятно, на нем написано более чем 90 процентов софта, которым вы пользуйтесь sch>ежедневно.
На RSDN периодически возникает тема "сравнительной популярности" языков программирования.
Проводятся собственные опросы, приводятся также результаты чужих.
Согласно этим данным, Си++ не является самым популярным языком программирования.
Поэтому согласитесь, что "более 90 процентов софта" — некоторый перебор.
sch>Качественного, дешевого, классного софта. Прямо здесь и прямо сейчас.
Как понимать "дешевизну" софта?
Си++ — сложный язык, обучение занимает много времени. (Это данные самих сторонников Си++.)
Как же такой софт может быть дешевым?
sch>И пока вы здесь, расписываясь в своем невежестве и незнании поносите sch>этот язык, миллионы талантливых программистов по всему миру с удовольствием sch>программируют на нем.
Увы. Расписываюсь в невежестве.
Хотя все же с некоторым (вероятно, недостаточным; но у кого достаточные познания в Си++? ) знанием предмета.
sch>Засим, хотелось бы попросить прощения за некоторую жесткость в рассуждениях sch>и высказываниях, но что делать -- такова истина, а с ней не поспоришь.
Never mind!
Ясно, что Вам нравится Си++, а я невольно задел Ваши чувства. Ваш выстрел, граф!
А вот насчет истины Вы, пожалуй, несколько погорячились!
Но существует одно качество, которое нельзя купить, — это надежность. Цена надежности — погоня за крайней простотой. Это цена, которую очень богатому труднее всего заплатить.
Здравствуйте, eao197, Вы писали:
E>Здравствуйте, Nickolay Ch, Вы писали:
NC>>>Действительно, нельзя же иронизировать над человеком, изучивший С++(вообще то один из самых сложных промышленных языков) в совершенстве... NC>>Забыл написать что всего то за 1 год.
E>Мое имхо в том, что изучить C++ в совершенстве может только разработчик C++ компилятора. E>Может быть человек, о котором идет речь написал свой компилятор C++?
В нашей необъятной стране не так много людей написало компилятор C++. А хороший компилятор C++ и того меньше. Один такой работает в Цюрихе, зовут Евгением Зуевым. Сейчас вроде дописывает компилятор Зоннона. Что-то Оберон начинает все больше мне напоминать черную дыру — туда уходят от C++, а обратно к родным пенатам уже не возвращаются...
Здравствуйте, Mamut, Вы писали:
SJA>>Я думаю, что они в скобках просто указали конкретные IDE с которыми работали, а не языки. А вот насчёт Delphi не знаю: IDE это или язык тоже так называется ?
M>Язык — Object Pascal. Delphi — это все же среда разработки
что вы, что вы. Уж несколько лет как в Борланде языка Object Pascal нет. Он теперь зовется Delphi. Отстаете от жизни, однако
Шапокляк
Re[10]: Теперь у Оберонщиков есть своя "песочница"
sch wrote: > Или вот другой персонаж решает войти в стройные ряды emacs-оидов, он качает, > пытается все установить и настроить, у него ничего не получается и он > заводит тему с обидным названием "xemacs-помойка", который также переходит > в мощный многостраничный флейм, заканичвающийся матом и перемыванием > косточек. > А другой человек скачивает тот же дистрибутив, устанавливает, у него ничего > не получается, он читает документацию, снова пробует, снова читает, и вот -- > чудо -- все работает!
Для честности скажу, что как мне показалось, "вот другой персонаж"
снял-таки желаемые сливки — если ему надо было найти много надстроек к
emacs, то в начале спора emacs-оиды дали ему все нужные ему ссылки. А
XEmacs-оиды указали на многие граблеопасные действия, которые надо было
делать по-другому. Впрочем, ему было интересно не это, и сливки он
снимал с сообщений ViM-щиков.
А во "всё работает" я поверить не могу. Всё работать не может —
нет предела совершенству.
AVC wrote:
> Как понимать "дешевизну" софта? > Си++ — сложный язык, обучение занимает много времени. (Это данные > самих сторонников Си++.) > Как же такой софт может быть дешевым?
Тут ведь как: "Дешовый, быстрый, качественный — выбирай любые два". С++
ориентирован на два последние варианта.
--
С уважением,
Alex Besogonov (alexy@izh.com)
Posted via RSDN NNTP Server 1.9
Sapienti sat!
Re[10]: Теперь у Оберонщиков есть своя "песочница"
sch wrote:
> Или вот другой персонаж решает войти в стройные ряды emacs-оидов, он > качает, > пытается все установить и настроить, у него ничего не получается и он > заводит тему с обидным названием "xemacs-помойка", который также переходит > в мощный многостраничный флейм, заканичвающийся матом и перемыванием > косточек. > А другой человек скачивает тот же дистрибутив, устанавливает, у него > ничего > не получается, он читает документацию, снова пробует, снова читает, и > вот -- > чудо -- все работает!
Но-но, не надо передергивать.
> "Тысячи людей с удовольствием программируют на C++, почему у меня это не > получается?"
Может быть и что С++ не подходит для данной задачи. Для каких задач С++
не подходит и почему — это уже другой вопрос.
> "Тысячи людей с удовольствием используют Emacs, почему у меня это не > получается?"
Здравствуйте, шапокляк, Вы писали:
E>>Мое имхо в том, что изучить C++ в совершенстве может только разработчик C++ компилятора. E>>Может быть человек, о котором идет речь написал свой компилятор C++?
Ш>В нашей необъятной стране не так много людей написало компилятор C++. А хороший компилятор C++ и того меньше. Один такой работает в Цюрихе, зовут Евгением Зуевым. Сейчас вроде дописывает компилятор Зоннона. Что-то Оберон начинает все больше мне напоминать черную дыру — туда уходят от C++, а обратно к родным пенатам уже не возвращаются...
Ш>[Шапокляк]
Нет, ну это же надо, а?!
Один единственный человек в нашей необъятной стране знал Си++ в совершенстве (по определению eao197).
И тот бросил. "Слишком для меня этот язык прост," — говорит.
Чаю, запи-и-ил с тоски-то, горемычный...
И ушел — неведомо куды, к каким-то оберонам...
Это же, можно сказать, трагедь — национального масштаба.
Все, режу лук, сейчас польются слезы...
Но существует одно качество, которое нельзя купить, — это надежность. Цена надежности — погоня за крайней простотой. Это цена, которую очень богатому труднее всего заплатить.
SJA>>>Я думаю, что они в скобках просто указали конкретные IDE с которыми работали, а не языки. А вот насчёт Delphi не знаю: IDE это или язык тоже так называется ?
M>>Язык — Object Pascal. Delphi — это все же среда разработки
Ш>что вы, что вы. Уж несколько лет как в Борланде языка Object Pascal нет. Он теперь зовется Delphi. Отстаете от жизни, однако
Неужели решились переименовать? Просто в хелпе (правда, еще в годы 6-го Билдера) повсюду был Object Pascal.
M>>Неужели решились переименовать? Просто в хелпе (правда, еще в годы 6-го Билдера) повсюду был Object Pascal.
P>Билдера? Может, Delphi? Хотя, Builder, вроде, тоже где-то внутри Pascal-компилятор прячет.
Я имел в виду в то же время, примерно. А Билдер поставляется с компилятором и дебаггером паскалевским — это для того, чтобы дельфийные компоненты цеплять.
Здравствуйте, Mamut, Вы писали:
M>Я имел в виду в то же время, примерно. А Билдер поставляется с компилятором и дебаггером паскалевским — это для того, чтобы дельфийные компоненты цеплять.
Значит, правда. Я ни с Delphi, ни с Builder нормально не работал. Так, ковырял пару проектов на Builder, причем очень недолго. Но отложилось, что там Паскаль внутри прячется. В общем, логично.
Здравствуйте, Сергей Губанов, Вы писали:
СГ>Я честно пытался писать карандашом но "не поймал кайфа", уж какой-то он затхлый. Другое дело писать чернильной ручкой. Она меня сразу зацепила. Её надо самостоятельно заправлять чернилами. Следить чтобы чернила не протекали, и чтобы по неосторожности не получилось кляксы. После написания текста чернильной ручкой, бумагу надо просушить — чернила должны высохнуть. Чернильная ручка — интересная ручка! Не то что какой-то там неинтересный карандаш. Мне интересно писать чернильной ручкой!
Сергей, а чей это (с)? Просто интересно — текст понравился
Здравствуйте, Сергей Губанов, Вы писали:
СГ>Здравствуйте, sch, Вы писали:
sch>>P.S. Покажите пожалуйста реализацию какой-нибудь алгоритмически-сложной задачи на Обероне, будте добры. Хотя бы пузырьковую сортировку. Ей богу, очень интересно.
СГ>Быстрое дискретное преобразование Фурье подойдёт?
Не флейма ради, а перфоманс тест можно, по сравнению с скажем Intell Performance Primitives и с той же ралазизацией на плюсах в лоб портированой, просто интрересно насколько качественный код генерит компилятор Оберона.
Здравствуйте, IO, Вы писали:
IO>Здравствуйте, Сергей Губанов, Вы писали:
СГ>>Здравствуйте!
СГ>>Теперь у оберонщиков, наконец-то, появилась своя "песочница": СГ>>http://metasystems.ru/blackbox/frm/
СГ>>С уважением, СГ>>Сергей Губанов IO>А почему было им не выделить здесь отдельную песочницу?
Дык в чём проблема, если наберётся их критическая маса, будут експерты желающие модерировать и в первое время отвечать на ответы.
Но тогда и я по Python-у хочу, думаю нас даже побольше оберонщиков наберётся.