LINUX.ORG.RU

Праздный вопрос по языкам программирования.

 


0

2

Во всех более или менее современных языках программирования функциям и типам дынных не нужна преждевременная декларация (до использования в коде), а переменным, например нужна.

Есть какое-то четкое правило для такого разграничения? Чем такой код плох?

{
  print(a); // печатает 3
  a = 5;
  print(a); // печатает 5
  var a = 3;
}
Ну кроме того, что мозг ломает и потенциально баги рождает. А так - полная симметрия с функциями.

Никакого особого смысла в вопросе нет, просто воскресенье и простуда.

★★★★

Ответ на: комментарий от Iron_Bug

чем хороши языки типа С - они не дают никакой особой воли компилятору

Неверное и опасное представление. Чем плох C, так это тем, что несмотря на синтаксическую видимость императивности, его стандарт по сути весьма и весьма декларативный. Он написан не в духе «если вы написали X, это превратится в Y в асме», а в духе «если вы написали X, это определяет точки следования a, b, c, и побочные эффекты будут alpha, beta, gamma». Отсюда появляются фольклорные «опровержения» Великой теоремы Ферма и прочие радости.

GoodRiddance
()
Ответ на: комментарий от GoodRiddance

не надо путать недетерминированное выполнение со статистикой. или это опять попытка софистики? не проканает: я же математик, а не девочка, которой можно подобные сказки рассказывать и раздувать щёки. метод Монте-Карло не пишется недетерминированным кодом.

Iron_Bug ★★★★★
()
Последнее исправление: Iron_Bug (всего исправлений: 2)
Ответ на: комментарий от Iron_Bug

я же математик

That's good to know!

не надо путать недетерминированное выполнение со статистикой

Чтобы собрать эту статистику, надо всё-таки выполнить какой-то код. Когда я пилю, к примеру, монтекарловский термостат, я не знаю, обменяется ли с ним энергией частица на следующем шаге или нет, т.е. код не детерминирован.

Откуда в нём берётся случайность — из датчика псевдослучайных чисел или же из окружающего мира (планировщика потоков ОС, к примеру) разница техническая, а не принципиальная.

А игнор аргумента про логическое программирование засчитаем за слив?

GoodRiddance
()
Ответ на: комментарий от Iron_Bug

в компьютере нет случайных чисел

Lo and behold! LOR experts just busted GPG, ssh-keygen and /dev/random!

Ну удачи в предсказании того, что выведет, например,

int main() 
{
  for(int k = 0; k<10; k++) {
    int x = 0;
    #pragma omp parallel for
    for(int i = 0; i<100; i++) {
      x++;
    }
    printf("x=%d\n", x);
  }
}

// Не относящаяся к обсуждению шутка по поводу отсутствия рандомности: пару раз закрывал тикеты про внезапное и абсолютно необъяснимое поведение системы с формулировкой «высокоэнергетические частицы попали в ASIC». И это была чистая правда, а не отмазка (спасибо parity битам). Так что рандом и недетерминизм будет прилетать в компьютер, даже если этого очень не хотеть.

GoodRiddance
()
Ответ на: комментарий от GoodRiddance

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

Iron_Bug ★★★★★
()
Ответ на: комментарий от Iron_Bug

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

Ибо знание не должно быть вещью в себе, им полагается делиться. Вы же математик, а это «основы математики». /Основы/-то не должно быть трудно объяснить, не правда ли?

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