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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> А пишут ли ещё на Си++? 
:(
    Опции темы
Beltar
Дата 6.4.2013, 23:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Цитата

  Ну Delphi Prism это отдельная песня. Сделали почти что полный клон C# . Зачем делать 2 языка, которые ну совсем уж похожи. Если Delphi.NET можно было рассматривать как основу для порта старых программ написанных на делфи на платформу .NET, то Delphi Prism отказались от обратной совместимости и сделали нечто ни к селу ни к городу. 


Мне вот интересно, хоть кто-то портировал старый проект на Delphi .NET? Какой в этом профит? Паникеры же, при выходе Delphi 8, скорее всего, сразу капитулировали перед MS. Призма, точнее компилятор изначально продукт сторонний, но как компилятор Паскаля для .NET он никому не мешает, пусть и разницы там между языками 0, только шарп равнее других.  smile 
Смысла в переделывании VCL под .NET, где и так есть аналогичная библиотека я никакого не вижу. На .NET по-моему вообще ловить остальным нечего, полностью подконтрольная MS территория.


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


Опытный
**


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

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



Цитата(Alexeis @  6.4.2013,  00:03 Найти цитируемый пост)
Ну так-то скорость написания программ намного ниже чем скорость печати, так что ничуть не мешает. Выделенные var это как раз хороший стиль позволяющий содержать переменные в относительно порядке.

Ну дык кто мешает исполнять? И не надо путать теорию с практикой. Удобнее и комфортнее когда я сам могу решить где объявлять. Ну да - это источник опечаток.


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


Опытный
**


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

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



Но у того, кто после тебя в твой код может полезть (а ты сам через месяц=другой человек) вполне может возникнуть желание взять за яйца того, кто черт знает что и где наобъявлял. Проблему, правда, маленько сглаживает возможность перехода к объявлению в современных IDE.

Вообще если послушать сишников, то они write only-программисты, порождающие код со скоростью печати.


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


Leprechaun Software Developer
****


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

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



Цитата(Alexeis @  6.4.2013,  00:03 Найти цитируемый пост)
Ну так-то скорость написания программ намного ниже чем скорость печати, так что ничуть не мешает. Выделенные var это как раз хороший стиль позволяющий содержать переменные в относительно порядке. Зря они сделали послабление. В языке С ведь тоже правило определения в начале блока.

Не понимаю чем это может помочь. Чем ближе к месту использования объявлена тем лучше. Зачем делать областью видимости переменной весь метод, когда реально она используется только в одном блоке?


--------------------
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   Вверх
Alexeis
Дата 8.4.2013, 15:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Амеба
Group Icon


Профиль
Группа: Админ
Сообщений: 11743
Регистрация: 12.10.2005
Где: Зеленоград

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



Цитата(LSD @  8.4.2013,  12:20 Найти цитируемый пост)
Зачем делать областью видимости переменной весь метод, когда реально она используется только в одном блоке? 

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


--------------------
Vit вечная память.

Обсуждение действий администрации форума производятся только в этом форуме

гениальность идеи состоит в том, что ее невозможно придумать
PM ICQ Skype   Вверх
serger
Дата 8.4.2013, 16:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



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


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


Leprechaun Software Developer
****


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

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



Цитата(Alexeis @  8.4.2013,  16:52 Найти цитируемый пост)
Дело в не области видимости переменных блока

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


Цитата(Alexeis @  8.4.2013,  16:52 Найти цитируемый пост)
объявление переменных размазывают тонким слоем по всему блоку, а потом после нескольких правок, локальная переменная блока удаляется случайно

Шанс удалить нужную переменную которая объявлена "по месту", намного ниже чем переменную объявленную где-то в другом месте. Ну и плюс это никак не решает проблему
Цитата(Alexeis @  8.4.2013,  16:52 Найти цитируемый пост)
код, который с ней работал благополучно цепляет переменную с таким же именем из вышестоящего блока

А доводы типа:
Цитата(Alexeis @  8.4.2013,  16:52 Найти цитируемый пост)
Вынесение переменных в начало блока улучшает культуру кода и повышает устойчивость к правкам.

это какое-то абстрактное философствование.


--------------------
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   Вверх
Alexeis
Дата 8.4.2013, 16:40 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Амеба
Group Icon


Профиль
Группа: Админ
Сообщений: 11743
Регистрация: 12.10.2005
Где: Зеленоград

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



Цитата(LSD @  8.4.2013,  17:09 Найти цитируемый пост)
Шанс удалить нужную переменную которая объявлена "по месту", намного ниже чем переменную объявленную где-то в другом месте. Ну и плюс это никак не решает проблему

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


--------------------
Vit вечная память.

Обсуждение действий администрации форума производятся только в этом форуме

гениальность идеи состоит в том, что ее невозможно придумать
PM ICQ Skype   Вверх
Alexeis
Дата 8.4.2013, 16:57 (ссылка) |   (голосов:4) Загрузка ... Загрузка ... Быстрая цитата Цитата


Амеба
Group Icon


Профиль
Группа: Админ
Сообщений: 11743
Регистрация: 12.10.2005
Где: Зеленоград

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



Цитата(LSD @  8.4.2013,  17:09 Найти цитируемый пост)
Нет именно в этом. Мой вопрос был про то зачем счетчику цикла быть доступным вне этого цикла?

  Счетчик цикла не должен быть доступен везде.  Паскаль не позволяет его объявлять локально, зато громко материться при попытке задейстовать его вне цикла. Более того, он даже скажет, что счетчик при возможности оптимизируется регистром и его значение после цикла может быть неопределенным. Согласен, что вынос его не особо помогает, зато определение переменных вначале быстро отучивает писать функции на сто листов, заставляет программиста разбивать задачи на небольшие функции, которые решают одну свою задачу. В общем язык сам способствует улучшению качества кода. 
  С++ же не ограничивает программиста в возможностях по написанию ###кода. Для начинающего программиста С++ просто находка. Столько ошибок можно накосячить! Конечно, тонкие намеки паскаля, порой слишком тонкие  smile , так что безусловно чудят. Учитывая что порог вхождения в паскаль на порядок ниже чем в С++, то и процент "чудо-кода" выше, но те кто продолжают работать на паскале и дальше, потом не променяют его на С++ .


--------------------
Vit вечная память.

Обсуждение действий администрации форума производятся только в этом форуме

гениальность идеи состоит в том, что ее невозможно придумать
PM ICQ Skype   Вверх
Beltar
Дата 8.4.2013, 17:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Структура процедурки на Паскале:

procedure ProcName
var <Список локальных параметров>
<Локальные процедурки> // сишникам завидовать
begin
<Тело процедуры>
end;

Объясните мне, как даже самых зверских правок между begin и end могут пострадать локальные переменные? У меня с точностью до наоборот, функция искромсана, но переменные живут, периодически можно посмотреть хинты при компиляции, что never used и почистить, но лишнего точно не сотрешь.

Цитата

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


Кстати, с этим в Delphi жестко, счетчик обязан быть локален и всегда ReadOnly.

for i:=0 to 10 do Inc(i) просто не скомпилируется. И я на это пару раз попадал.

Что же касается Си, то в Си цикла for нет вообще, есть while в котором изменение контрольных переменных перенесено. 
И вот такое вот ****

Код

for (int i=0; i < 10; i++)
 { i++;}


У меня сейчас Билдер сожрал и даже варнинга не выдал.


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


Leprechaun Software Developer
****


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

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



Цитата(Alexeis @  8.4.2013,  17:40 Найти цитируемый пост)
Это еще почему? Редактируешь код, выделил, зацепил, снес. Откомпилировал, все работает! Вот и нет ошибки. Особенно это касается любителей запихивать несколько выражений в одну строку.

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



Цитата(Alexeis @  8.4.2013,  17:57 Найти цитируемый пост)
Счетчик цикла не должен быть доступен везде.  Паскаль не позволяет его объявлять локально, зато громко материться при попытке задейстовать его вне цикла.

Это касается только цикла for, а вот если мне надо реализовать не "цикл от 1 до N", а что-то более сложное, то тут уже компилятор не поможет.


Цитата(Alexeis @  8.4.2013,  17:57 Найти цитируемый пост)
заставляет программиста разбивать задачи на небольшие функции, которые решают одну свою задачу

Далеко не всегда это можно сделать, вернее не всегда это имеет смысл.


--------------------
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
Дата 8.4.2013, 18:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Цитата(LSD @  8.4.2013,  18:17 Найти цитируемый пост)
Это касается только цикла for, а вот если мне надо реализовать не "цикл от 1 до N", а что-то более сложное, то тут уже компилятор не поможет.

Интересно, а итераторы в делфях уже есть?


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


Опытный
**


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

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



Вообще-то я тему поднял именно вопросом, что есть в плюсах, чего нет в Delphi. Навскидку могу только вспомнить функции с переменным числом аргументов, которые вот сколько пишу ни разу не понадобились за исключением встроенных вроде WriteLn. Итератор, слово-то. for each давно есть, хотя я не юзаю, да и раньше проблем с перебором никаких не было. Х)


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


