Модераторы: LSD

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Почему так не любят Delphi? 
:(
    Опции темы
Akella
Дата 15.2.2013, 15:12 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Творец
****


Профиль
Группа: Модератор
Сообщений: 18485
Регистрация: 14.5.2003
Где: Корусант

Репутация: 1
Всего: 329



Интелигентные люди завидуют молча  smile 
PM MAIL   Вверх
AVX
Дата 15.2.2013, 16:25 (ссылка)  | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 32
Регистрация: 20.5.2010

Репутация: 1
Всего: 1



Akella, у меня совсем не хорошее мнение складывается о тебе. Приводишь, как аргумент, прогу 1990г и ещё что - то пытаешься доказать. Я уже и не говорю про твою пародию делфи-спринг или как-то так. Не позорься пожалуйста, иногда лучше молчать, чем говорить smile 
PM MAIL   Вверх
k0rvin
Дата 15.2.2013, 16:31 (ссылка)    | (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 442
Регистрация: 24.1.2010

Репутация: 1
Всего: 5



Цитата(Akella @ 15.2.2013,  13:57)
Опубликованы исходные коды Photoshop 1.0.1 образца 1990 года

В архиве — 179 файлов, суммарно — 128 тысяч строк кода,
на 75 процентов написанного на языке Pascal и на 15 процентов — на ассемблере

Угу, что же они отказались от паскаля?.. =)


--------------------
“Object-oriented design is the roman numerals of computing.” — Rob Pike
All software sucks
PM MAIL   Вверх
LSD
Дата 25.2.2013, 18:04 (ссылка) |  (голосов:3) Загрузка ... Загрузка ... Быстрая цитата Цитата


Leprechaun Software Developer
****


Профиль
Группа: Модератор
Сообщений: 15718
Регистрация: 24.3.2004
Где: Dublin

Репутация: 9
Всего: 538



Цитата(Akella @  15.2.2013,  14:57 Найти цитируемый пост)
на 75 процентов написанного на языке Pascal и на 15 процентов — на ассемблере

Там код написан на Apple Pascal который к дельфи никаким боком не относится.


Цитата(k0rvin @  15.2.2013,  17:31 Найти цитируемый пост)
Угу, что же они отказались от паскаля?.. =)

Вслед за генеральной линией партии (Эпл прекратила разработку этой поделки).


--------------------
Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it.
PM MAIL WWW   Вверх
serger
Дата 26.2.2013, 06:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 518
Регистрация: 19.6.2007
Где: Ижевск

Репутация: 0
Всего: 5



Вообще к паскалям у меня положительное отношение. Мне не нравится семейство Delphi (+lazarus, есть ещё аналоги и не только на паскале), его идеология.


--------------------
упс!
PM MAIL WWW Skype GTalk Jabber   Вверх
Beltar
Дата 5.4.2013, 12:42 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 627
Регистрация: 11.1.2006

Репутация: 2
Всего: 7



Всплыл в уме такой вопрос. Понятное дело, что когда Delphi серьезных конкурентов по бросанию на форму не имела и массово преподавалась в вузах (у меня в начале 2000-ых была D2, потом в 2004/2005 уже семерка), то число быдлокодеров было велико, спрашивали на форумах, как курсовую сделать и т. п. Ну вот вышла .NET со своим C#, на который "крутые сишники" тут же побежали стадом, младший брат в институте уже этот самый шарп изучал, Борланд же зверски тупила, в общем имеем, что имеем, сейчас C# в лидерах, но я вот никогда не слышал, чтобы кодящих на шарпе называли быдлокодерами. Почему так? Надоело всем холиварить? Меньше стало программеров, или просто барьер вхождения все равно слишком высок, чтобы появлялись перцы спрашивающие про компонент (с этим, как я понимаю в .NET не фонтан) для написания операционной системы?


--------------------
Опытный программист на C++ легко решает любые не существующие в Паскале проблемы. smile(с) я, хотя может и нет
Пищущий на C++ мужик. Даже если это мужик сидит в написанном на Delphi и жрущем паскалевскую библиотеку билдере.
PM MAIL   Вверх
Zloxa
Дата 5.4.2013, 12:51 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Чо?
****


Профиль
Группа: Завсегдатай
Сообщений: 3473
Регистрация: 12.9.2008

