С одной стороны это удобно, а с другой, я не раз ловил баги в c, php и RSL из-за того, что компилятор/инетрпретатор считал переменную какого-то друггго типа
Меня MySQL немного нервирует своей «умностью». Если значение для поля зашкаливает или просто не подходит по типу, он выбирает то, что ему больше понравится, и записывает. Например, долго воевал с записью IP в базу данных — время от времени у меня в логе почему-то оказывались нули. На что только не думал, пока не выяснил, что у меня строковый IPv4 преобразуется в PHP с помощью ip2long, который на выходе даёт число со знаком, а поле у меня было беззнаковое. Если зашкаливает, Мускл «умно» обрубал до нуля. :/ Переписал всё на функцию SQL INET_ATON, которая даёт беззнаковое. Хе, настолько привык к сишному преобразованию… (Там подобная проблема не могла бы возникнуть в принципе, потому что число записалось бы побитово, без всяких «умностей».)
Shushik, до SQL ещё не дошёл))) надо всё взяться за него, но никак руки не доходят :)
Dimonius писал: переписать программу на VB человека, плохо понимающего программирование, на Delphi
Да.. представляю.. Мне, собственно, также трудно понять тот же Delphi после пользования VB(в училище давали).
В Delphi меня как раз напрягает строгость к типам переменных. Да ещё и интерпретатор иногда не даёт понять, в чём ошибка, если, например, ты пишешь значение в несуществующую ячейку массива.
На счёт затраченных тактов для обработки кода не спорю, VB сильно прожорливый... Асм рулит! :D
Особенно хорошо заметны тормоза программ на VB, когда машина типа Celeron'а 300Mhz... )))
O darkness, if in thy arms I could rest for a while, and with these earthly eyes see thy dim smile...
Beltar Смотрю я на вас и думаю... Сообщений: 3251 Город: 06.04.2007 17:11
ИМХО больше на баг похоже. К IP применять такое преобразование маразм.
Отказ от проверенного временем синтаксиса ?:
Ну да. Проверенным и признанным неудовлетворительным. :P Хотя у них тоже не намного лучше.
Один оператор на строке обычно не так плохо. Я, лично почти никогда больше одного не пишу. Разве что массив структур руками заполнить. Зато нет периодического Missing operator or semicolon.
Мя[ут]
А в Паскале - после for do ставиться, после if не ставиться, прототип (описание по Паскальному) процедуры отделяется от тела точкой с запятой, а for-цикл не отделяется.
Абалдеть проблема. Ни разу не мешало и не путался. Кстати, эти паразитные do, then существуют для придания языку большей естественнося.
Во-первых не надо про применение dll. Во первых, это только в Windows, во вторых это сделано для разделеняи кода на этапе компиляции.
А что такое откомпилированный юнит Паскаля? Это и есть dll. И причем тут Windows я вообще не понял. И компилятор из нее берет только нужное, в отличие от Си. Сам tpu можно было в таком виде и поставлять, если не хочешь давать исходник.
Что до include, то оно и есть то деление реализации и имплементации.
Чего-чего? Ты сам-то понял чего написал?
Можешь вообще как в Паскале строить не зависимые модули, вот только в ущерб скорости компиляции (а во времена C она была крайне важна) и удобочитаемости текста =))
А io.h от чего-то зависит? Про скорость компиляции сишникам лучше не возникать ибо Паскаль тут кроет Си как был овцу.
Да вот ООП у нас началось. И тоже на Паскале
И хорошо. В отличие от C++ к Паскалевскому ООП претензий ни у кого никогда не было.
Зря ты так. Достаточно современная и мощная платформа. Гораздо мощнее Паскаля, и на уровне Дельфи.
Нет не зря. От того, что его Си# назвали он Си не стал. А превосходить или уступать любому другой язык под .NET он не может в принципе ибо, что в .NET предусмотрено, то и в языке к нему будет.
А назвать .NET не то что современной, а хотя бы работоспособной платформой, не смеши мой Borland Developer Studio 2006, который от того, что написан на .NET только пускается секунд 30 в облегченном режиме, и меньше 512 Мб памяти не признает, а глючит побольше, чем Delphi 7.
Если уж юзать .NET, то Delphi .NET ибо можно быстро перекомпилировать на Win 32. I hope MS will pay for .NET.
[Добавлено 06.04.2007 17:19:50]:
2 SamatiX
В Delphi меня как раз напрягает строгость к типам переменных. Да ещё и интерпретатор иногда не даёт понять, в чём ошибка, если, например, ты пишешь значение в несуществующую ячейку массива.
Так сложно не понять "List Index out of bounds"?
В Delphi меня как раз напрягает строгость к типам переменных.
Все разумные преобразования выполняются автоматически. И типы-то основные: Integer, String, Boolean, Double, Char. Что тут сложного. И есть ф-я с именем типа в который преобразуешь PChar(String) например. Variant тоже есть, но Variant он для мелких программок в VBA хорош и случаев, когда без него просто не обойтись. И при его использовании, сразу оказываешься без помощи компилятора, а это как-то непривычно и вызывает неприятные ощущения.
ЗЫ А после С++ ты поймешь насколько Delphi прост.
[Добавлено 06.04.2007 17:37:17]:
2 Dimonius
Какой восстановитель для .NET порекомендуешь, а оо неплохо бы одну софтинку на всякий случай на запчасти разобрать.
За что же ТЫ ненавидишь Симбу? Про SP вот и <a href="http://www.pridelands.ru/?p=texts&a=get&id=328" target="blank">вот<
Beltar писал: К IP применять такое преобразование маразм
Совершенно стандартное преобразование
Какой восстановитель для .NET порекомендуешь
Я почитал о нескольких - остановился на Net Decompiler. Разобрал пару прог - проги не шибко сложные, но в Delphi (отформатированном коде) их читать в разы приятнее :)
Dimonius писал: образуется столько паразитных и забытых переменных...
компиляторы, на которых я работал на случай неинициализированной или неиспользуемой переменной выдает варнинг ;)
Dimonius писал: Плюс прозрачность приведения типов переменных - тоже...
Ну это уже криворукость программистов. Вообще, одна из рекомендаций C++ - "Избегайте неявного преобразования типов"
Beltar писал: Сам tpu можно было в таком виде и поставлять, если не хочешь давать исходник.
Так в C тоже самое - берешь собираешь в obj или если несколько исходников, то в lib или a. Линкер сам догадается что и как импортировать ;) Кстати возможен и вынос тела кода за пределы lib в dll с помощью статической линковки dll-библиотек. Тогда вообще никаких телодвижений не надо совершать кроме как прописать компилеру путь до lib-файла.
Beltar писал: Чего-чего? Ты сам-то понял чего написал?
Чорд. Опять не думаю, о чем пишу. Имелся в виду интерфейс и реализация ;)
Beltar писал: И хорошо. В отличие от C++ к Паскалевскому ООП претензий ни у кого никогда не было.
Отсутствие чистых виртуальных функций, protected-членов, множественного наследования и возможности нормально использовать паттерны проектирования =))
Beltar писал: Delphi прост
В ущерб мощи ;) Хотя спорить не могу, как RAD-среда идеальна. А по сравнению с C++Builder - вообще божественно :)) Сегодня опробовал
Is this the end of everything?
Beltar Смотрю я на вас и думаю... Сообщений: 3251 Город: 06.04.2007 19:29
Не в ущерб. То, что Delphi'ны столько лет о множ. наследовании не просят о многим говорит. :D
А по сравнению с C++Builder - вообще божественно
Я не помню как было в C++ Builder 6, но в BDS 2006 от Builder'а меня тянет блевать. Кстати, политики Багланда относительно создания Studio я так и не понял. ИМХО лучше Delphi, C++ Builder, C# Builder отдельно, только Delphi Win32 и .NET объединять. Ладно хоть Turbo Delphi и Turbo Builder'ы появились.
protected-членов
???? А я-то думал, что в VCL идет TCustomXXXXControl с protected всего, что не private, а от него разлоченный TXXXXControl. Или я о чем-то другом думал.
За что же ТЫ ненавидишь Симбу? Про SP вот и <a href="http://www.pridelands.ru/?p=texts&a=get&id=328" target="blank">вот<
Beltar писал: То, что Delphi'ны столько лет о множ. наследовании не просят о многим говорит.
На Дельфи не реализуют очень сложные и массивные проекты? =)) А как же скорость работы?
Beltar писал: ???? А я-то думал, что в VCL идет TCustomXXXXControl с protected всего, что не private, а от него разлоченный TXXXXControl. Или я о чем-то другом думал.
Мы говорим о Дельфи или о Паскале? Если в Паскале есть protected-члены, беру свои слова обратно.
Порыв ветра (Athari) писал: Тебя что останавливает? Уж не отсутствие шаблонов ли?
паттерны проектирования - неплохой помошник в ООП ;) отсуствие шаблонов - да нехватает.
Порыв ветра (Athari) писал: Мяут, зато есть статические виртуальные, плюс какое-то подобие метаклассов (указатели на классы). Всё не так однозначно.
Мя[ут], доступно я не смогу. Я впитал, что такое метаклассы, через несколько месяцев после того, как узнал об их существовании, а уж про Дельфи с её указателями на классы промолчу. Х) Мне припёрло, когда надо было дельфовые исходники Resource Explorer’а использовать в Билдере и пришлось понять не только суть технологии, но и то, через какую попу это в Билдер переносится. *Вздрогнул от одной мысли, что ему придётся снова это видеть.*
На Дельфи не реализуют очень сложные и массивные проекты? =)) А как же скорость работы?
На Builder'е тоже. Точнее я таких не знаю, хотя на Delphi написаны обе части стратегии Age of Wonders. Продукты Borland это скорее инструмент одиночек и небольших групп.
А что касается производительности, то быстрее всех Intel C++ Compiler. Потом идет Microsoft. Дело не в языке. Не те времена, чтобы за счет синтаксических извратов Си скорость поднимать. А в том, какой компилятор лучше в целевой платформе разбирается и оптимизации.
Если в Паскале есть protected-члены
В BP 7.0 похоже нету. Отличные от Delphi современные Pascal-компиляторы я в руках не держал. Но они вроде сейчас все Delphi-совместимые. Стандарта на Паскаль вроде нет.
PS А в Си нет интерфейсов. :P
За что же ТЫ ненавидишь Симбу? Про SP вот и <a href="http://www.pridelands.ru/?p=texts&a=get&id=328" target="blank">вот<
В Си даже классов нет. Оно в плюсах появилось. В принципе интерфейсы реализуемы средствами языка (см. пост Атари). Интерфейсы есть в Джаве. Впрочем вместо использования наследования интерфейса, можно просто спроектировать шаблонный класс так, чтобы интерфейс класса-параметра был полон. И даже наследовать ничего не надо :P
То есть например если для класса A не определен метод b, то класс A никогда не сможет быть использован в функции типа
template <class _T> f(_T& t) { t.b(); }
И интерфейсы не нужны ;)
А в Дельфях нет функторов :P
Is this the end of everything?
Dimonius леффка Сообщений: 10303 Город: Москва 07.04.2007 11:45
Блин, по моему почти на любом языке можно написать удобную быструю прогу, и совершенно на любом можно написать жутко тормозящее ублюдонедарозумение. Меня всегда удивляли споры о самом языке - ведь много зависит от программиста. Я даже на васике видел вполне приличный софт, который со своей задачей справлялся идеально. И видел совершенно уродские поделки, написанные на С++, за которые просили приличные деньги, но они их не стоили совершенно... Может таки будем обсуждать само ТВОРЧЕСТВО на языках программирования, а не сами языки? А то оффтопик получается уже определенный. А споры что лучше Delphi или C такие же религиозные как Windows vs Linux, IE vs FF vs Opera и тд и тп. И такие же бесполезные - когда человеку надо он выучит нужный ему язык. Если ему не надо - он будет писать на том, что знает и/или какой язык ему приятнее и удобнее. В любом случае мощность и Дельфей и С на данный момент вполне достаточно для того чтобы писать почти любые прикладные программы и даже игрушки. Остальное детали.
Вот ты и попался. Аналогичные ф-ии в разных языках реализовывались по-разному. И не встретив в языке знакомого термина не следует считать, что в нем нет таких средств.
А насчет функторов:
type
TFunc=function(a,b:Integer):Integer;{Процедурный тип, такого термина ведь в Си нету}
var
f:TFunc;
r:Integer;
P:Pointer;
function Func1(a,b:Integer):Integer;
procedure Proc1(PFunc:Pointer);
begin
P:=@Func1;
f:=Func1;
r:=f(1,2);
Proc(P);
end;
Как хочу так и верчу.
Это даже не Delphi, а BP. В Delphi все события это свойства процедурного типа. Только объявляются они немного не так:
TNotifyEvent=procedure(Sender:TObject) of object;
И как, правило, являются процедурами.
А еще:
FHandle:=AllocateHWND(@WndProc); {был компонент не оконный, стал оконный}
2 Dimonius
Дык никто ничего не выкладывает, ибо никому кроме него это не надо, а что надо (вроде твоего USD) на своих сайтах ложат. А спросить чего на том же Vingrad'е проще. Кстати, ты к TigerPad можешь подсветку синтаксиса Delphi и C и т. п. прикрутить? Для html ведь есть. Догадываюсь, что тебе и помимо этого блокнота есть чем заняться, но все же.
За что же ТЫ ненавидишь Симбу? Про SP вот и <a href="http://www.pridelands.ru/?p=texts&a=get&id=328" target="blank">вот<
Dimonius леффка Сообщений: 10303 Город: Москва 07.04.2007 15:10
Shushik писало: Вообще, программирование на яваскрипте чем-то напоминает ловлю чертиков из табакерки.
Вот точно. А всё из-за мелких расхождений в объектных моделях. В одном браузере это так называется в другом иначе. Как же меня это убивает. А вообще что-то на нём написать очень просто. Я даже обьекты полюбил.
Beltar, ну те проги, которые я декомпилировал - при Copy/Paste компилировались дальше без проблем. В NET среде, конечно :) Но в целом и так понятно что и как работает - названия функций вполне понятны, и если что хелп по ним легко ищется в интернете
Beltar Смотрю я на вас и думаю... Сообщений: 3251 Город: 08.04.2007 23:18
Белтар, в прежних версиях Дельфи формы лежали в dfm (бинарном) в ресурсной секции исполнимого файла, в группе RCDATA. Впрочем, что они сейчас с дотнетами изобрели — не знаю…