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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Pascal sv C++ 
:(
    Опции темы
baldina
Дата 5.5.2008, 23:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



Цитата

Очередь или сортировку сделать

Вы еще кипятите?
PM MAIL   Вверх
archimed7592
Дата 5.5.2008, 23:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Архимед
****


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

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



Цитата(Beltar @  5.5.2008,  23:28 Найти цитируемый пост)
Как и у сишников т. к. смещения по памяти типа адрес+4 могут стать некорректными.
 smile
У сишников, в отличии от паскалистов, ptr + 4 - это сдвиг на sizeof(ptr) * 4, так что не надо "ля-ля". Есть конечно моменты, на которые нужно обратить внимание при портировании кода, но их ограниченное кол-во и сложность портирования не так уж и высока.

Цитата(Beltar @  5.5.2008,  23:28 Найти цитируемый пост)
Пасквилянт еще подумает перед тем, как извращаться. 

Ню-ню smile

Цитата(Beltar @  5.5.2008,  23:28 Найти цитируемый пост)
Ну если вы не в курсе, то что я могу поделать. У меня вот знакомых пишущих на Си меньше, чем на Delphi.

А как, вообще Delphi к паскалю относится? С тем же успехом можно под одну гребёнку и C++, и Java, и PHP и т.д., ибо у них синтаксис от Си происходит.

Цитата(Beltar @  5.5.2008,  23:28 Найти цитируемый пост)
Если сишники этого не могут без STL

Есть выбор: писать самому, допустить ошибки, отладить, снова отладить и т.д. Потом выяснится, что алгоритм неэффективен, переписать, отладить, снова отладить и так до бесконечности. Или же можно взять готовый, обобщённый алгоритм(к контейнерам то же самое относится).

Цитата(Beltar @  5.5.2008,  23:28 Найти цитируемый пост)
меня всегда удивляло почему подобная мелочевка не идет в VCL (или по крайней мере я про нее не знаю). Но подобную мелочь всегда можно найти. 

А ты поищи, поищи. Давно это в паскале(да, лан, пусть, даже, в Deplhi) шаблоны появились, чтобы эта мелочёвка вообще в природе появилась? smile


--------------------
If you have an apple and I have an apple and we exchange apples then you and I will still each have one apple. But if you have an idea and I have an idea and we exchange these ideas, then each of us will have two ideas.
© George Bernard Shaw
PM Jabber   Вверх
Lazin
Дата 6.5.2008, 08:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 3820
Регистрация: 11.12.2006
Где: paranoid oil empi re

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



Цитата(Beltar @  5.5.2008,  23:28 Найти цитируемый пост)
Как и у сишников т. к. смещения по памяти типа адрес+4 могут стать некорректными. Причем скорее именно у сишников. Пасквилянт еще подумает перед тем, как извращаться. 

я тебе про одно, а ты мне про другое, я о том, что при работе с указателем как с целым может возникнуть проблема с переносом на 64-х битную архитектуру, например представим что в С нету арифметики указателей (прям как в паскале smile )
Код

char aray[100];
unsigned int addr = (unsigned int)aray;//бугога, а вот и лажа
addr++;
char *iter = (char*)addr;

код нормально отработает при компиляции под 32х а если скомпилировать под 64х то то-же будет работать, почти всегда smile 

Цитата(Beltar @  5.5.2008,  23:28 Найти цитируемый пост)
Даже если компилятор Паскаля будет работать в 10 раз медленнее, я бы не советовал гнуть пальцы по поводу короткого синтаксиса Си, т. к. первая же компиляция программки в 5000 строк просто сожрет все время, сэкономленное на наборе за все время создания программы. Так что каким местом сложность стала преимуществом мне непонятно.

ну вот недавно собирал библиотеку - 30 000 строк (Си), секунды 3 или 4 smile , а ведь современные компиляторы умеют собирать разные единицы трансляции параллельно smile 
И вообще ты не о том, вот есть к примеру в Delphi шаблоны, а может ли он самостоятельно выводить типы шаблонных параметров, а есть ли в Delphi(Pascal) аналог шаблон-шаблонных параметров (это когда в шаблон передается не тип, а другой шаблон) и тд... 
Шаблоны в Delphi - это элементарная параметризация типов, а в С++ это тьюринг полный язык, на котором можно писать программы, которые будут выполняться во время компиляции и вычислять значения и типы.

Цитата(Beltar @  5.5.2008,  23:28 Найти цитируемый пост)
Не поймите меня превратно. Я ничего не имею против STL и даже за нее, меня всегда удивляло почему подобная мелочевка не идет в VCL (или по крайней мере я про нее не знаю). Но подобную мелочь всегда можно найти. 

наверное потому-что STL использует шаблоны, и без них очень кривой STL получится smile , неудобный smile (кстати насколько я знаю есть в Delphi и стеки и динамические массивы и все что душе угодно...)

Цитата(Beltar @  5.5.2008,  23:28 Найти цитируемый пост)
Наличие или отсутствие стандартов, на Паскаль они вроде тоже были, глубоко и искренне пофигу, тем более, что язык для RAD избыточен для программирования контроллеров. Что включать в стандарт будем? Соответствуют-ли стандарту все плюсовые компиляторы еще вопрос.
Сделает кто-то Ada Studio сравнимую с Delphi и VS будут Аду массово использовать, нет значит не будут. Решают не столько качества языка сколько его поддержка крупной фирмой. Еще Fortran каким бы отстойным он по сравнению с европейским Алгол-60 ни был, в Америке цвел и пах, только из-за стараний IBM. Модула-2 может и лучше Паскаля, но где она сейчас? Только потому, что Borland не выпустила ее на рынок.
Совершенно стихийным было развитие Бейсика и современный VB это уже совсем др. язык. Куда более стихийным, чем у Паскаля, который ориентировался на Borland.

Вот был сначала Visual Basic, дожил он до 6-й версии, а потом взял и исчез, прекратил развиваться, а все из-за того, что он зависел от одной известной компании.

Это сообщение отредактировал(а) Lazin - 6.5.2008, 08:11
PM MAIL Skype GTalk   Вверх
jackfrost
Дата 19.6.2008, 13:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



 smile 
 smile 
 smile 

Люди, все эти языки фуфло, ну сколько уже лет математикам приходится писать один и тоже цикл для вычисления банальной суммы:
for (double i=1; double tmp=0 ,i<N,i++) {tmp+=1/i; }

неужели сложно сделать что-то типа:
sum(i,1,N,1/i); или даже  sum(i,1,N,   sum(j,1,N,1/i+1/x(j)  ) )   
ну это же проще пареной репы!!! 
веть вообще это можно было-бы решить макросом, если бы в Си составной оператор мог бы быть выражением:
  result =  (  for (double i=1; double tmp=0 ,i<N,i++) {tmp+=1/i;} ,  tmp  );

идиотизм писать математику на языке заточенным по работу с железом. А все эти паскали явы и ады не далеко ушли... таже фигня..



..а те замечательные изменения которые приняли в С99 - пошли коту под хвост. Никто не хочет поддерживать уже почти 10лет, по IT меркам почти вечность....




Это сообщение отредактировал(а) jackfrost - 19.6.2008, 13:50
PM MAIL   Вверх
Alexeis
Дата 19.6.2008, 13:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Амеба
Group Icon


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

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



jackfrost, используй пакеты Математика, матлаб и проч. Там все предельно просто.


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

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

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


Новичок



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

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



Цитата(Alexeis @ 19.6.2008,  13:45)
jackfrost, используй пакеты Математика, матлаб и проч. Там все предельно просто.

МАТЛАБ пользую для прототипирования алгоритмов, а писать потом все равно все на Си приходится.
кстати действительно из смешного - в МАТЛАБе нат такой операции  smile 
если под знаком суммы стоит функция строго одного аргумента, то нужно раскрывать все в цикл...
PM MAIL   Вверх
Lazin
Дата 19.6.2008, 14:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 3820
Регистрация: 11.12.2006
Где: paranoid oil empi re

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



Цитата(jackfrost @  19.6.2008,  13:42 Найти цитируемый пост)
Люди, все эти языки фуфло, ну сколько уже лет математикам приходится писать один и тоже цикл для вычисления банальной суммы:
for (double i=1; double tmp=0 ,i<N,i++) {tmp+=1/i; }

неужели сложно сделать что-то типа:
sum(i,1,N,1/i); или даже  sum(i,1,N,   sum(j,1,N,1/i+1/x(j)  ) )   
ну это же проще пареной репы!!! 

а почему нельзя написать функцию sum? smile 
PM MAIL Skype GTalk   Вверх
Alexeis
Дата 19.6.2008, 14:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Амеба
Group Icon


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

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



Цитата(Lazin @  19.6.2008,  13:42 Найти цитируемый пост)
а почему нельзя написать функцию sum?

  Потому что она без счетчика. Без счетчика такая функция есть, по крайней мере в модуле Math.

Выбирайте на любой вкус smile .

Код

function Sum(const Data: array of Double): Extended;

function SumInt(const Data: array of Integer): Integer;

function SumOfSquares(const Data: array of Double): Extended;

procedure SumsAndSquares(const Data: array of Double; var Sum: Extended; var SumOfSquares: Extended);



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

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

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


Новичок



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

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



да не об этом речь,
Цитата(jackfrost @ 19.6.2008,  13:42)
  res=sum(i,1,N,   y(i)*sum(j,1,M,1/i+1/x(j)  ) )   


 вот о каком синтаксисе мечтают люди, а функции тут не причем - просто препроцессор долженбы развернуть этот в код:

for (tm1=0,i=1,i<N,i++ )
{
   for (tmp2=0,j=1,j<M, j++)
   {
        tmp2+=1/i+1/x(j);
   }
   tmp1+=y(i)*tmp2;
}
res=tmp1;

а через функции никак - ибо выражение 1/i+1/x(j), должно быть вычесленно до вызова функции...

может в Яве или в Си-шарпе  есть механизмы сделать нечто подобное?
собственно для этого  достаточно чтобы сложный оператор (цикла) имел значение и мог быть правым значением в присвоении:
res={for (.... } для рекурентного вызова...
ну и механизм макросов как в Сях или желательно помощнее....  всех делов...


Это сообщение отредактировал(а) jackfrost - 19.6.2008, 15:57
PM MAIL   Вверх
Alexeis
Дата 19.6.2008, 15:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Амеба
Group Icon


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

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



jackfrost, так вполне можно написать в Delphi. Смотри x(j), y(i) - это функции. Функции можно передавать в качестве параметра в другие функции. Точнее функцией будет 1/i+1/x(j) .

Добавлено через 1 минуту и 55 секунд
 Хотя пожалуй вложенно не получиться.


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

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

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


^аВаТаР^ сообщение>>
****


Профиль
Группа: Участник
Сообщений: 2616
Регистрация: 22.5.2005
Где: за границей разум а

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



Цитата(jackfrost @  19.6.2008,  17:42 Найти цитируемый пост)


неужели сложно сделать что-то типа:
sum(i,1,N,1/i); или даже  sum(i,1,N,   sum(j,1,N,1/i+1/x(j)  ) )   
ну это же проще пареной репы!!! 


Кому сложно? Это делается элементарно. В одну строку. Но не на си и не на паскале.

Ф-циональные языки и их особенности не запрещали.

Код

z = sum( 1.0/x for x in xrange(1,3) )
print z


Добавлено через 1 минуту и 54 секунды
Цитата(jackfrost @  19.6.2008,  19:16 Найти цитируемый пост)
может в Яве или в Си-шарпе  есть механизмы сделать нечто подобное?

Посмотри в сторону Nemerle. Там есть очень мощная система макросов.


--------------------
 Здесь был кролик. Но его убили.
Человеки < кроликов, йа считаю.
PM MAIL WWW ICQ   Вверх
Любитель
Дата 19.6.2008, 16:51 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Программист-романтик
****


Профиль
Группа: Комодератор
Сообщений: 3645
Регистрация: 21.5.2005
Где: Воронеж

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



Цитата(jackfrost @  19.6.2008,  15:16 Найти цитируемый пост)
 вот о каком синтаксисе мечтают люди, а функции тут не причем - просто препроцессор долженбы развернуть этот в код:

Короче, люди мечтают о лямбда-функциях. Препроцессор тут не при чём smile 


--------------------
PM MAIL ICQ Skype   Вверх
lukas
Дата 19.6.2008, 19:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



вообще написали бы еще в теме Глагол vs С++  smile ... жестокое сравнение было бы...


--------------------
http://code.google.com/p/orionphp/ - opensource скриптовой язык Orion (аналог PHP) для freepascal/delphi.
PM MAIL WWW   Вверх
jackfrost
Дата 25.6.2008, 10:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



нафих  глаголъ  и лямбду с питоном, 
вот нашел решение, работает только в GNU C и его портах:
 
#define SUM(n,N0,N,eq) ({double tmp_##n=0; for (int n=(N0);n<(N);n++) {tmp_##n+=(double)(eq);} tmp_##n;  })

Понятно, что такой код, далеко не безопасен и далек от оптимальности, но на этапе прикидки сложной математики просто супер!!
Теперь можно писать запросто вот так:

main()
{
double A[2][3]={{1,2,3},{4,5,6}};
double sumall=SUM(k,0,2, SUM(n,0,3, A[k][n]) );
printf("%f\n", sumall );
}


такчто Си рулит и по сей день.

PM MAIL   Вверх
Lazin
Дата 25.6.2008, 10:41 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 3820
Регистрация: 11.12.2006
Где: paranoid oil empi re

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



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

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

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


 




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


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

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