Репутация: 4
Всего: 161



Цитата(Beltar @  5.4.2013,  13:42 Найти цитируемый пост)
Надоело всем холиварить?

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

Это сообщение отредактировал(а) Zloxa - 5.4.2013, 13:13


--------------------
Достоверно известно, что 89% людей доверяют статистике взятой с потолка smile
PM   Вверх
SKrivosein
Дата 5.4.2013, 17:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Идущий в даль
**


Профиль
Группа: Участник
Сообщений: 271
Регистрация: 9.6.2007
Где: Praha - Прага

Репутация: нет
Всего: 8



Цитата

В доднете хорошо так позаимствовали как с делфи так и с жавы.
 А вообще есть ктото кто нигде, ничего не позаимствовал? Ну кроме Асемблера  smile Да и то неуверен.
Цитата

когда Delphi серьезных конкурентов по бросанию на форму не имела 
 Помоему в дотнете "бросание на форму" уже давно не главное. Все новые технологии WPF, MVC и так дальше, уже от этого не особо торчат. Да и в старых WinForm, WebForm просто так бросанием можно было сделать только тривиальное унылое г.
Цитата

Некому стало холиварить

Просто так получилось что те которые делают дело, довольны собой и своей технологией. А остальные на настоящий холивар не способны.  smile 


--------------------
Оптимист - это плохо информированный человек.
user posted image

PM MAIL   Вверх
serger
Дата 5.4.2013, 19:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 518
Регистрация: 19.6.2007
Где: Ижевск

Репутация: 0
Всего: 5



Цитата(SKrivosein @  5.4.2013,  18:10 Найти цитируемый пост)
Цитата

когда Delphi серьезных конкурентов по бросанию на форму не имела 

Вот это и не навижу. Считаю - в том виде, что есть в delphi - тупиковый быдло-код!
Ну не серьёзно, умный дядька "натыкивает" формочки! А не ГУИ компоненты, так, простите, пипец!..  smile 


--------------------
упс!
PM MAIL WWW Skype GTalk Jabber   Вверх
SKrivosein
Дата 5.4.2013, 19:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Идущий в даль
**


Профиль
Группа: Участник
Сообщений: 271
Регистрация: 9.6.2007
Где: Praha - Прага

Репутация: нет
Всего: 8



Я вот о Delphi холиварить вообще никак не могу. Мой жизненый путь C -> C++ -> C#+Web  smile 
Так же о чём ничего не знаю, молчу.


--------------------
Оптимист - это плохо информированный человек.
user posted image

PM MAIL   Вверх
Beltar
Дата 6.4.2013, 01:51 (ссылка) |    (голосов:2) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 627
Регистрация: 11.1.2006

Репутация: 2
Всего: 7



Цитата

Вот это и не навижу. Считаю - в том виде, что есть в delphi - тупиковый быдло-код!
Ну не серьёзно, умный дядька "натыкивает" формочки! А не ГУИ компоненты, так, простите, пипец!


Если честно, я все никак не могу понять сути предъявляемых тобой к Delphi и, очевидно, другим похожим инструментам претензий. Предполагается, что писание кода в обработчиках событий это плохо и что нас надо срочно спасать с помощью MVC и прочих суперпарадигм? Ну тут вспоминается попавшаяся на другом ресурсе история:


Прочитал статью и вспомнил реальный случай... Был у нас в Ашхабадском армейском корпусе офицер при больших звездах, вся изначальная служба которого до академии проходила исключительно в НИИ. Как-то командир, генерал-лейтенант Шеин, поручил ему "исполнение" обычной войсковой дороги на полигоне. Через неделю приехал... под ворохом расчетов и завалами теодолитов чуть-чуть торчала одухотворенная макушка "прораба". Ни метра дороги и не килограмма перекинутого грунта. Рёв Борис Петровича заставил отбросить хвосты даже варанам, - Субачев!!! Подскочил крепенький майор с "бычьим глазом" на груди (для непосвященных- знак об окончании не высшего, а просто военного училища)...- Даю сутки! На что последовала рука к козырьку и слово "Есть!" А далее Володя сам сел за рычаги инженерной техники и отвалом за несколько часов "пробил" в песках требуемую дорогу. Вот и все. Это к тому, что расчеты и прочие теоретические изыски- вещь, конечно, необходимая. Но суровая правда жизни говорит о том, что последнее слово должно быть за практиками. Кстати, тот же Субачев, подойдя к четырем минным тралам, притащенным к нам на испытание опять же из какого-то там НИИ, ткнул пальцем в один из них и сказал,- Ребята, этот работать не будет! За что и был послан разработчиками в известном направлении.Первый же подрыв разнес вдребезги то, на что обратил внимание Вова.Как, почему, откуда знал? Просто что был практиком с большой буквы.Как-то так.


