Поиск:

Ответ в темуСоздание новой темы Создание опроса
> [General] Проблема модернизации кода, Беседа 
V
    Опции темы
Tupoi
Дата 5.6.2006, 19:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Привет всем.

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

Особенно когда кодам лет этак по 10 - 20 .... и ничего, кроме исходников программ нету ... 
PM MAIL   Вверх
Cr@$h
Дата 5.6.2006, 22:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Исследователь
***


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

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



Цитата(Tupoi @  5.6.2006,  20:44 Найти цитируемый пост)
раз в новых версиях компилятора напрочь зарубаются некоторые конструкции, то потом оччень тяжело будет переходить со старых компиляторов на новый.

Зарубается в новых версиях стандарта, я бы сказал. А тот же добрый Intel способен компилить и F66.
Надо сказать, что убираемые конструкции и средства не только "плохие", но и обязательно избыточны (чтобы было чем утрату заменить). В конце стандарта обычно пишут какими средствами нужно ето дело заменять. Имею опыт по переписыванию старого кода -- одно удовольствие на самом деле. Обычно приходится заменять goto (которые кстати ещё не исключены) и исключенные конрукции с метками. Код становится только понятнее, а эта работа помогает с необходимыми минимальными усилиями в нём разобраться. Так что всё нормально.
Не так много языков, в которых такого рода ситуации возникают...

Добавлено @ 22:38 
А вот, кстати, пример переписи кода под новый диалект. Ничего сложного, полезная работа (хотя сама прога без пролога и комментариев, что совсем не в F-стиле smile но это и не мне надо было smile ).
Код

SUBROUTINE SUH040(S,H,X,Y,K) 
C ЛИHEЙHAЯ ИHTEPПOЛЯЦИЯ ДУГИ K2П C ЗAДAHHOЙ CTPEЛOЙ ПPOГИБA 
dimension s(1),x(1),y(1) 
q=s(1)-s(6) 
a=s(2)-s(7) 
f=s(3)-s(6) 
b=s(4)-s(7) 
g=(.5/s(5)-.5)**2 
l=1 
x(1)=s(1) 
y(1)=s(2) 
h3=.05 
if(h3.gt.h/20)h3=h/20 
1 l=l+1 
w=f-q 
v=b-a 
hc=abs(a*w-q*v)/sqrt(w*w+v*v) 
h1=h 
2 h2=hc/h1-4. 
t=.0 
if(h2)4,4,3 
3 t=(sqrt(1.+g*h2)-1.)/2./g 
4 r=1.+t+g*t*t 
x1=(w*t-q)/r 
y1=(v*t-a)/r 
d=abs(w*y1-v*x1)/sqrt(x1*x1+y1*y1)/(1.+2.*(g*t+sqrt(g*r)))
j=1 
if(t.lt..1e-8)j=0 
if(abs(d-h)-h3)9,9,7 
7 h1=h1-(d-h)*(1.25-1./(2.+4.*sqrt(g))) 
if(j+d/h-1.)9,9,2 
9 q=q+x1 
a=a+y1 
f=f*t/(t+2.) 
b=b*t/(t+2.) 
g=r/(t+2.)**2 
x(l)=q+s(6) 
y(l)=a+s(7) 
if(l-k)10,11,11 
10 if(j.eq.1)goto 1 
11 k=l 
return 
end

Код

