Информатика

82
Почему некоторые языки программирования «быстрее» или «медленнее», чем другие?

Я заметил, что некоторые приложения или алгоритмы, построенные на языке программирования, скажем, C ++ / Rust, работают быстрее или быстрее, чем те, которые основаны, скажем, на Java / Node.js, работающие на той же машине. У меня есть несколько вопросов по этому поводу: Почему это происходит? Что...

79
Поиск по графику: сначала ширина, либо глубина

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

75
Какие важные / важные приложения реального мира используют блокчейн?

В рамках некоторых исследований, связанных с блокчейнами, которые я сейчас предпринимаю, идея использования блокчейнов для различных реальных приложений широко используется. Поэтому я предлагаю следующие вопросы: Какие важные / важные приложения реального мира используют блокчейн? Чтобы добавить к...

74
Как мы можем предположить, что основные операции над числами занимают постоянное время?

Обычно в алгоритмах мы не заботимся о сравнении, сложении или вычитании чисел - мы предполагаем, что они выполняются за время . Например, мы предполагаем это, когда говорим, что сортировка на основе сравнения - это O ( n log n ) , но когда числа слишком велики, чтобы поместиться в регистры, мы...

73
Почему сложение происходит так же быстро, как побитовые операции в современных процессорах?

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

72
Какие свойства языка программирования делают компиляцию невозможной?

Вопрос: «Некоторые свойства языка программирования могут требовать, чтобы единственный способ получить код, написанный на нем, выполнялся путем интерпретации. Другими словами, компиляция в собственный машинный код традиционного ЦП невозможна. Что это за свойства?» Составители: принципы и практика...

71
(Когда) поиск по хеш-таблице O (1)?

Часто говорят, что поиск в хеш-таблице работает в постоянное время: вы вычисляете значение хеш-функции, которое дает вам индекс для поиска в массиве. Все же это игнорирует столкновения; в худшем случае каждый предмет попадает в одно и то же ведро, и время поиска становится линейным (...

69
Как компьютеры отслеживают время?

Как компьютеры могут сообщать правильное время и дату каждый раз? Всякий раз, когда я закрываю компьютер (выключаю его), все соединения и процессы внутри останавливаются. Почему, когда я снова открываю компьютер, он показывает точное время? Разве компьютер не выключается полностью, когда я выключаю...

68
Какая новинка в MapReduce?

Несколько лет назад MapReduce был провозглашен революцией в распределенном программировании. Также были критики но в целом был восторженный ажиотаж. Он даже запатентован! [1] Название напоминает mapи о reduceфункциональном программировании, но когда я читаю (Википедия) Шаг отображения: главный узел...

68
Что такое коиндукция?

Я слышал о (структурной) индукции. Это позволяет вам строить конечные структуры из более мелких и дает вам доказательные принципы для рассуждений о таких структурах. Идея достаточно ясна. Но как насчет коиндукции? Как это работает? Как можно сказать что-либо убедительное о бесконечной структуре?...

68
Теоретико-языковое сравнение грамматик LL и LR

Люди часто говорят, что парсеры LR (k) более мощные, чем парсеры LL (k) . Эти заявления в большинстве случаев расплывчаты; в частности, следует ли сравнивать классы для фиксированного или объединения по всем ? Так как на самом деле ситуация? В частности, меня интересует, как вписывается LL...

68
Почему машина Тьюринга является популярной моделью вычислений?

Я студент бакалавриата. Я понимаю, как Тьюринг придумал свою абстрактную машину (моделирующую человека, выполняющего вычисления), но мне кажется, что это неуклюжая, не элегантная абстракция. Почему мы рассматриваем «ленту», а машинная голова пишет символы, меняя состояние, смещая ленту назад и...

66
Формальная проверка программы на практике

Как инженер-программист, я пишу много кода для промышленных продуктов. Относительно сложные вещи с классами, потоками, некоторыми проектными усилиями, но также и некоторыми компромиссами для производительности. Я много тестирую, и я устал от тестирования, поэтому я заинтересовался инструментами...

64
Как я могу объяснить своим родителям, что я изучаю языки программирования?

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

64
Законодательство NP-полное?

Я хотел бы знать, была ли какая-либо работа, связывающая правовой кодекс со сложностью. В частности, предположим, что у нас есть проблема решения «Учитывая этот закон и этот конкретный набор обстоятельств, виновен ли ответчик?» К какому классу сложности он относится? Есть результаты, которые...

64
Может ли динамический язык, такой как Ruby / Python, достичь производительности, подобной C / C ++?

Интересно, можно ли создавать компиляторы для динамических языков, таких как Ruby, чтобы они были похожи и сопоставимы по производительности с C / C ++? Из того, что я понимаю о компиляторах, возьмем, к примеру, Ruby, компиляция кода Ruby никогда не может быть эффективной, потому что способ,...

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

Предполагается, что в таких языках, как C, программист вставляет вызовы бесплатно. Почему компилятор не делает это автоматически? Люди делают это в разумные сроки (игнорируя ошибки), поэтому это не невозможно. РЕДАКТИРОВАТЬ: Для дальнейшего использования, вот еще одна дискуссия, которая имеет...

62
Есть ли какие-либо проблемы, которые становятся легче, когда они увеличиваются в размерах?

Это может быть нелепым вопросом, но возможно ли иметь проблему, которая на самом деле становится легче по мере увеличения размера входных данных? Я сомневаюсь, что любые практические проблемы такие, но, может быть, мы можем изобрести вырожденную проблему, которая обладает этим свойством. Например,...

62
Алгоритм на месте для перемежения массива

Вам дан массив из 2 н2n2n элементов a1,2, ... ,N, б1, б2, … БNa1,a2,…,an,b1,b2,…bna_1, a_2, \dots, a_n, b_1, b_2, \dots b_n Задача состоит в том, чтобы чередовать массив, используя алгоритм на месте так, чтобы результирующий массив был похож на б1,1, б2,2, … , БN,Nb1,a1,b2,a2,…,bn,anb_1, a_1, b_2,...