Компьютерный форум
Правила
Вернуться   Компьютерный форум > Форум программистов > Офтопик > Мысли вслух
Перезагрузить страницу Самый крутой язык программирования
Результаты опроса: Самый крутой язык на котором Вы пишете
Assembler 3 6.38%
C 0 0%
C++ 16 34.04%
D 0 0%
Go 1 2.13%
Java 1 2.13%
C# 4 8.51%
Pascal(Modula-*/Oberon-*/Component Pascal/Delphi/Free Pascal) 0 0%
Ada 0 0%
(Visual) Basic 1 2.13%
(Visual) Prolog/Mercury 8 17.02%
Lisp 3 6.38%
ML(SML, OCaml, F#) 1 2.13%
Haskell 1 2.13%
Erlang 0 0%
Nemerle 0 0%
Scala/Kotlin 0 0%
Python 0 0%
Ruby 0 0%
Другой язык (затея этого голосования - полный бред) 8 17.02%
Голосовавшие: 47. Вы ещё не голосовали в этом опросе

Ответ
 
Опции темы Опции просмотра
  (#46 (permalink)) Старый
S.Yu.Gubanov S.Yu.Gubanov вне форума
Member
 
Сообщений: 587
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 03.12.2002
По умолчанию 04.12.2002, 15:08

Цитата:
Originally posted by Garik
[b]Из какой простите библиотеки его вытащить? Разве есть уже такой готовый класс?? И что значит "адаптировать"?
А если "Ключ" и "Значение" - это сложные типы? Как тогда реализовать поиск и прочее? :?:
1) Конечно же из написанной заранее библиотеки. Раз ты используешь уже написанную библиотеку, то и я буду брать уже написанную библиотеку. Если не нравится, то выбирай: или ты собираешься сравнивать скорость написания нужного тебе кода при условии существования необходимых библиотек или же ты собираешься сравнивать скорость написания самих библиотек. А то нашелся герой, знает, что у меня стандартной библиотеки нет и говорит давай мол я свой класс возьму из готовенькой библиотеки, а ты сначала свою библиотеку напиши и от туда класс возьми, и посмотрим у кого в результате получится быстрее. Нет уж, давай исходить из равных начальных условий. Наличие или отсутствие готовой библиотеки - дело временное: кто-то сам ее напишет, кто-то из интернета скачает, а кто-то написал давно еще будучи студентом, а кто-то купит.
2) Понятно что "Ключ" и "Значение" - должны быть в этом случае указателями на сложные типы. А под "Адаптировать" в этом случае надо понимать, очевидно, передачу адреса функции
Код:
function IsEqual(const key1, key2: pointer): boolean;
в класс контейнер, чтобы он умел сравнивать два ключа.
Ответить с цитированием
  (#47 (permalink)) Старый
Garik Garik вне форума
Member
 
Сообщений: 6,201
Сказал(а) спасибо: 0
Поблагодарили 1 раз в 1 сообщении
Регистрация: 07.06.2002
По умолчанию 04.12.2002, 15:21

Вся соль библиотеки STL в том, что она интегрирована в язык Ansi C++.
Ниоткуда скачивать ее не надо. И любой компилятор, на коробке которого написано Ansi C++, должен эту библиотеку реализовывать.
Ну да ладно. Оставим этот вопрос.

Ответьте вот на какие вопросы:
1. Назовите фирмы, которые производят компиляторы Pascla'я. Помимо Borland.
2. Назовите системы программирования, основанные на диалекте Паскаля, кроме Delphi и Kylix.
3. Назовите хотя бы 1 крупную систему, реализованную на Delphi.

Жду ответа.
Идея в том, что Паскаль - мертвый язык. Держится он только на Borland и ее Delphi. Если не станет Дельфи, не станет и Паскаля.
Ответить с цитированием
  (#48 (permalink)) Старый
S.Yu.Gubanov S.Yu.Gubanov вне форума
Member
 
Сообщений: 587
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 03.12.2002
По умолчанию 04.12.2002, 15:42

Цитата:
Originally posted by Garik
[b]Ответьте вот на какие вопросы:
1. Назовите фирмы, которые производят компиляторы Pascla'я. Помимо Borland.
2. Назовите системы программирования, основанные на диалекте Паскаля, кроме Delphi и Kylix.
3. Назовите хотя бы 1 крупную систему, реализованную на Delphi.
Жду ответа.
Идея в том, что Паскаль - мертвый язык. Держится он только на Borland и ее Delphi. Если не станет Дельфи, не станет и Паскаля. 8)
Отвечать на 1), 2), 3) не буду - ответ и так понятен. От того-то я тут в форуме и "кусаюсь", что обидно за пропадающий хороший язык. А еще больше обидно, что самым попсовым является такая бездарность как С++.
Ответить с цитированием
Ads
  (#49 (permalink)) Старый
Garik Garik вне форума
Member
 
Сообщений: 6,201
Сказал(а) спасибо: 0
Поблагодарили 1 раз в 1 сообщении
Регистрация: 07.06.2002
По умолчанию 04.12.2002, 15:45

Цитата:
Originally posted by S.Yu.Gubanov
[b]А еще больше обидно, что самым попсовым является такая бездарность как С++.
Обоснуйте пожалуйста, почему вы так недолюбливаете C++ и Java.
Только пожалуйста, не надо ответов типа: "потому что это отстой!"
Обоснуйте свою точку зрения. Интересно ведь...
Ответить с цитированием
  (#50 (permalink)) Старый
Olesya Olesya вне форума
Member
 
Сообщений: 1,485
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 11.06.2002
По умолчанию 04.12.2002, 16:31

Будут еще вопросы, будут!
На мой вопрос вы ответили неправильно сэр. Я об таком варианте все знают. Вы мне через оператор напишите, пожалуйста! Никаких Add.

На счёт вашей задачи, то соглашусь, что реализаовать на чистом С++ нельзя, разве что в Builder'e. Но если на то пошло то на чистом паскале вы тоже фиг такое сделаете!

На счёт скорости, то многие товарищи кричат что на C++Builder'e разработка программ идёт быстрее чем на Visual C++. А от я б так не сказал. Раньше работал на Builder'e сейчас на Visual C++ и Linux C++ (KDevelop). И бистрее получается на Visual C (по сравненинию с Builder'ом)

Кстате, а драйвер?
Ответить с цитированием
Ads.
  (#51 (permalink)) Старый
Влад Влад вне форума
Специалист
 
Сообщений: 3,884
Сказал(а) спасибо: 1
Поблагодарили 25 раз(а) в 25 сообщениях
Регистрация: 27.06.2002
Адрес: Санкт-Петербург
По умолчанию 04.12.2002, 17:28

Ух, какой горячий спор! Позволю и я себе пару слов вставить.
2 S.Yu.Gubanov
А зачем "кусаться" в форуме? Давай попробуем выяснить, в чем сильные и слабые стороны каждого языка.
Код:
A a;
a += 2.111;
//***************
var a: TA;
...
a := TA.Create;
a.Add(2.111);
...
a.Free;
Давай начнем с того, что это не чистый Паскаль, а - его реализация в системе программирования Delphi. Изначальный же смысл обсуждения касался именно языка. Разницу видишь? Не говоря уж о том, что на чистом C++ код укладывается в две строки, на Паскале - в четыре. Синтаксис предложения на C++ более естественный, и более соответствует оператору сложения.
В качестве более занимательных задач C++ vs Pascal предложил бы переписать на Паскале код с множественным наследованием, например
Код:
class CMyThread {
 // реализация действий, специфичных для потока
};
class CMyWindow {
 // реализация действий, специфичных для окна
};
class CMyThreadedWindow:
   public CMyThread,
   public CMyWindow
{
// ...
};
Или, скажем, реализацию operator[] для разреженных массивов.
Сильная сторона C++ - в том, что он позволяет записать это легко и изящно, а значит - меньше вероятность ошибки.

Цитата:
Originally posted by S.Yu.Gubanov+-->
Цитата:
А напишите на чистом С++ такой код... (skip)
Легко. Но раз уж ты приводишь в качестве аргументов реализацию языка Паскаль в среде Delphi, то я приведу также реализацию кода на С++ в среде MSVC++. Приведу только значимую часть кода (ну лень писать всю обвязку!)
Код:
long GetValue();
void PutValue(long newVal) { Value = newVal > 0 ? newVal : 0.0; };
__declspec( property( get=GetValue,put=PutValue )) long Value;
Нисколько не сложнее, чем на Delphi.

<!--QuoteBegin- Garik

[b]Или назовите крупную известную программу или пакет, написанный на Дельфи???
The Bat!
Цитата:
Идея в том, что Паскаль - мертвый язык. Держится он только на Borland и ее Delphi.
Слухи о его смерти сильно преувеличены Есть еще TMT Pascal, Free Pascal, в том числе и в реализации для *nix, и для встроенных (embedded) систем.
Ответить с цитированием
  (#52 (permalink)) Старый
S.Yu.Gubanov S.Yu.Gubanov вне форума
Member
 
Сообщений: 587
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 03.12.2002
По умолчанию 04.12.2002, 17:55

Цитата:
Originally posted by Garik
[b]Обоснуйте пожалуйста, почему вы так недолюбливаете C++ Только пожалуйста, не надо ответов типа: "потому что это отстой!"
Обоснуйте свою точку зрения. Интересно ведь... :lol:
Открыл книгу "Язык программирования С++" Страуструпа 3 издание и начал листать:
//************************************************** *******************

* ) Путаница с простыми типами
Размер стандартных типов зависит от реализации.
Слишком вольное неявного преобразования типов: false = 0 = NULL
Например, цитирую Страуструпа 3 издание (стр. 111):
"Использование unsigned для гарантии того, что целое будет неотрицательным,
почти никогда не срабатывает из-за правил неявного преобразования типов".
Размер типа char по определению равен 1, а как же двухбайтовые буквы???

* ) Путаница с синтаксисом
Если тип void говорит об отсутствии значения, значит указатель void* есть указатель на
отсутсвующий (несуществующий) тип!!!
Что это за издевательство над психикой человека:
char* const != char const* == const char*
int(*f)(char*); // указатель на функцию возвращающую int
int* f(char*);// функция возвращающая указатель на int
int* Arr[15]; //массив из 15 указателей, а вовсе не указатель на массив из 15 int-ов,
//к тому же Arr[15] - не существует, существует только Arr[14]
Почему нельзя Arr[10, 10], а можно Arr[10][10]?
Какого черта я должен в конце строки всегда писать 'n' ???
Как простому смертному это запомнить (причем это еще самые простые примеры)???

* ) По поводу STL.
В известных книгах "Практика программирования" Керниган, Пайк и в
"Жемчужины программирования" (автор Кент Бек?? не помню) авторы недоумевает по поводу
прожорливости STL. Некоторые программы работают на порядок медленнее и расходуют
на порядок больше памяти чем если бы они были написаны на С, а не С++.

* ) Путаница с инструкциями
Скажите пожалуйста что это за break; внутри switch, когда и так понятно, что после выполнения
кода после одной инструкции case не надо выполнять весь последующий код ??? А если и надо,
то только в извращенных случаях.
Зачем нужен for(x=0; x<1; x+=0.01){ x=2;}если внутри цикла можно изменить значение переменной x ???
Поясню, в Delphi цикл for специально оптимизирован для ускорения работы так, что из переменной
цикла может осуществляться только чтение, но не запись. В любом другом случае вместо for надо
использовать while. В С++ имеем for = while, т.е. по сути дела в С++ нет инструкции for.

* ) Передача аргументов функциям. В С++ аргументы можно передать всего двумя способами: по значению или
по ссылке
void f(int a, int& b)
А в Delphi - всеми четырьмя способами: по значению, по ссылке, только для чтения, только для записи:
procedure f(a: integer; var b: integer; const c: integer; out d: integer);
Массив вообще передать нельзя, а только указатель на его начало, еще заодно надо передать его размер.