Subroutine SUH040( S, h, x, y, k )
! Линейная интерполяция дуги К2П с заданной стрелой прогиба .
    implicit none

    real, intent(in) :: S(7), h
    real, intent(out) :: x, y
    integer, intent(inout) :: k
    
    real q, a, f, b, h3, w, v, hc, h1, h2, t, r, x1, y1, d, g
    integer l, j
    
    q = S(1) - S(6)
    a = S(2) - S(7)
    f = S(3) - S(6)
    b = S(4) - S(7)
    g = ( .5/S(5) - .5 )**2
    l = 1
    x = S(1)
    y = S(2)
    h3 = .05
    if( h3 > h / 20 )&
        h3 = h / 20
    do
        l = l + 1
        w = f - q
        v = b - a
        hc = Abs(a*w - q*v) / SqRt(w*w + v*v)
        h1 = h
        do
            h2 = hc/h1 - 4.
            t = .0
            if( h2 > 0 )&
                t = ( SqRt( 1. + g*h2 ) - 1. ) / 2. / g
            r = 1. + t + g*t*t
            x1 = ( w*t - q ) / r
            y1 = ( v*t - a ) / r
            d = Abs(w*y1 - v*x1) / SqRt(x1*x1 + y1*y1) / ( 1. + 2.*( g*t + SqRt(g*r) ) )
            j = 1
            if( t < .1e-8 )&
                j = 0
            if( Abs(d-h) - h3 > 0 ) then
                h1 = h1 - ( d - h )*( 1.25 - 1./( 2. + 4.*SqRt(g) ) )
                if( j + d/h - 1. <= 0 )&
                    exit
            else
                exit
            end if
        end do
        q = q + x1
        a = a + y1
        f = f * t / ( t + 2. )
        b = b * t / ( t + 2. )
        g = r / ( t + 2.)**2
        x = q + S(6)
        y = a + S(7)
        if( l - k >= 0 .or. j /= 1 )&
            exit
    end do
    k = l
end subroutine SUH040
 
PM MAIL ICQ   Вверх
Tupoi
Дата 6.6.2006, 22:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Cr@$h

Как говорится "You're absolutely fucking correct" !

вот только если бы разработчики компиляторов В АВТОМАТЕ переделывали исходники ....... блмн я бы просто прыгал от радости.....

А ведь придется делать ВРУЧНУЮ ......  smile  smile - вот в чем проблема .... и не слабая ...  smile , к сожалению ....  

Это сообщение отредактировал(а) Tupoi - 6.6.2006, 22:42
PM MAIL   Вверх
Cr@$h
Дата 7.6.2006, 19:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Исследователь
***


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

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



Цитата(Tupoi @  6.6.2006,  23:42 Найти цитируемый пост)
вот только если бы разработчики компиляторов В АВТОМАТЕ переделывали исходники 

Губа не дура. Это не так-то легко сделать, понятное дело.
Цитата(Tupoi @  6.6.2006,  23:42 Найти цитируемый пост)
А ведь придется делать ВРУЧНУЮ ......     - вот в чем проблема .... и не слабая ...   , к сожалению ....  

Все так делают. Fortran фактически единственный язык, который имеет значительный объём уже написанного кода, содержащий исключённые и признанные устаревшими средства. В индустриальном программировании такого рода проблема не стоит, поэтому и ожитать таких тулов не приходится. Если говорить про intelligence, то тут давно всё нормально, взять тот же Eclipse.
Если посмотреть, например, на Java, то она довольно-таки интенсивно развивается. Меняются и добавляются не только средства языка, но и библиотеки классов. И ничего, люди живут как-то и работают, да и повторное использование кода доходит до нормальных 80%. То же самое можно просмотреь и в шарпах: разделение классов и прочее.
Изменения есть, они всегда будут, но они и естественны, идут своим чередом. В Fortran они носят свой особенный характер только потому, что он намного старше многих других современных языков и из-за этого содержит и код, написанный на прежних диалектах.

Я прикрепил Word'овский файл, в котором привёл информацию на английском из стандарта Fortran 2003 об устаревших и исключённых средствах языка. 

Присоединённый файл ( Кол-во скачиваний: 11 )
Присоединённый файл  Deleted_features_of_Fortran.doc 49,00 Kb
PM MAIL ICQ   Вверх
popovda
Дата 12.6.2006, 17:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Хочу напомнить всем, кому синтаксис старого фортрана не нравится. Это были не компиляторы с мощной обработкой строковых данных - это был FORmula TRANslator - транслятор!!!. Первый язык высокого уровня. То есть инструкции языка ложились напрямую в маш.коды. Если переписать кусок любой программы на ассемблер, то сразу будет ясно как хорошо Фортран-коды ложатся на маш.код. Сейчас же ЭВМ стали очень производительными и временно-экономические затраты на компиляцию стали несопоставимо малы по сравнению с тем,что было в конце 50-ых --- середине 70-ых годов. Поэтому и Фортран обновляется, но обновляется очень аккуратно, не спеша.  

Это сообщение отредактировал(а) popovda - 12.6.2006, 17:03


--------------------
С уважением, Попов Д.А.
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Fortran | Следующая тема »


 




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


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

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