Примем к сведению следующие факторы:
1) Нам надо не следовать парадигме, а написать работающую программу и потом сопровождать ее.
2) Чем правильнее мы все делаем, тем больше времени нам на это надо.
3) Мы не можем предусмотреть всего заранее.
4) Цена ошибок в проектировании разная.

ИМХО решение твоей проблемы ###кода подсказано еще в 70-ые. Называется структурное программирование и основной его прием - декомпозиция. Сама по себе постановка вопроса в виде отделения GUI от логики как раз и означает провести декомпозицию. Вопрос только как ее проводить. Вот, например, в одной из моих программ имеется метод под кнопкой:

Код

procedure TfmMain.bbSelectFormatorClick(Sender: TObject);
var D1,D2:TDateTime;
    F:TFormator;
begin
if DeletedF then F:=TFormator(cbFD.Items.Objects[cbFD.ItemIndex])
                  else F:=TFormator(cbFW.Items.Objects[cbFW.ItemIndex]);
if F=nil then
  begin
  ShowMessage('Выберите форматор');
  Exit;
  end;
TimesFromShift(DTP1.Date,cbShift.ItemIndex,D1,D2);
PC.ActivePage:=psTrend;
RefreshTrend(F,D1,D2,False,nil,True);
end;


Что я делаю? Просто получаю объект из списка, если ошибка, то выдаю сообщение, беру с других контролов время, ставлю нужную вкладку пейдж-контролу, последним методом загружаю данные.
Сам по себе этот метод весьма здоровый, так что приведу без комментариев, и пояснений, что там делается:

Код

function TfmMain.RefreshTrend(NewF: TFormator; FromTime, ToTime: TDateTime;
  KeepParam:Boolean; Cook:TCook; ForceRefresh: Boolean): Integer;
var NeedRefreshCache,NeedRebuildTrends,NF:Boolean;
    i:Integer;
begin
try
if NewF=nil then Exit(trNoFormator);
if FromTime>ToTime then Exit(trWrongTime);
NeedRebuildTrends:=False;
RefreshingTrends:=True;
Result:=trOK;
NF:=NewF<>CurrentF;
if NF then
  begin
  NeedRefreshCache:=True;
  NeedRebuildTrends:=((CurrentF=nil) or (CurrentF.Id_Type<>NewF.Id_type));
  CurrentF:=NewF;
  lbFormator.Caption:='Форматор: '+IntToStr(CurrentF.Row)+'-'
    +IntToStr(CurrentF.Num);
  end
                  else
  begin
  NeedRefreshCache:= not (InRange(FromTime,MinChartTime,MaxChartTime) and
    InRange(ToTime,MinChartTime,MaxChartTime));
  NeedRefreshCache:=NeedRefreshCache or ForceRefresh;
  end;
if NeedRefreshCache then
  begin
  if not NewF.GetData(FromTime,ToTime,QData) then Exit(trDataError);
  end;
UpdateInterface(FromTime,ToTime,NewF);
Chart.BeginUpdate;
RebuildingTrends:=True;
if NeedRebuildTrends then RebuildTrends(NewF.id_type);
if NeedRefreshCache then FillChart;
RebuildingTrends:=False;
if not KeepParam then
  begin
  if Cook<>nil then
    begin
    for i:=0 to Chart.Series.Count-1 do
      begin
      InfoP[i].cbRect.Enabled:=True;
      Chart.Series[i].RectVisible:=not Cook.IsOK;
      InfoP[i].cbRect.Checked:=not Cook.IsOK;
      end;
    end
               else
    begin
    for i:=0 to Chart.Series.Count-1 do
      begin
      InfoP[i].cbRect.Enabled:=False;
      Chart.Series[i].RectVisible:=True;
      InfoP[i].cbRect.Checked:=False;
      end;
    end;
  RefreshSets(Cook);
  end;