*) С какой стати в файле file2.c я должен писать строку типа
extern const int AlphaFactorValue;
для КАЖДОЙ внешней переменной
если в файле file1.c я уже написал
const int AlphaFactorValue = 77;
Пусть компилятор сам посмотрит в файл file1.c и поймет, что такое AlphaFactorValue???
"Стандарт языка С++ вообще не предусматривает концепции "файла"... существуют реализации, которые
не хранят програмный код в исходных файлах" - Страуструп 3 издание стр 248.
Что это за стандарт, в котором написано, что многое зависит от реализации??? Это не стандарт, а профанация.

*) Классы.
class и struct это по сути дела одно и тоже
class A {....}
A a; // Родили экземпляр класса !!! Фантастика!!! А по моему это просто завели новую структуру....
A b;
a = b; //все поля 'b' скопировались в 'a', точно так же как если бы A - был не классом, а структурой !!!
Почему возможно множественное наследование? А потому что класс это не класс, а структура -
объединяем все поля структур вместе и готово! Кто изучал Delphi или Java тот должен интуитивно понимать,
что class это нечто большее чем структура плюс функци.

*) Так не хватает простого дельфийского типа string ...

//************************************************** *******************
До середины книгу долистал, уже устал, дальше идут какие-то дебри я уже в них не понимаю ничего
Ответить с цитированием
  (#53 (permalink)) Старый
S.Yu.Gubanov S.Yu.Gubanov вне форума
Member
 
Сообщений: 587
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 03.12.2002
По умолчанию 04.12.2002, 18:21

Цитата:
Originally posted by Olesya
[b]Вы мне через оператор напишите, пожалуйста. Никаких Add.
...Кстате, а драйвер?
Как я через оператор напишу если его в Delphi нет? Я написал равнозначный по функциональности код через Add(); Препроцессор С++ когда работает, то тоже превращает в вызов функции, так что эффективность одинакова.

А что драйвер, я же уже сказал, что нету никаких внутренних причин в языке Delphi, чтобы нельзя было закодировать драйвер и в то же время в языке С++ нет никаких внутренних причин, по которым это было бы сделать легче. И там и там есть операции с указателями, и там и там можно внедрять ассемблерный код и т.д.
Ответить с цитированием
  (#54 (permalink)) Старый
S.Yu.Gubanov S.Yu.Gubanov вне форума
Member
 
Сообщений: 587
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 03.12.2002
По умолчанию 04.12.2002, 18:39

Цитата:
Originally posted by Влад
[b]Давай начнем с того, что это не чистый Паскаль, а - его реализация в системе программирования Delphi...

переписать на Паскале код с множественным наследованием
1) А я, собственно, про чистый паскаль и не говорил, я говорил про Delphi 7, не как про среду, а как про язык, который в ней есть (Как среда она великолепна и без слов).

2) Ты знаешь, что в Delphi нет множественного наследования, а просишь это сделать! Если есть желание чтобы все было в одном классе, то там по другому с самого начала надо проектировать, через интерфейсы. Для интерфейсов множественное наследование есть. А ежели у тебя уже написаны несколько классов TC1, TC2, TC3 и ты ничего не можешь с этим поделать, а объединить их хочется, то могу подсказать один из способов

