Какую САМУЮ СЛОЖНУЮ программу вы написали?[закрыто]

StackOverflow https://stackoverflow.com/questions/763464

  •  11-09-2019
  •  | 
  •  

Вопрос

Просто любопытно, мне интересно, что сделали все вы, опытные программисты или новички (такие как я).Так какую САМУЮ СЛОЖНУЮ и сложную программу вы написали?

Это было полезно?

Решение

Приложение, которое я создал в 2005/6 году, позволяет людям создавать визуализации своих домов/машин и т. д., окрашенных в разные цвета.Это, конечно, можно сделать в Photoshop, но это было гораздо больше.

Viresol output preview

Другие советы

компилятор

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

Однажды мне пришлось написать алгоритм сжатия, использующий BWT (преобразование Берроуза Уилера), и в алгоритме есть шаг, на котором вам нужно создать ОГРОМНУЮ матрицу.У меня были проблемы с памятью и скоростью, потому что матрица была очень огромной.Выяснилось, что существует действительно простой алгоритм, который я мог бы использовать и полностью избежать матрицы.

Мне также пришлось написать простую операционную систему на ASM, и это было довольно сложно.

Однажды я создал программное обеспечение для обработки многокамерного видео в реальном времени, выполняющее обнаружение движения и совокупную гистографическую магию, и все это на процессорах с частотой 33 МГц и 640 МБ оперативной памяти.Самое сложное заключалось в том, чтобы сделать это быстро;обильное хеширование, сдвиг битов, мошенничество, ругательства и поздние ночи с пиццей и прозрениями в течение примерно 4 лет.О, и я также сделал версию, касающуюся цвета.Да, и модуль, который мог видеть разницу между паром и белым дымом в больших помещениях (как в ядерных реакторах, так сказать).Ха, ты просто попробуй!Ни в одном учебнике вы не найдете подобных примеров.:)

Библиотека для решения нелинейных дифференциальных уравнений в частных производных.Мы использовали его в группе теоретической физики для решения нелинейной адаптации уравнения Шредингера, которая возникает в особых условиях с низкой температурой.

Было относительно легко заставить работать простой решатель, но обобщить его. и сделать это быстро было непросто.

В настоящее время исходный код Google открыт: ФДТЛ

Приложение, которое компилируется и работает как на Windows, так и на Mac с одной базой кода.

Все, что связано с шифрованием и безопасностью, всегда на 1000 % сложнее, чем кажется!

Драйвер модема общего назначения для нестабильного онлайн-сервиса.Он также должен был поддерживать 30 типов модемов (до модемов Hayes).Все они имели разные временные характеристики.

Его пришлось писать как на ассемблере 8086, так и на ассемблере Z80 для версий наших продуктов CP/M и DOS.Мне до сих пор снятся кошмары об одном полудуплексном модеме...

Автоматизация с помощью COM с выполнением через Grid

Собственный класс потокового видео, использующий API ffmpeg — на уровне обработки пакетов и отображения кадров в нужный момент, синхронизация со звуком.Не так сложно, как некоторые другие из перечисленных, но это пинало меня по заднице на многие недели!

Вероятно, галстук:средство решения проблем для множеств, использующее теории выполнимости по модулю и кооперативный планировщик процессов на C/ASM, работающий поверх операционной системы UNIX.Первый был просто трудным — его никогда не делали до использования SMT, и перевести высокотеоретическую статью в реальную реализацию в другом контексте было сложно.Второй включал в себя изучение структур данных ОС, чтобы понять их, а затем замену фрагментов и частей для перехода между функциями в программе, как если бы они были отдельно запланированными потоками.

отладчик

А библиотека векторной графики Я начал писать в 1998 году, в котором широко использовалось иерархическое подразделение для выполнения множества операций в формате O(log n) и анизотропные тесселяции, запоминаемые в списках отображения OpenGL, для поддержания высокой частоты кадров в динамических сценах.В частности, он мог плавно масштабировать сложную векторную графику, поскольку разбивал ее на деревья и эффективно отбирал.На протяжении многих лет это был самый быстрый в мире рендеринг векторной графики потребительского уровня.

Исходной версией была 200kLOC C++, но на решение теоретических проблем, которые легли в основу ее конструкции, мне потребовалось 2 года.

2 вещи:

1) Компилятор.Язык назывался «3-balls» (дань уважения другу, которому прооперировали яйца).

2) Программа на ассемблере Windows без единого макроса, все запихивалось в стек и адреса все были относительными.Он работает во всех Windows (адрес не закодирован).По сути, это простое окно с несколькими кнопками и метками.Но приятно то, что из объектного и исполняемого файлов я извлек опкоды и сгенерировал из них шеллкод.Таким образом, я мог использовать любой буфер программы и буквально создать собственное приложение поверх работающего!Приятно показать экран на удаленном компьютере, и удаленный компьютер выполнит программу, которой нет на его компьютере, вы буквально отправили программу на выполнение на удаленный компьютер.

Конечно это слишком много головной боли ни за что...но оно стоит всех набранных мной байтов!

Я написал несколько фрагментов кода, которые выполняют моделирование в нескольких пространственных измерениях (от 3 до примерно 7 измерений). Проблемы усложняются, когда вы работаете над чем-то, что вы не можете построить или даже визуализировать.

Но на самом деле, как человек, который потратил большую часть своего времени на создание наборов инструментов для использования другими в своей работе, я бы сказал, что самые сложные программы, которые я создавал, на самом деле были наборами инструментов, наборами инструментов, предназначенных для совместной работы друг с другом в едином пространстве. последовательный путь.Поскольку все они созданы для совместной работы, можно утверждать, что несколько десятков утилит на самом деле работают как один инструмент.(Конечно, любой модульный код в этом отношении аналогичен.) Здесь я также предоставил, как правило, инструменты моделирования, предназначенные для решения проблем управления цветом.

Пару недель назад мне задали этот же вопрос на собеседовании (до сих пор не узнал, получил ли я работу).

Для меня это было несколько заданий на моем первом уроке программирования после базовых вводных занятий.В моем университете впервые предлагался курс веб-дизайна.Поскольку он был новым, в него записались несколько выпускников старших классов, которые составили около половины класса.Преподаватель привык преподавать в старших классах и уже знал многих из них.По сути, он преподавал это на их уровне, а не на уровне другой половины класса, которая была довольно неопытна.

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

Сложность заключалась в отсутствии инструментов, необходимых для выполнения работы, включая понимание результатов, которые я получал, когда гуглил.(Страницы руководства и API хороши, если вы уже понимаете, что ищете, но не для обучения новичков.) В ходе совместной игры я многому научился, когда у меня был наставник, который говорил: «Если вы застряли». больше, чем на пару часов, дайте мне знать, чтобы я мог помочь вам оторваться и двигаться дальше.Гораздо лучше, чем те, кто не хочет получать от меня известий, кроме как раз в неделю или около того.

Я работаю над Yet Another PHP Framework, и это до сих пор было увлекательным путешествием.

В настоящее время я пишу приложение для iPhone.Это определенно самая сложная программа, которую я когда-либо писал.Не потому, что язык сложен, код сложен или по какой-то другой причине, а потому, что все на устройстве должно быть настолько беглым.

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

А еще темы отстой ;-)

Ничего особенного, кроме функции, которая могла бы нарисовать «сферу» из треугольников с n x n точками и интерполировать треугольники между двумя цветами (поэтому входными данными были радиус, количество подразделений, цвет1, цвет2).Это было сложно, но очень весело, когда получилось :)

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top