Опытный
**


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

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



Цитата(Beltar @  8.4.2013,  20:49 Найти цитируемый пост)
Итератор, слово-то. for each давно есть, хотя я не юзаю, да и раньше проблем с перебором никаких не было. Х) 

пример можно?


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


Опытный
**


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

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



Если коротко из справки, то:

Цитата

Delphi supports for-element-in-collection style iteration over containers. The following container iteration patterns are recognized by the compiler: 

for Element in ArrayExpr do Stmt; 
for Element in StringExpr do Stmt; 
for Element in SetExpr do Stmt; 
for Element in CollectionExpr do Stmt; 
for Element in Record do Stmt; 
The type of the iteration variable Element must match the type held in the container. With each iteration of the loop, the iteration variable holds the current collection member. As with regular for-loops, the iteration variable must be declared within the same block as the for statement. 



Дальше там еще много интересного, хотя пока есть TList<T> и TCollection<T>, которые можно спокойно через for i:=0 to Count-1 перебрать, вряд ликто-то будет сидеть и писать свои энумераторы.


--------------------
Опытный программист на C++ легко решает любые не существующие в Паскале проблемы. smile(с) я, хотя может и нет
Пищущий на C++ мужик. Даже если это мужик сидит в написанном на Delphi и жрущем паскалевскую библиотеку билдере.
PM MAIL   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила ведения Религиозных войн
Smartov
1. Уважайте собеседника
2. Собеседник != враг
3. Старайтесь воздерживаться от тем вида "Windows Rulez" или "Linux Rulez"

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

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


 




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


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

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