Код:
type  
  TBig = class
     C1: TC1;
     C2: TC2;
     C3: TC3;
     constructor Create;
     destructor  Destroy; Override; 
  end;

constructor TBig.Create;
begin
  C1 := TC1.Create;
  C2 := TC2.Create;
  C3 := TC3.Create;
end;

destructor TBig.Destroy; Override;
begin
  C1.Free;
  C2.Free;
  C3.Free;
  inherited;
end;
...
var b: TBig;
...
b := TBig.Create;
...
b.C1.SomeMethod();
...
b.Free;
Ответить с цитированием
  (#55 (permalink)) Старый
Olesya Olesya вне форума
Member
 
Сообщений: 1,485
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 11.06.2002
По умолчанию 05.12.2002, 11:40

Цитата:
* ) Путаница с простыми типами

Слишком вольное неявного преобразования типов: false = 0 = NULL
За последнюю строчку програмиста увольняют с работы, если он такое написал. А и ламерам не стоит лезть в программирование!

Цитата:
* ) Путаница с синтаксисом
.........
Как простому смертному это запомнить (причем это еще самые простые примеры)???
Просто надо знать язык вот и всё.

Цитата:
По поводу STL.
Не нравится не используй!

Цитата:
* ) Путаница с инструкциями
Скажите пожалуйста что это за break; внутри switch, когда и так понятно, что после выполнения кода после одной инструкции case не надо выполнять весь последующий код ??? А если и надо, то только в извращенных случаях.
А зачем в паскале then, если и так понятно что дальше делать.
А насчёт изменения переменной х внутри цикла, то ты не прав. Иногда на паскале народ извращается потому что счётчик цикла может быть только int. Так что на сишный цикл наезжать не надо! Паскалевскому еще расти расти и расти!

