Самое трудное объяснение программирования

Лично, я использовал бы интервал или bigint для PK, но просто вставил бы другой столбец "Guid" для тех ситуаций, где Вы нуждаетесь в неотгадываемом "ключе" для той записи и генерируете Гуид при вставке строки.

19
задан 4 revs, 4 users 100% 29 April 2012 в 20:45
поделиться

23 ответа

Синхронизация потоков и мертвая блокировка.

30
ответ дан 30 November 2019 в 01:44
поделиться

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

Расширение этого - уровень сложности объяснения, что такое инверсия управления и почему это абсолютная необходимость, а не просто дополнительные слои кода, которые ничего не делает.

1
ответ дан 30 November 2019 в 01:44
поделиться

На самом деле нет правильного или неправильного ответа - подходящего для этого ... это все переживания.

Самым сложным, что мне приходилось объяснять нетехническому человеку, было то, почему он не мог попасть на свой веб-сайт во время поездки за границу, но его член семьи, который жил там (с совершенно другим поставщиком), мог добраться до него. Почему-то «Провал в Финляндии» было недостаточно.

1
ответ дан 30 November 2019 в 01:44
поделиться

Предотвращение мертвой блокировки в многопоточной среде.

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

Также ролевые игры двух потоков с человеком, которому я объяснял это, и использование физических объектов (книга, кофейная кружка и т. д.), чтобы показать, что происходит, когда мы оба пытаемся использовать что-то одновременно .

1
ответ дан 30 November 2019 в 01:44
поделиться

Иногда мне действительно трудно объяснить концепцию ковариации / контравариантности и связанные с ними проблемы другим программистам.

2
ответ дан 30 November 2019 в 01:44
поделиться

Почему такой код плохой:

private void button1_Click(object sender, EventArgs e)
{
    System.Threading.ThreadStart start = 
        new System.Threading.ThreadStart(SomeFunction);
    System.Threading.Thread thread = new System.Threading.Thread(start);
    _SomeFunctionFinished = false;
    thread.Start();
    while (!_SomeFunctionFinished)
    {
        System.Threading.Thread.Sleep(1000);
    }
    // do something else that can only be done after SomeFunction() is finished
}

private bool _SomeFunctionFinished;
private void SomeFunction()
{
    // do some elaborate $#@%#
    _SomeFunctionFinished = true;
}

Обновление : каким должен быть этот код :

private void button1_Click(object sender, EventArgs e)
{
    SomeFunction();
    // do something else that can only be done after SomeFunction() is finished
}

private void SomeFunction()
{
    // do some elaborate $#@%#
}
5
ответ дан 30 November 2019 в 01:44
поделиться

1.) SQL: Думая наборами, а не процедурно (нам, программистам, это достаточно сложно понять!).

2.) ... и вот отличный пример демистификации технических концепций:

Как я объяснил REST моей жене

10
ответ дан 30 November 2019 в 01:44
поделиться
6
ответ дан 30 November 2019 в 01:44
поделиться

Меня спросили, как работает Интернет - я ответил «SYN, ACK, ACK». Не забывайте, что это SYN, SYN-ACK, ACK ..

alt text
(источник: inetdaemon.com )

18
ответ дан 30 November 2019 в 01:44
поделиться

Тратить время на дизайн и тратить время на рефакторинг.

Рефакторинг не производит никакой видимой для клиента работы, что делает труднее всего оправдать работу в проекте.

В качестве второй проблемы, «не видимой для клиента», модульное тестирование.

25
ответ дан 30 November 2019 в 01:44
поделиться

Концепция рекурсии - некоторым людям это очень сложно.

3
ответ дан 30 November 2019 в 01:44
поделиться

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

2
ответ дан 30 November 2019 в 01:44
поделиться