Chart.MinXValue:=FromTime;
Chart.MaxXValue:=ToTime;
Chart.EndUpdate;
if Chart.Updates>0 then Chart.Refresh;
UpdateFormatorInfo(not (NF or ForceRefresh));
UpdateCurrentValues;
if NeedRefreshCache then
  begin
  MinChartTime:=FromTime;
  MaxChartTime:=ToTime;
  end;
Result:=mrYes;
if PC.ActivePage<>psTrend then PC.ActivePage:=psTrend;

finally
RefreshingTrends:=False;
case Result of
  trOK:;
  trNoFormator:ShowErrorMessage('Не указан форматор.');
  trWrongTime:ShowErrorMessage('Время начала должно быть меньше времени конца.');
  trDataError:ShowErrorMessage('Ошибка загрузки данных из базы');
end;
end;

end;


Можно не сомневаться, что тут можно еще до черта улучшить, например, вытащить из него все интерфейсные сообщения и пусть возвращает только коды ошибки, если есть. Разделить собственно нашпиговывание диаграммы данными и разного рода пересчеты контролов, обе ветки от if not KeepParam можно вынести, как отдельные процедурки. Текстовые сообщения вынести в константы, вот только один вопрос, нафига? Если я уберу сообщения об ошибках из метода, то придется после каждого вызова вызывать еще одну функцию, которая будет анализировать эти ошибки, т. е. вместо одного метода с которым еще вполне можно работать, я получу кучу маленьких, работать с которыми ничуть не легче. И самый главный вопрос, а причем тут кнопки-то? Под кнопкой 6-7 строчек кода, зато вызывается функция длиной в 30 строк. Нет, что-нибудь я с ней сделаю, конечно, да и проверку F=nil из кода кнопки можно смело убирать, но в целом это не так критично, и для меня код остается понятным. А раз код понятный, то нафига тратить время на формальности, которые, скорее всего, никогда не понадобятся? При необходимости всегда можно потом прибраться. Реальные же проблемы намного сложнее возможности/невозможности бросить на форму кнопку и начать фигачить под ней код. 


--------------------
Опытный программист на C++ легко решает любые не существующие в Паскале проблемы. smile(с) я, хотя может и нет
Пищущий на C++ мужик. Даже если это мужик сидит в написанном на Delphi и жрущем паскалевскую библиотеку билдере.
PM MAIL   Вверх
drkot
Дата 6.4.2013, 06:31 (ссылка)    | (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Ищущий
***


Профиль
Группа: Завсегдатай
Сообщений: 1042
Регистрация: 5.5.2006

Репутация: нет
Всего: 8



Цитата(SKrivosein @  5.4.2013,  17:10 Найти цитируемый пост)
когда Delphi серьезных конкурентов по бросанию на форму не имела  Помоему в дотнете "бросание на форму" уже давно не главное. Все новые технологии WPF, MVC и так дальше, уже от этого не особо торчат. Да и в старых WinForm, WebForm просто так бросанием можно было сделать только тривиальное унылое г.

Гениальная фраза... Таки Вы серьезно думаете, что на Delphi можно написать что либо "тупым бросанием на форму"?

Цитата(SKrivosein @  5.4.2013,  17:10 Найти цитируемый пост)
Все новые технологии WPF, MVC и так дальше, уже от этого не особо торчат

а от чего они торчат, позвольте поинтересоваться? От LifeBuilding?


Цитата(serger @  5.4.2013,  19:35 Найти цитируемый пост)
Считаю - в том виде, что есть в delphi - тупиковый быдло-код!

serger, поясните, а то не понятно в чем именно тупиковость?


--------------------
Ошибка не становится истиной по причине широкого распространения,
как и Истина не становится Ошибкой из-за того, что никто её не видит.
PM   Вверх
drkot
Дата 6.4.2013, 07:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Ищущий
***


Профиль
Группа: Завсегдатай
Сообщений: 1042
Регистрация: 5.5.2006

Репутация: нет
Всего: 8



Цитата(Beltar @  6.4.2013,  01:51 Найти цитируемый пост)
Можно не сомневаться, что тут можно еще до черта улучшить,

Beltar, главное не забывать о том, что рабочую программу можно сделать быстрой (или правильной ;)), а вот быструю рабочей сделать гораздо сложнее ;)