И еще хотел бы добавит такой дибилзм как char & byte
Вообще это одно и тоже, но не на паскале. Зачем?
Если в С++ большая свобода действий, так в паскале ее полное отсутствие!

Цитата:
и там и там можно внедрять ассемблерный код и т.д.
Полный гон!
Ты никогда такими делами незанимался, и нифига не знаеш!
Я уже написал 7 драйверов. И ни разу не пользовалься ассемблером.
Ответить с цитированием
  (#56 (permalink)) Старый
S.Yu.Gubanov S.Yu.Gubanov вне форума
Member
 
Сообщений: 587
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 03.12.2002
По умолчанию 05.12.2002, 12:23

Цитата:
* ) Путаница с простыми типами
Слишком вольное неявного преобразования типов: false = 0 = NULL
....
За последнюю строчку програмиста увольняют с работы, если он такое написал. А и ламерам не стоит лезть в программирование!
Чего-то я не понял!?! В C++ целочисленный ноль 0, булевский false и пустой указатель это одно и тоже. И ты говоришь, что если вдруг какой-нибудь программер решит вместо false написать ноль или пустой указатель, то его уволят? То есть типа вот за такую строчку
if( ! Form1){ Form1 = new TForm1(Application);}
секир башка?

Цитата:
А зачем в паскале then, если и так понятно что дальше делать.
А насчёт изменения переменной х внутри цикла, то ты не прав. Иногда на паскале народ извращается потому что счётчик цикла может быть только int. Так что на сишный цикл наезжать не надо! Паскалевскому еще расти расти и расти!
1) then чтобы показать, что условие закончилось
if условие then ...
2) На Delphi народ не извращается. Народ использует
Код:
x := 0.0;
dx := 0.01;
while x < 1.0 do 
  begin
     ...
     x := x + dx;
  end;