для цветного изображения с одинаковым фоном на всех изображениях:

  • преобразовать изображение в HSV или HSL
  • определить значение оттенка фона (+/- 10): выполните этот шаг один раз, например, с помощью Photoshop, а затем используйте одно и то же значение для всех ваших изображений.
  • выполните пороговое значение цвета: на канале оттенка исключите оттенок фона ([0, hue [+] hue, 255] обычно), для всех остальных каналов - весь диапазон значений (обычно от 0 до 255). это выберет пиксели, которые НЕ являются фоном.
  • выполнить операцию «заполнения дыр» (обычно выполняемую при анализе капель или функциях маркировки), чтобы завершить часть одежды, которая могла быть того же цвета, что и фон.
  • 1230]. Теперь у вас есть изображение, которое является «маской» одежды: ненулевые пиксели представляют одежду,
4
ответ дан 30 November 2019 в 01:44
поделиться

«Добавление нового программиста в месяц к этой поздней задаче сделает это отправить позже. Неважно, прочтите эту книгу ". (Мифический человеко-месяц.) Менеджеры по-прежнему не совсем понимают

.
5
ответ дан 30 November 2019 в 01:44
поделиться

Самые большие препятствия связаны с «технологическим долгом», особенно с тем, насколько архитектура была правильной для этой версии, но ее необходимо изменить для следующей версии. Это похоже на проблему объяснения «прототип против производства» и «версия 1.0 против версии 2.0».

Худшая ошибка, которую я когда-либо делал, - это создание макета пользовательского интерфейса в NeXT steps UI Builder. Он выглядел точно так же, как и конечный продукт, и имел некоторое поведение. Пытаться объяснить, что после этого оставалось еще 6 месяцев работы, было очень сложно.

9
ответ дан 30 November 2019 в 01:44
поделиться

У меня был забавный случай, когда я пытался объяснить, почему программа ведет себя не так, как ожидалось, когда некоторые записи в базе данных содержат пустые строки, а некоторые - NULL. Я думаю, что их голова чуть не взорвалась, когда я сказал им, что пустая строка - это просто строка с 0 байтами в ней, в то время как NULL означает неизвестное значение, и вы не можете сравнивать ее ни с чем.

11
ответ дан 30 November 2019 в 01:44
поделиться

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

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

2
ответ дан 30 November 2019 в 01:44
поделиться

Многие операторы начинаются с «Это потому, что в Oracle ... " пришло мне в голову.

9
ответ дан 30 November 2019 в 01:44
поделиться

Мой самый сложный вопрос начался довольно невинно: моя девушка спросила, как текст отображается в Firefox. Я ответил просто чем-то вроде «движок рендеринга, Gecko, парсер HTML, бла-бла-бла»

. Затем все пошло под откос. " Сначала я ответил: «Черепахи до упора» и застрял на этом. : P

Сначала я ответил: «Черепахи до упора» и застрял на этом. : P

14
ответ дан 30 November 2019 в 01:44
поделиться

Я собирался прокомментировать сообщение Микаэля, которое некоторые люди просто считают последовательное программирование и, к сожалению, просто оставайтесь с этим.

Но это на самом деле означает: две серьезно трудно объяснимые концепции:

  • монады в haskell (обычно начинающиеся со: «Это похоже на функцию, которая возвращает функцию, которая делает то, что вы действительно хотел сделать, но ... ")
  • deferreds в twisted / python (" Это как ... эээ ... Просто используйте его в течение года или около того, и вы его получите ";))
1
ответ дан 30 November 2019 в 01:44
поделиться

Попытка объяснить, почему код вообще выполнялся последовательно. Похоже, это не совсем понятно некоторым непрограммистам (например, моей девушке).

0
ответ дан 30 November 2019 в 01:44
поделиться

Указатели C

* i

& i

2
ответ дан 30 November 2019 в 01:44
поделиться

Почему в большинстве случаев при использовании строк UTF-8 обработка символьных индексов не нужна.

0
ответ дан 30 November 2019 в 01:44
поделиться
Другие вопросы по тегам:

Похожие вопросы: