LINUX.ORG.RU

Free Pascal 2.0 beta


0

0

Тихо и незаметно 5 ноября вышла первая бета версии 2.0 Free Pascal. Изменений, по сравнению с 1.2 уйма. Приведу только некоторые:
- Динамические массивы;
- Поддержка 64 битных типов данных;
- Перегруженные операции;
- Улучшена совместимость с Delphi;
- Потдержка PowerPC архитектуры, MacOS и многое другое. Посмотреть полный список можно вот здесь. http://www.freepascal.org/future.html
Новсти вот тут http://www.freepascal.org/news.html

>>> Хомяк тут

★★★★★

Проверено: maxcom

Ответ на: Re: Тест для программеров от anonymous

Re: Re: Тест для программеров

>string getError() const

Где тебя учили мудила? Все, что размером больше указателя, нужно передавать по ссылке, если есть такая возможность. Марш в реактор!

anonymous ()
Ответ на: Re: Re: Тест для программеров от anonymous

Re: Re: Re: Тест для программеров

>Где тебя учили мудила? Все, что размером больше указателя, нужно >передавать по ссылке, если есть такая возможность

1. Мудила, расскажи, как ты собираешься ВОЗВРАЩАТЬ ссылку? 2. А мудила знает, как устроен std::string ? Намного он больше указателя, ась?

anonymous ()
Ответ на: Re: Re: Re: Тест для программеров от anonymous

Re: Re: Re: Re: Тест для программеров

>1. Мудила, расскажи, как ты собираешься ВОЗВРАЩАТЬ ссылку? Легко и непринужденно. Если благородный дон прогулял лекцию в институте, на которой обсуждался данный аспект применения ссылок, то он сам себе злобный антропоморфный дендромутант.

2. А мудила знает, как устроен std::string ? Намного он больше указателя, ась? Это зависит от реализации, но как правило больше. Например в STLport std::string содержит 2 указателя - на начало и на конец строки, в дотнетовской реализации еще больше - указатель и 2 переменные size_t, т.е. unsigned char.

Так что не рыпайся, мальшик, дядя сказал в реактор, значит в реактор.

anonymous ()
Ответ на: Re: Re: Re: Тест для программеров от anonymous

Re: Re: Re: Re: Тест для программеров

>1. Мудила, расскажи, как ты собираешься ВОЗВРАЩАТЬ ссылку?

Легко и непринужденно. Если благородный дон прогулял лекцию в институте, на которой обсуждался данный аспект применения ссылок, то он сам себе злобный антропоморфный дендромутант.

>2. А мудила знает, как устроен std::string ? Намного он больше указателя, ась?

Это зависит от реализации, но как правило больше. Например в STLport std::string содержит 2 указателя - на начало и на конец строки, в дотнетовской реализации еще больше - указатель и 2 переменные size_t, т.е. unsigned char.

Так что не рыпайся, мальшик, дядя сказал в реактор, значит в реактор.

anonymous ()
Ответ на: Тест для программеров от vada

Re: Тест для программеров

> Если на вход блока поступает число 1, то на выходе должно
> быть 2, а если поступает число 2, то на выходе должно юыть 1.

double swp(double i) { return (3.0-i); }

Решение КОРРЕКТНОЕ, поскольку оно полностью укладывается в постановку задачи. А поскольку в постановке НЕ УКАЗАНО, что необходимо возвращать в случае некорректности входных данных, возвращаемое значение в этом случае имеет правод быть любым. В идеале, надо бы использовать тип Complex (поскольку ничего не говорится о типе :-)

"Ставьте кореектней задачу" (c) Золотая рыбка

no-dashi ★★★★★ ()
Ответ на: Re: Re: Re: Re: Тест для программеров от anonymous

Re: Re: Re: Re: Re: Тест для программеров

>Легко и непринужденно.

Нука-нука, малтшик расскажет, как он собирается возвращать ССЫЛКУ на внутреннюю локальную переменную? Или малтшик лишний параметр заведет? Малтшик код напишет, а мы посмеемся?

>Это зависит от реализации, но как правило больше. Например в STLport std::string содержит 2 указателя

О, жить становится все интереснее. И как, много разницы в том, чтобы передать 1 указатель или два? Или даже два указателя с size_t? Малтшик расскажет, насколько это повлияет на производительность?

Малтшик, иди лучше попробуй арбайтен, чем всякий глупойст молоть.

anonymous ()
Ответ на: Re: Re: Re: Re: Re: Тест для программеров от anonymous

Re: Re: Re: Re: Re: Re: Тест для программеров

>Нука-нука, малтшик расскажет, как он собирается возвращать ССЫЛКУ на внутреннюю локальную переменную? Или малтшик лишний параметр заведет? Малтшик код напишет, а мы посмеемся?

В приведенном примере передавалась ссылка на автоматическую переменную? Или мы уже не помним что сами накорябали?