В Delphi декомпозиция выполнена на уровне VCL, так как разработчику не требуется "ручками" писать GUI и обслуживать конвеер сообщений. 
К приведенному Вами коду применить декомпозицию наверное нельзя, так как этот код занимается непосредственно визуализацией и является неотъемлемой частью GUI.
Если же говорить о декомпозиции, то в идеале нужно создавать дополнительный поток (для проведения выборок и расчетов абстрактно от интерфейса). Поток висит на ожидании Event.WaitFor. В OnClick находится один метод Event.SetEvent (по сути спусковой крючек). После нажатия на кнопку стартует выборка и подготовка данных и в конце синхронно вызывается метод заполнения GUI даннами. Таким образом GUI может получить некий типизированный набор данных не вникая в их происхождение (база ли это или фаил, инет). А вспомогательный поток не ведает как и где данные отображаются. 

При написании программы в C(C++) данный подход более очевиден, так как изначально приходится отделять обслуживание GUI от работы с данными. Как правило заводят несколько нитей.
В Delphi половина работы уже сделана (поток GUI уже есть) и остается написать функциональный поток(и). А вот здесь начинается методологическая проблема. Потокам и их синхронизации практически не уделяют внимания ни в книгах ни при обучении. Отсюда и множество посредственных кодеров. Конечно можно писать и одно поточные приложения, но это должны быть простые диалоговые приложения, в частности работа с базами данных, синхронная работа по сети и тд. Основной риск это заморозка интерфейса и как следствие неудобство использования.
Но это совершенно не означает, что на СИ пишут "правильные" приложения. Пишут точно такие же, и еще хуже, так как бока внедряют и на уровень обработчиков сообщений GUI, в добавок взаимные блокировки потоков и смежные проблемы. 

А теперь  о том почему же все таки не любят.
Кратко: Для написания одно поточного приложения с GUI некой сложности на Delphi потребуется на два-три порядка меньше времени, чем на C++. Причина VCL (событийный движек). Лично у меня сишник который кодит GUI вызывает глубочайшее умиление, а у него (сишника) при этом этом зреет черная зависть к этим "недокодерам" которым этого делать не надо. Потом сишнику все это надоело и стал он явистом, но ненависть к "недокодерам" осталась, хотя никакой декомпозиций он уже не занимается, не говоря уже о соблюдении стандартов ;)
Причем данная концепция закрепилась очень давно и если брать современный срез технологий, то различия между средами разработки достаточно смазаны.



--------------------
Ошибка не становится истиной по причине широкого распространения,
как и Истина не становится Ошибкой из-за того, что никто её не видит.
PM   Вверх
drkot
Дата 6.4.2013, 08:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Ищущий
***


Профиль
Группа: Завсегдатай
Сообщений: 1042
Регистрация: 5.5.2006

Репутация: нет
Всего: 8



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


--------------------
Ошибка не становится истиной по причине широкого распространения,
как и Истина не становится Ошибкой из-за того, что никто её не видит.
PM   Вверх
Akella
Дата 6.4.2013, 09:18 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Творец
****


Профиль
Группа: Модератор
Сообщений: 18485
Регистрация: 14.5.2003
Где: Корусант

Репутация: 1
Всего: 329



Цитата(Beltar @  5.4.2013,  12:42 Найти цитируемый пост)
спрашивали на форумах, как курсовую сделать

Их и сейчас хватает :(


Цитата(serger @  5.4.2013,  19:35 Найти цитируемый пост)
Вот это и не навижу. Считаю - в том виде, что есть в delphi - тупиковый быдло-код!

Никто не мешает писать код ручками и создавать компоненты ручками. Но delphi - это RAD  smile 



Цитата(serger @  5.4.2013,  19:35 Найти цитируемый пост)
когда Delphi серьезных конкурентов по бросанию на форму не имела 

Вот это и не навижу. Считаю - в том виде, что есть в delphi - тупиковый быдло-код!

Зависть?
PM MAIL   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила ведения Религиозных войн
Smartov
1. Уважайте собеседника
2. Собеседник != враг
3. Старайтесь воздерживаться от тем вида "Windows Rulez" или "Linux Rulez"

С уважением, Smartov.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Религиозные войны | Следующая тема »


 




[ Время генерации скрипта: 0.1382 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.