ФлеймФорумПрограммирование

Язык для программирования а не для кодинга (2 стр)

Страницы: 1 2 3 4 5 Следующая »
#15
2:21, 21 ноя 2021

skalogryz
> крестопроблемы не нужны.
Да? А утечки памяти и потерпеть можно типо?

Вот смотри в С++/С#/Java/Js unordered_set/unordered_map какого-то типа:

{
  std::unordered_set<int> v={1,2,3,4};
  v.insert(5);
  if(v.contains(4)){
    // do things
  }
}

А чё в паскале?

Dmitry_Milk
> Там другое - по невнимательности легко можно напортачить.
Это и есть капризность языка. Ах да, прогу на чистом ассемблере антивирусы любят удалять.

#16
2:36, 21 ноя 2021

samrrr
> А утечки памяти и потерпеть можно типо?
для утечек там есть try...finally
но не RAII ни try..finally от кривых рук не спасут

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

samrrr
> Вот смотри в С++/С#/Java/Js
дженерики там тоже уже есть 100 лет

#17
2:48, 21 ноя 2021

в википедии язык который используется для иллюстрации этой статьи: https://en.wikipedia.org/wiki/Heap%27s_algorithm

procedure generate(k : integer, A : array of any):
    if k = 1 then
        output(A)
    else
        for i := 0; i < k; i += 1 do
            generate(k - 1, A)
            if k is even then
                swap(A[i], A[k-1])
            else
                swap(A[0], A[k-1])
            end if

        end for
    end if

Заметьте, как заблистал паскаль когда из него begin удалили.
Чётко! Вот на таком бы писал и писал.

#18
2:49, 21 ноя 2021

=A=L=X=
> Заметьте, как заблистал паскаль когда из него begin удалили.
и добавили конкретизацию end

а если цикл for вложен в другой, то встреченный "end for" кого из них закрывает...

такой вариант зайдёт: https://ideone.com/TY3A8V ?

#19
3:12, 21 ноя 2021

skalogryz

Не, уже по ключевому слову procedure можно было догадаться, что этот язык не про тех кому лень символы печатать.
Ненужность begin обусловлена не количеством букв в слове, а именно полной его ненужностью. Он только замусоривает поток лексем и даже может отнимать от программы одну строку на себя снижая плотность кода по совершенно необоснованным причинам. Ведь then и do вполне себе открывают блок без всяких прочих подсказок. А однострочные if/while бывают сравнительно редко чтобы на них пытаться экономить - как раз себе же дороже выйдет, как и случилось с begin.
А end for вполне себе обоснован и ничем не плох.

#20
3:13, 21 ноя 2021

skalogryz
> дженерики там тоже уже есть 100 лет
А что по хеш-таблицам то?

skalogryz
> но, если тебе религия запрещает память высвобождать, можешь написать решение на
> рекордах, и дин масивах. Компилятор их за тебя успешно почистит.
Хеш таблицу на паскале покажешь кодом?

#21
3:58, 21 ноя 2021

0iStalker
> ... ждём KPG, с комментарием про Forth и пачкой ссылок на статьи, репозитории,
> маргинальные виды процессоров и микроконтроллеров, а также на поделки сделанные
> фортерами.

:) Как вариант да, но это если сразу не строить иллюзий что сможешь его использовать.,
(хотя есть и достаточно попсовые Форт-системы как Win32Forth)

Но, комментарий 0iStalker  выше , как понимаю, был полон сарказма. :)

Более приземлённые варианты языков, к примеру TCL/Tk,
но в текущем моменте меня заинтересовал  Rebol и последователь его Red как мультиплатформенные и сразу всё из коробки.

P.S. Посоветовал бы ещё Factor, но думаю с ним более длительный период его освоения будет,
но он прилично развивается сообществом.

А, вообще, самое простое что придумало IT это, как ни странно Бейсик.

=A=L=X=
> Заметьте, как заблистал паскаль когда из него begin удалили.
> Чётко! Вот на таком бы писал и писал.
Begin вместо скобок не такая мозг напрягающая сущность. :)
к тому же, в возможностях какого нибудь редактора можно заменять её на более короткие символ/ы
к примеру [ квадратной скобкой ]

Freakazoitt
Что хоть за задача?
Может такой язык подойдёт Evolve 4.0

#22
4:27, 21 ноя 2021

samrrr
> А что по хеш-таблицам то?
FPC, Delphi
> Хеш таблицу на паскале покажешь кодом?
влом писать, но в доках есть примеры.