>И как, много разницы в том, чтобы передать 1 указатель или два? Или даже два указателя с size_t? Малтшик расскажет, насколько это повлияет на производительность?

В реактор! В реактор!

anonymous ()
Ответ на: Re: Re: Re: Re: Re: Re: Тест для программеров от anonymous

Re: Re: Re: Re: Re: Re: Re: Тест для программеров

Ну во первых это написал я. Во вторых я просто забыл поставить &(делал я это между делом). Но глубокоуважаемый оппонент не заметил главного - я после istream и ostream тоже забыл поставить &. А это уже серьезнее. А разводить чепуху на постном масле - бессмысленно. На самом деле этот код инлайнится. И поэтому на самом деле не происходит вообще никакого копирования. В этом случае return превращается в noop.

anonymous ()
Ответ на: Тест для программеров от vada

Re: Тест для программеров

bugmaker@anthill:~/tmp$ cat tst.c
/*
* $Id: tst.c,v 0.01
*
* Copyright (C) 2003, bugmaker
* All bugs reserved
*
* This program is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License as published by the Free
* Software Foundation; either version 2 of the License, or (at your option)
* any later version.
*
* This program is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
* more details.
*
* You should have received a copy of the GNU General Public License along with
* this program; if not, write to the Free Software Foundation, Inc., 59 Temple
* Place, Suite 330, Boston, MA 02111-1307 USA
*/

int f (int i) {
return i==1? 2 : i==2? 1 : -1+0*printf ("хню подсунули :(\n");
}

int main (int argc, char * argv []) {

printf ("f (1) = %i\n", f (1));
printf ("f (2) = %i\n", f (2));
printf ("f (3) = %i\n", f (3));

return 0;
}

bugmaker@anthill:~/tmp$ gcc tst.c -o tst
bugmaker@anthill:~/tmp$ ./tst
f (1) = 2
f (2) = 1
хню подсунули :(
f (3) = -1
bugmaker@anthill:~/tmp$

bugmaker ★★★★☆ ()
Ответ на: Тест для программеров от vada

Как все запущено !

Вобщем, понятно, что на LORе настоящих программеров практически нет, или им просто влом куйней заниматься. :))) Но, то что здесь опубликовано, ни в какие ворота не лезет. Конечно очень эффективно написать а = 3 - а, но вы , дрязья, забываете, что через пол года вам, возможно, придется что-то переделывать, а может даже и не вам, а кому-то другому. А теперь вопрос: сколько матюгов на вас сложит этот кто-то другой, читая ваш текст? Да и вы через полгода не вспомните, что имелось ввиду.

Хорошая пузомерка получилась :(((

Вы скажете: - А сам то? Сам то? Да легко. Я вас сейчас разозлю :)))

Всеми ненавидимый, но мной любимый Pascal (FreePascal)
======================================================

unit OneOrTwo;

interface

// Функция на вход получает 1 или 2, иначе ... в сад.
// Если на входе 1, то на выходе 2, а если на входе 2, то на выходе 1.
function Change(i : Integer) : Integer;

implementation

uses SysUtils;

{$R+}
function Change(i : Integer) : Integer;
type
TrueSet = (one, two);
var
n, m : TrueSet;
begin
Try
n := TrueSet(i);
case n of
one: m := two;
two: m := one;
end;
Change := Integer(m);
Except
on ERangeError do
writeln('Выход за границы допустимых значений i = ',i,'. Может быть 1, или 2.');
end;
end;
{$R-}

end.

Всеми ненавидимая, но мной любимая JAVA
=======================================

final public class OneOrTwo {
// Метод на вход получает 1 или 2, иначе ... в сад.
// Если на входе 1, то на выходе 2, а если на входе 2, то на выходе 1.
public final static int Change(int i) throws Exception {
if (i == 1) {
return 2;
}
else if (i == 2) {
return 1;
}
else {
throw new Exception("Выход за границы допустимых значений i = "+String.valueOf(i)+". Может быть 1, или 2.");
}
}
}

Давайте! Кидайтесь жидким стулом :))) Вот только то что написано работает, и понятно, и останется понятным. Не в коей мере не счетаю себя образцом для подражания, последней в мире инстанцией и авторитетом в программироввании, но меня учили так программировать, и я так делаю.

vada ★★★★★ ()
Ответ на: Как все запущено ! от vada

Re: Как все запущено !

sub puso { my $i = shift;

if($i == 1) { 2; } elsif($i == 2) { 1; } else { die "Invalid value"; } }

sub puso { my($i) = @_;

($i == 1) ? 2 : ($i == 2) ? 1 : die "Invalid value"; }

anonymous ()

Re: Free Pascal 2.0 beta

1C

функция проверить_адын_это_али_два(число)

если число = 1 тогда возврат "На тэбе два дарагой";
конецесли;

