Вопрос или проблема
Я хочу создать очень большую таблицу сравнения для себя. Я хочу записать все эквивалентные функции (строки) для языков программирования, которые я знаю (колонки). Например, как перебирать массив, как подключать библиотеку, как читать файл и т.д. для Javascript, Python, Rust, C++, C, Swift, Julia и т.д.
Идеально, если бы в каждой ячейке была доступна какая-то разметка, например в Markdown, и несколько строк. Но мне нужно, чтобы она была большой. Я также очень оценю возможность отображать только определенные колонки по желанию.
Я рассмотрел:
- Текстовые процессоры:
они были бы идеальны для этой задачи, но количество колонок слишком велико, и это создает проблемы. MS Word на документе формата A1 мог бы подойти, но формат ‘.doc’ немного тяжелый и трудный для обработки вне Word. В любом случае, для моих нужд это может быть 6/10. ИЗМЕНЕНИЕ: подавляющее большинство плохо работает с большими страницами, за исключением Pages (см. ниже) - Электронные таблицы: они не любят несколько строк или слишком много форматирования в ячейках. Тем не менее, это может быть полезно 5/10
- Редакторы Markdown: я знаю Joplin и Macdown, но таблицы становятся неуправляемыми без GUI, а сам GUI содержит ошибки 4/10
- Создать собственное программное обеспечение на основе какой-то базы данных. Это может удовлетворить все мои потребности, но это требует времени. Я хотел бы знать, есть ли что-то готовое к использованию.
Я также рассмотрел FileMaker, и он кажется идеальным для этой задачи. Но это слишком сложно и действительно дорого.
ИЗМЕНЕНИЕ:
Итак, я попробовал пока что LibreOffice, OpenOffice, MS Word, ONLYOFFICE и Scribus. Электронные таблицы, вероятно, подойдут некоторым людям, но мне не нравится интерфейс, и я не исследовал эту опцию тщательно, так что потерпите. В любом случае, не было ни одного текстового процессора, который не был бы очень багованным.
MS Word не принимает ширину страницы более примерно 50 см. LibreOffice потеряет форматирование колонок таблицы, если страница слишком широкая. OpenOffice очень примитивен и часто вылетает, ONLYOFFICE запишет широкие страницы в файлы ‘.docx’, которые будут нечитаемы в Word, или альтернативно в файлы ‘.odt’, которые потеряют свойство ширины при чтении (но интересно, что их можно читать нормально в LibreOffice). Scribus сложно использовать, и копирование/вставка таблиц не работает. Pages работает нормально, но он несовместим с миром вне Mac.
Я начал исследовать создание собственного решения, адаптируя пакет javascript Suneditor под свои нужды и оффлайн-работу. Я могу опубликовать это, когда это будет более готово. Я надеюсь, что эта работа будет полезна кому-то.
Так что пока я исключил большинство текстовых процессоров и наметил путь к решение, ориентированному на HTML, но Pages также кажется хорошим вариантом для пользователей только Mac, а электронные таблицы могут иметь потенциальные возможности.
Я по-прежнему очень открыт для предложений
LibreWriter в формате .fodt сridiculous страницами. Он действительно дает вам возможность скрывать колонки.
LibreCalc в формате .fods. Здесь вы можете использовать CTRLEnter, чтобы вставить переносы строк, и скрывать колонки легко.
Если вы хотите вставить много строк в одну ячейку, вы можете создать текстовый документ с ” перед и после текста:
"
Здесь {
вы
} вставили;
исходный
код
"
Выберите от ” до “. Скопируйте. Затем выберите ‘Правка > Специальная вставка’ (CTRLSHIFTV). Выберите ‘Неформатированный текст’ и нажмите “[X] Форматировать цитируемое поле как текст”. Это сохранит переносы строк, но не любое форматирование. Вы можете форматировать текст после его вставки.
Не забудьте изменить размер ячейки после вставки (двойной клик по нижней границе ячейки).
Формат файла – это XML-формат, который довольно читаемый для человека.
Количество данных, которые это будет содержать, будет огромным и, вероятно, даже бесконечным.
Я думаю, что это может легко содержать десятки тысяч, если не сотни тысяч уникальных записей.
К счастью, есть StackOverflow… так что вместо того, чтобы писать это снова, это может состоять из веб-краулера. Веб-краулер, который связывает наиболее популярные ответы на “как сделать X на языке Y версии N (!) ” вместе с концепциями в WikiPedia (там определены основные концепции независимо от языка). Возможно… он даже может быть динамическим, так что только в момент, когда вы отмечаете некоторые языки, например “powershell, python, java, C#, Ti extended Basic”, он выйдет на StackOverflow и перечислит URL и верхние ответы рядом, поскольку, вероятно, каждый день люди будут добавлять лучшие ответы (и каждый день появляются новые версии, включая новые библиотеки, которые создали люди).
Затем, основываясь на наиболее распространенных запросах, вы вручную уточняете некоторые результаты поиска, если они нуждаются в уточнении. Но версии важны, поскольку, например, в Powershell 1 вы решали бы вещи иначе, чем в Powershell 7, так же как в C# версии 1 и C# версии 10.
Даже тогда… есть контекст… поскольку в определенном контексте вы решаете вещи таким образом X, а в другом контексте иначе Y. Я думаю, что здесь новое значение АИ помощников по программированию находит свое место. Я думаю, это, вероятно, тот подход, который применили эти люди: https://codepilot.netlify.app/.
Ответ или решение
Создание большой таблицы для сравнения языков программирования — это задача, требующая тщательного подхода к дизайну и функциональности. Основные аспекты, которые следует учесть, включают возможности отображения, форматирования, а также интеграцию с различными источниками данных. Ниже представлена сравнительная таблица, содержащая ключевые характеристики популярных языков программирования, таких как JavaScript, Python, Rust, C++, C, Swift и Julia.
Сравнительная таблица языков программирования
Функция / Язык | JavaScript | Python | Rust | C++ | C | Swift | Julia |
---|---|---|---|---|---|---|---|
Итерация массива | array.forEach(...) |
for item in array: |
for item in array.iter() |
for (auto item : array) |
for (int i = 0; i < n; i++) {} |
for item in array {} |
for item in array |
Импорт библиотеки | import './module.js'; |
import module |
use std::module; |
#include <module> |
#include <module.h> |
import Module |
using Module |
Чтение файла | fs.readFileSync('file.txt') |
with open('file.txt') as f: |
std::fs::read_to_string("file.txt") |
ifstream file("file.txt"); |
FILE *file = fopen("file.txt", "r"); |
let file = File("file.txt") |
open("file.txt") |
Обработка исключений | try { ... } catch (e) {} |
try: ... except Exception: |
if let Err(e) = ... {} |
try { ... } catch (const std::exception &e) {...} |
if (setjmp(buffer)) {...} |
do { ... } catch {} |
try ... catch |
Функции | function name() {...} |
def name(): |
fn name() {} |
void name() {...} |
void name() {...} |
func name() {} |
function name() {...} |
Асинхронность | async function name() {} |
async def name(): |
async fn name() {} |
std::async(...) |
Не поддерживается | async func name() {} |
@async function name() {} |
Особенности выбора инструмента для работы с таблицей
-
Ворд-редакторы: Применение текстовых процессоров, таких как MS Word или LibreOffice, может быть ограничено из-за проблем с шириной страниц, что приводит к ошибкам форматирования и работе с большими объёмами данных. Редакторы плохо справляются с таблицами большой ширины и количеством столбцов. Однако LibreOffice поддерживает создание таблиц в формате .fodt с возможностью скрытия столбцов, что является плюсом.
-
Таблицы: Спредшиты, такие как LibreCalc, обеспечивают простоту в использовании и могут обрабатывать множество строк. Важно отметить, что использование комбинации клавиш для вставки новых строк в ячейку делает их достаточно гибкими для задач подобного рода.
-
Маркерные редакторы: Использование Markdown-редакторов, как Macdown или Joplin, может затруднять отображение таблиц, однако для экспертов есть возможность глубокого редактирования текста.
-
Создание собственного ПО: Создание уникального решения на основе базы данных позволит достичь максимальной гибкости и функциональности, но потребует значительных временных затрат.
Рекомендации для дальнейшей работы
На основании анализа, сохраняйте фокус на:
-
HTML-ориентированных решениях: Это обеспечит гибкость в отображении и легкость в манипуляции с данными, а также позволит получать данные в реальном времени из открытых источников, что значительно упростит процесс обновления информации.
-
Использовании кроссплатформенных приложений: Это поможет избежать проблем совместимости и обеспечит доступность данных как пользователям Windows, так и пользователям MacOS.
-
Интеграции с API: Сбор и представление данных с платформ, таких как StackOverflow, поможет в создании динамической базы данных, которая будет обновляться автоматически.
Эти подходы помогут вам эффективно справиться с задачей создания обширной и функциональной таблицы для сравнения языков программирования.