лол! но скажу, что в паскале можно сделать строки длинее 255 символов ;)

=A=L=X=
> А однострочные if/while бывают сравнительно редко чтобы на них пытаться экономить
не-не-не. Они не однострочные, а одно командные.
если делать вложенные if и/или циклы, то внешние циклы не редко бывают однострочными, т.к. основная работа в самом внутренеем цикле.

=A=L=X=
> Ненужность begin обусловлена не количеством букв в слове, а именно полной его
> ненужностью
ну т.е. как-то так?

{$macro on}
{$define doit:=do begin}
{$define thenb:=then begin}
var
  i : integer;
begin
  for i := 0 to 10 doit 
    if i and 1 <> 0 thenb 
      writeln(i);
    end;
  end;
end.
#23
4:30, 21 ноя 2021

skalogryz
> ну т.е. как-то так?

Ну там не только же в do/then отличия в синтаксисе - приглядись к примеру повнимательнее.

#24
4:55, 21 ноя 2021

=A=L=X=
> Ну там не только же в do/then отличия в синтаксисе - приглядись к примеру
> повнимательнее.
в примере синтаксис же условный. язык, который там "используется" не существует.
первые вопросы разруливания синтаксиса начнутся именно с одинаковыми вложенными структурами If-if или for-for. Каким образом компилятор должен угодать, какой именно if или for закончился.
По отступам? ну это такой питоно-паскаль получает, с избыточными end-ами.

а вообще я придолбался к фразе "Заметьте, как заблистал паскаль когда из него begin удалили"
и стало интересно, можно ли используя существующие методы, и не меняя комплиятора (языка) заставить его "блистать", припрятав begin. (так где получится)

ЗЫ: чисто хохмы ради, вполне можно поменять компилятор сам, благо есть FPC.
причём поменяв только синтаксис, не потеряв возможность компиляции, или совместимость с существующими модулями.
(для этого в языке есть концепция $mode и вспомогательный $modeswitch)
ну и IDE под этот новый режим языка можно допилить, благо всё open-сорец.

А т.к. стандарт языка паскаль были принят ровно в 1970м году, и с тех пор не перебуликовывался, то новый режим будет иметь место быть! о как.

ЗЗЫ:

procedure generate(k : integer, A : array of any):

специализация функций уже есть в trunk-е FPC. по-моему, официально не выпущен, но я не слежу за релизами.

for i := 0; i < k; i += 1 do

СИ-шный синтаксис "+=" в FPC есть 1000 лет, я хз есть ли он в Делфи.
тут нужно ещё помнить, что Си-шный и паскальный for отличаются. Т.к. количество интераций в Паскале вычисляется предварительно, а в Си-выполняется постоянно.
По сути Си-шный фор, это while в паскале.
Как приведёт в примере в паскале врят ли заведётся. т.к. ";" это конец оператора. потребуется какой-то другой синтаксис.

k is even

"is" оператор не перегружаемый. зато In перегружаемый
почему нет :)

#25
5:08, 21 ноя 2021

skalogryz
> в примере синтаксис же условный. язык, который там "используется" не
> существует.

Мне понравилось несколько вещей:
- отсутствие begin уже обсудили
- ; в конце строки не обязательна
- сишный стиль for
В результате, имхо, очень легко читается и при этом чувствуется гибкость даже в сравнении с паскалем, хотя паскаль - суть прямое переложение обучающего алгоритмического языка на компилятор.

#26
5:31, 21 ноя 2021

=A=L=X=
> паскаль - суть прямое переложение обучающего алгоритмического языка на компилятор
и именно по-этому
паскаль "позволяет максимально сосредоточиться на задаче не отвлекаясь на грамматику законы капризы и глюки ЯП" :)

#27
5:38, 21 ноя 2021

skalogryz
> влом писать, но в доках есть примеры.

dict := Rndict.Create;

Ясно, значит без явного создания оно работать не будет.

skalogryz
> можно сделать строки длинее 255 символов
А что по поводу 65536? Раньше помирало от нехватки памяти.

#28
5:46, 21 ноя 2021

samrrr
> А что по поводу 65536? Раньше помирало от нехватки памяти.
раньше - это когда? в 1970-м?

#29
5:58, 21 ноя 2021

skalogryz
> раньше - это когда? в 1970-м?
Когда у меня был турбо паскаль.

Страницы: 1 2 3 4 5 Следующая »
ФлеймФорумПрограммирование

Тема в архиве.