Цикл for специально нужен только для того когда наперед известно сколько иттераций нужно сделать и точно известно, что переменная цикла будет доступна только для чтения
Код:
for i:=0 to High(Arr) do Arr[i] := i;
Цитата:
И еще хотел бы добавит такой дибилзм как char & byte
Вообще это одно и тоже, но не на паскале. Зачем?
char в переводе с английского означает одну букву или символ. Дело в том, что, например, в китайском алфавите буквы двухбайтовые. Не хватает им одного байта, понимаешь...

Цитата:
Если в С++ большая свобода действий, так в паскале ее полное отсутствие!
В С++ есть не свобода действий, а полный разброд. Там все что только можно придумать в программировании, взято и свалено в одну большую кучу - пользуйтесь на здоровье, компилятор за вас вашу бредятину постарается оптимизировать, правда долго будет работать, но чтоже поделать-то, за все надо платить. В то время как pascal изначально пытальсь спроектировать так, чтобы в нем не было ничего лишнего.
Цитата:
Я уже написал 7 драйверов. И ни разу не пользовалься ассемблером. :?
Ну, а в чем же тогда проблема-то? Почему ты считаешь, что в Delphi есть какая-то принципиальная трудность препятствующая написанию драйверов? Приведи какой-нибудь небольшой фрагмент текста программы, который по твоему мнению должен вызвать наибольшее затруднение.
Ответить с цитированием
  (#57 (permalink)) Старый
S.Yu.Gubanov S.Yu.Gubanov вне форума
Member
 
Сообщений: 587
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 03.12.2002
По умолчанию 05.12.2002, 12:27

Этот текст я однажды скачал с форума Нижегородского университета.


C++ it's FUN ??? :)

Отправлено: Shalter
Дата: 07.05.1999 19:15

Интервью Bjarne Stroustrup, данное 1 января 1998 года для журнала Computer
перевод: Mike Bluesman

Примечание переводчика: Я не программирую на C++. Я не являюсь знатоком русской словесности. Посему прошу извинения за возможные ошибки в переводе.

Примечание Shalter'а (для незнающих): Bjarne Stroustrup - создатель языка C++ (именно C++, а не C) ;)

Первого Января 1998 года Bjarne Stroustrup давал интервью журналу 'Computer'. Вообще-то редакторы предполагали, что он расскажет о семи годах объектно-ориентированного программирования с применением языка, который он и разработал. К окончанию беседы выяснилось, что интервьюер извлек больше информации, чем предполагал, и, естественно, редакторы решили урезать содержание 'для пользы индустрии', но, как обычно получается в таких случаях, произошла утечка информации. Вот полный и нередактированный протокол интервью - это не похоже на обычные запланированные вопросы/ответы. Вам наверняка покажется это интересным.
Интервьюер - далее И., Stroustrup - далее C..

И. Прошло несколько лет с тех пор, как Вы изменили мир разработки программного обеспечения. Что Вы теперь чувствуете, оглядываясь назад?
C. Вообще-то я думал об этих днях как раз, перед тем как Вы приехали. Помните - все писали свои версии 'C', и проблема была в том, что все это делали чертовски замечательно. Университеты тоже чертовски замечательно преподавали этот язык. Это привело к понижению компетенции. Под 'компетенцией' в данном случае я подразумеваю феноменальность. Вот что породило проблему.
И. Проблему?
C. Да, проблему. Помните когда все писали Cobol?
И. Конечно, я тоже это делал.
C. Ну вот, в начале эти ребята были как боги. Им платили кучу денег и относились как к королям.
И. Да уж, вот это были времена...
С. Именно. Ну и что же случилось? IBM прямо заболела этим и вложила миллионы в тренирующихся программистов, пока их не стало до ужаса много.
И. Вот так и я вылетел из этой сферы. В течении года зарплата упала настолько, что даже журналистом можно было зарабатывать больше...
С. Точно. То же самое случилось и с программистами, писавшими на 'C'.
И. Понятно, ну и что же Вы все-таки хотите этим всем сказать?
C. Однажды я сидел у себя в офисе, и мне пришла в голову небольшая идейка, как хоть немного восстановить баланс. Я подумал: интересно, что же было бы, если бы был язык программирования с такими широкими возможностями и такой сложный для изучения, что никто бы уже не смог заполнить рынок толпой программистов, пишущих на этом языке? У меня уже были тогда кое-какие мысли по этому поводу. Вот, знаете наверно, X10 и X windows. Это тогда была такая графическая система, которая работала на этих самых Sun 3/60. У нее были все ингредиенты, которые мне были нужны - комплексный синтаксис, неявно определенные сложные для понимания мрачные функции, псевдо-объектно-ориентированная структура. Даже сейчас никто не пишет чистый код X-windows. Motif - единственный путь, если хочешь сохранить здравомыслие.
И. Шутите?
C. Ничуть. Есть еще одна проблема. Unix был написан на 'C' - это значило то, что любой программист, пишущий на 'C', мог очень легко стать системным программистом. Помните, сколько обычно зарабатывали большинство системных программистов?
И. Да, я же ведь тоже этим занимался.
С. Так вот, этот новый язык должен был отделять себя от Unix путем скрывания всех системных вызовов, которые так здорово связывают 'C' и Unix. Тогда ребята, которые только про DOS и знали, получили бы по заслугам.
И. Не верится в то, что Вы это сказали...
С. Это уже происходит достаточно долго, но вроде сейчас большинство людей уже уяснили для себя, что C++ - это пустая трата времени, но должен сказать, что осознание этого происходило дольше, чем я ожидал.
И. Ну расскажите поточнее, как же Вы все-таки сделали это?
C. Это была просто шутка, я никогда не думал, что люди воспримут эту книгу всерьез. Любой человек, даже с половиной мозга, может понять, что объектно-ориентированное программирование интуитивно, нелогично и неэффективно.
И. Что?
С. И относительно 'переносимого кода' - когда Вы слышали, чтобы хоть одна компания переносила что-либо?
И. Ну, вообще-то не слышал, но...
С. Вот так-то. Некоторые, кстати, пытались. Была такая компания из Орегона -Mentor Graphics, в которой просто заболели тем, что пытались переписать все, что можно на C++ в '90 или '91 году. Я на самом деле им сочувствовал, но думаю, что люди, по крайней мере, научились чему-то на их ошибках.
И. Очевидно у них ничего не вышло?
С. Вообще ничего. Но было бы сложно объяснить держателям акций компании ущерб в 30 миллионов долларов и вот, надо отдать им должное, они все-таки заставили это работать в итоге.
И. Так все-таки у них получилось? Это доказывает что 'объектное-ориентирование' работает.
C. Почти. Запускаемый файл получился такой огромный, что загружался 5 минут на рабочей станции HP со 128Mb оперативной памяти. Я думал, что это станет камнем преткновения, но это никого особенно не заботило. Sun и HP были очень рады продавать до ненормальности мощные ящики с огромными ресурсами для выполнения на них тривиальных программ. Знаете, когда мы в AT&T откомпилировали нашим первым компилятором C++ программку 'Hello World', я не мог поверить своим глазам: запускаемый файл получился размером 2.1Mb.
И. Да уж... Но компиляторы с тех пор прошли долгий путь.
C. Вы так думаете? Попробуйте тот же пример 'Hello World' с последней версией g++ - вы получите примерно пол-мегабайта. А кроме этого есть еще множество примеров со всего мира. У British Telecom чуть было не возникли большие проблемы, но к своему счастью они вовремя догадались свернуть проект и начать все заново. И им больше повезло, чем Australian Telecom. А теперь я слышал, что Siemens cоздает какого-то динозавра и все больше и больше волнуется по поводу размера того, что у них получается. Не правда ли забавно смотреть на это всеобщее заблуждение?
И. Да, но C++ -то, в общем, вполне нормальный язык.
С. Вы в это так верите? Попробовали ли вы когда-нибудь сесть и поработать над проектом на C++? Во-первых, я расставил достаточно ловушек, чтобы просто так работали только тривиальные проекты. Под конец проекта получается что одни и те же операторы в разных модулях означают совершенно разные вещи. А теперь попробуйте соединить все эти модули в единое целое, особенно если у вас их штук 100. Боже, я иногда не могу удержаться от смеха, когда слышу о проблемах разных компаний, которые не могут сделать так, чтоб их модули общались между собой.
И. Я должен сказать, что совершенно сбит с толку всем, что Вы сказали. Вы сказали, что сделали это для того, чтоб повысилась оплата труда программистов. Но это же бессмыслица.
С. Не совсем так. У каждого есть его выбор. Я не предполагал, что все это так выйдет из-под контроля. Но все равно, практически все у меня получилось. C++ сейчас уже умирает, а труд программистов продолжает нормально оплачиваться -особенно тех, кто имеет дело со всей этой чепухой - вы же понимаете, что невозможно использовать эффективно большой программный модуль на C++ , если не вы сами его написали.
И. Как это?
С. Не понятно что ли? Помните typedef?
И. Конечно.
С. А теперь вспомните, сколько времени приходится копаться в заголовках для того, например, чтобы просто найти, что какое-нибудь там 'RoofRaised' - число с двойной точностью. Представьте теперь, сколько времени уйдет на нахождение всех определений типов в большом проекте.
И. Значит, Вы утверждаете, что Вам все, что Вы хотели, удалось...
C. Ну, вспомните, сколько занимает реализация проекта среднего размера на 'C'. Это около 6 месяцев. Не достаточно долго чтобы парень с женой и детьми мог заработать себе на нормальное существование. Попробуйте тот же проект реализовать на C++ , и что получится? Вам понадобится 1-2 года. Не правда ли, это замечательно? Кроме этого: в университетах уже так давно не преподают 'C', что теперь стало мало людей программирующих на 'C', особенно таких, которые знают все о программировании под Unix. Как вы думаете: сколько парней смогут сообразить, что делать с 'malloc', после того как в течение многих лет они пользовались 'new' и никогда не заботились о проверке кода возврата? Большинство программистов на C++ вообще не выбрасывают этот код возврата. Что произошло со старой доброй '-1'? По крайней мере, было сразу понятно, что у тебя где-то ошибка без всяких там 'throw', 'try' и 'catch'...
И. И все же, наследование экономит кучу времени?
С. Нет, я же говорил... Замечали, в чем разница между стадиями планирования проектов на 'C' и C++? Для проекта на C++ эта стадия в три раза дольше. Время уходит на то, чтоб убедиться, что все, что надо наследуется, а все что не надо - нет. И все равно без ошибок не обходится. Кто слышал когда-нибудь об утечке памяти в программе на 'C'? Теперь нахождение этих утечек - целый труд. Большинство компаний сдаются, так и выпускают продукт, зная что утечка памяти существует.
И. Но есть различные программные инструменты...
С. Большинство из которых написаны на C++.
И. Если мы опубликуем все это, то Вас просто могут линчевать, понимаете?
C. Сомневаюсь. Как я сказал C++ уже уходит в прошлое. Ни одна компания без предварительного тестирования теперь не начнет проект на C++, а если будет тестирование, то они поймут, что это путь к неудаче. Если не поймут - то так им и надо. Знаете, я пытался убедить Dennis'a Ritchie переписать Unix на C++.
И. О Боже. И что же он сказал?
C. К счастью у него присутствует хорошее чувство юмора. Я думаю и он, и Brian понимали что я тогда делал. Он ответил, что может мне помочь написать версию DOS на C++, если я захочу.
И. Ну и как? Вы захотели?
С. Я написал DOS на C++. Могу дать вам demo. Она у меня работает на Sparc 20 в другой комнате. Просто летает на четырех процессорах и занимает всего то 70 мегабайт на диске.
И. На что же это похоже на PC?
С. Вы, очевидно, шутите. Видели же вы Windows'95? Я о них думаю как о своем величайшем успехе.
И. Знаете, эта идея насчет Unix++ заставила меня задуматься. Ведь где-то может сидеть парень, которому придет в голову сделать это...
С. Но не после того, как он прочитает это интервью.
И. Я сожалею, но вряд ли мы сможем опубликовать даже часть этого интервью.
С. Но это же история века. Я просто хотел, чтоб мои приятели-программисты помнили меня за то, что я для них сделал. Знаете как сейчас оплачивается программирование на C++?
И. Последнее, что я слышал - настоящие профессионалы зарабатывают $70-80 в час.
С. Понимаете теперь? И я уверен, что он заслуживает этих денег. Отслеживание всех этих ловушек, которые я встроил в C++ - не легкая работа. И, как я говорил раньше, каждый программист на C++ чувствует себя связанным тем обстоятельством что он должен использовать каждый элемент языка в каждом проекте. Вообще это и меня часто раздражает, даже тогда, когда это служит моим целям. Но сейчас, когда прошло столько времени, мне уже начинает нравиться этот язык...
И. Имеете в виду, что раньше Вам C++ не нравился?
С. Ненавидел его. Он даже выглядит неуклюже, вы не согласны? Но когда стали там выходить разные книги... вот, тогда-то я и увидел полную картину.
И. Погодите, а как насчет ссылок? Вы подтверждаете, что шли от поинтеров 'C'?
С. Хмм. Я и сам не знаю. Вообще я думал, что да. Потом я как-то говорил с парнем, который написал C++ с самого начала. Он говорил, что не мог запомнить, были ли ссылки на его переменные или нет, поэтому он всегда использовал поинтеры.
И. Обычно на этой стадии я говорю 'большое спасибо за интервью', но сейчас это было бы как-то не к месту.
С. Пообещайте мне, что опубликуете это.
И. Я извещу Вас, но мне кажется, что я знаю, что скажет мой редактор по этому поводу.
С. А все равно, кто этому поверит? Кстати, не могли бы вы мне прислать копию этой записи?
И. Это я могу.
Ответить с цитированием
  (#58 (permalink)) Старый
Влад Влад вне форума
Специалист
 
Сообщений: 3,884
Сказал(а) спасибо: 1
Поблагодарили 25 раз(а) в 25 сообщениях
Регистрация: 27.06.2002
Адрес: Санкт-Петербург
По умолчанию 05.12.2002, 13:03

Цитата:
Originally posted by S.Yu.Gubanov+-->
Цитата:
Если есть желание чтобы все было в одном классе, то там по другому с самого начала надо проектировать, через интерфейсы.
Не всегда это возможно. Есть коммерческие библиотеки классов, поставляемые без исходных кодов. Так что единственный вариант в таком случае - не перепроектирование, а наследование.
Замечу также, что приведенная тобой реализация - это агрегирование, а не наследование. Соответственно, механизм RTTI и dynamic_cast<> не cработает.
А теперь сравни сложность исходного кода на Delphi для реализации конструкторов и деструкторов класса, наследующего от 10-15 классов, и на C++. И, соответственно, вероятность ошибок. По-моему, здесь все же перевес имеет C++.

<!--QuoteBegin-S.Yu.Gubanov

[b]Почему ты считаешь, что в Delphi есть какая-то принципиальная трудность препятствующая написанию драйверов?
Драйверочек на Delphi - в студию. Пусть он будет хоть самым простеньким, пусть хоть пропищит системным динамиком, что ли...

Относительно текста с форума НГУ... Что ж, программерский юмор надо понимать.
Ответить с цитированием
  (#59 (permalink)) Старый
AssAsin AssAsin вне форума
Member
 
Сообщений: 383
Сказал(а) спасибо: 0
Поблагодарили 1 раз в 1 сообщении
Регистрация: 02.11.2002
По умолчанию 05.12.2002, 15:16

Всем кроме S.Yu.Gubanov: было такое "Евангелие от хакеров" (переработка "Евангелия от митьков"), и была там фраза Иисуса: "С чайниками и ламерами не тусуйтесь, ибо они суетливы".

Garik'у: не пора ли закрывать эту тему?
Ответить с цитированием
  (#60 (permalink)) Старый
S.Yu.Gubanov S.Yu.Gubanov вне форума
Member
 
Сообщений: 587
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 03.12.2002
По умолчанию 05.12.2002, 16:19

Цитата:
Originally posted by AssAsin
[b]Всем кроме S.Yu.Gubanov: было такое "Евангелие от хакеров" (переработка "Евангелия от митьков"), и была там фраза Иисуса: "С чайниками и ламерами не тусуйтесь, ибо они суетливы".
Garik'у: не пора ли закрывать эту тему?
Никому кроме "AssAsin", перечитай:
Цитата:
С. Но это же история века. Я просто хотел, чтоб мои приятели-программисты помнили меня за то, что я для них сделал. Знаете как сейчас оплачивается программирование на C++?
И. Последнее, что я слышал - настоящие профессионалы зарабатывают $70-80 в час.
С. Понимаете теперь? И я уверен, что он заслуживает этих денег. Отслеживание всех этих ловушек, которые я встроил в C++ - не легкая работа. И, как я говорил раньше, каждый программист на C++ чувствует себя связанным тем обстоятельством что он должен использовать каждый элемент языка в каждом проекте. Вообще это и меня часто раздражает, даже тогда, когда это служит моим целям. Но сейчас, когда прошло столько времени, мне уже начинает нравиться этот язык...
А я бы еще сюда добавил от себя:
А еще они получили право всех остальных называть ламерами и чайниками
Ответить с цитированием
Ads
Ответ

Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Trackbacks are Вкл.
Pingbacks are Вкл.
Refbacks are Выкл.


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Исследуем язык программирования Mercury xonix Prolog 103 06.06.2018 21:26
Какой самый легкий язык программирования для изучения? imported_Pirat Вопросы начинающих программистов 9 20.09.2011 10:19
Язык программирования Gwai Prolog 8 17.05.2011 13:42
Самый крутой язык: исходники Arachnelis Мысли вслух 10 14.10.2010 12:03
Самый крутой Пролог Винитарх Prolog 256 03.10.2010 07:12
Разрабатываю язык логического программирования. prokopiy Prolog 71 11.08.2010 22:05
Язык программирования Barsic Blan Форум программистов 1 22.03.2008 10:26
язык программирования Матрикс Форум программистов 1 07.06.2007 19:16
Скрипт или язык программирования GEV_256 Мысли вслух 24 09.01.2006 01:54
Язык программирования Loid Мысли вслух 17 29.05.2005 23:20
Скриптовый язык vs Язык программирования relonar Мысли вслух 4 24.09.2004 02:14
Какой язык программирования выбрать Anonymous Вопросы начинающих программистов 15 29.06.2004 09:31



Powered by vBulletin® Version 3.8.7
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd.
Нardforum.ru - компьютерный форум и программирование, форум программистов