если число = 2 тогда возврат "На тэбе адын дарагой";
конецесли;

Сообщить("Вах, ара, неправылный чысло прынес. Надо адын али два");

конецфункции;

Sun-ch ()
Ответ на: Re: Эффективность от anonymous

Re: Re: Эффективность

Modula-2 это следующий процедурный язык, который был разработан Виртом

Modula-3 это разработка DEC, за основу был взят синтаксис Modula-2 но были добавленны объекты

Потом Вирт создал Oberon и Oberon-2. А для Modula-2 есть стандарт на объектное рассширение языка и еще ряд других.

anonymous ()
Ответ на: Re: Free Pascal 2.0 beta от Sun-ch

Re: Re: Free Pascal 2.0 beta

2Sun-ch (*) (20.11.2003 14:45:38)

>1C
>
>функция проверить_адын_это_али_два(число)
>
>если число = 1 тогда возврат "На тэбе два дарагой";
>конецесли;
>
>если число = 2 тогда возврат "На тэбе адын дарагой";
>конецесли;
>
>Сообщить("Вах, ара, неправылный чысло прынес. Надо адын али два");
>
>конецфункции;

%)))) Вот это по нашему! По бразильски! :))))))

vada ★★★★★ ()
Ответ на: Как все запущено ! от vada

Re: Как все запущено !

> Конечно очень эффективно написать а = 3 - а, но вы ,
> дрязья, забываете, что через пол года вам, возможно,
> придется что-то переделывать, а может даже и не вам,
> а кому-то другому

К-О-М-М-Е-Н-Т-А-Р-И-И!!! На каждую функцию, с указанием параметров, их назначения, и ожидаемого результата. Тебя что, не учили?

no-dashi ★★★★★ ()
Ответ на: Re: Re: Как все запущено ! от vilfred

Re: Re: Re: Как все запущено !

Фигня. Троекратное $ARGV[0] - это хуже чем паскальщина. Да и входной параметр не проверяется.

anonymous ()
Ответ на: Re: Re: Re: Re: Как все запущено ! от anonymous

Re: Re: Re: Re: Re: Как все запущено !

bugmaker@anthill:~/tmp$ cat tst.cc
/*
 * $Id: tst.cc,v 0.01
 *
 * Copyright (C) 2003, bugmaker
 * All bugs reserved
 *
 * This program is free software; you can redistribute it and/or modify it
 * under the terms of the GNU General Public License as published by the Free
 * Software Foundation; either version 2 of the License, or (at your option)
 * any later version.
 *
 * This program is distributed in the hope that it will be useful, but WITHOUT
 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
 * more details.
 *
 * You should have received a copy of the GNU General Public License along with
 * this program; if not, write to the Free Software Foundation, Inc., 59 Temple
 * Place, Suite 330, Boston, MA 02111-1307 USA
 */

#include <stdio.h>

template <class T> class TheArray {
  public:
    TheArray (int s) {
      size = s;
      data = new T [size];
    }
    T & operator [] (int i) {
      T * r = NULL;
      if (i >= 0 && i < size) {
        r = &data [i];
      } else {
        throw (char *) "shit happens";
      }
      return * r;
    }
    ~TheArray () {
      delete [size] data;
    }
  private:
    T * data;
    int size;
};

class TheIntArray: public TheArray <int> {
  public:
    TheIntArray (int s): TheArray <int> (s) {};
};

class Both1or2: public TheIntArray {
  public:
    Both1or2 (): TheIntArray (2) {
      (* this) [0] = 2;
      (* this) [1] = 1;
    }
    int snoopy (int x) {
      return  (* this) [x - 1];
    }
};

int main (int argc, char * argv []) {
  Both1or2 x;
  try {
    printf ("1 returns %i\n", x.snoopy (1));
    printf ("2 returns %i\n", x.snoopy (2));
    printf ("3 returns %i\n", x.snoopy (3));
  } catch (char * c) {
    printf ("oops... %s\n", c);
  }
}

bugmaker@anthill:~/tmp$ gcc tst.cc -l stdc++ -o tst
bugmaker@anthill:~/tmp$ ./tst
1 returns 2
2 returns 1
oops... shit happens
bugmaker@anthill:~/tmp$ 

вывод: с++ - выбор профессионала
а что должен делать скрипт с верблюдом? Я не заметил никакого эффекта от его выполнения.

bugmaker ★★★★☆ ()
Ответ на: Вот вам всем. %) от anonymous

Re: Вот вам всем - сорри, preformatted забыл включить. :(

%{
#include <stdio.h>
 
int yywrap(void) {
    return 1;
};
 
int main(void) {
    yylex();
    return 0;
};
 
%}
 
 
%%
1       printf("2");
2       printf("1");
%%

anonymous ()
Ответ на: *** от hbee

Re: ***

>> А что такое биореактор?

на сайте работает поиск :)

bugmaker ★★★★☆ ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.