LINUX.ORG.RU

Лучшая библиотека для Си

 , ,


2

2

Мне для реализация некого алгоритма нужен был словарь, я нашел следующий список библиотек, которые могут быть мне полезны: https://github.com/kozross/awesome-c#frameworks. Что из этого лучше использовать? Здесь еще почему-то нет GLib, стоит ли ее рассматривать?

Ответ на: комментарий от LINUX-ORG-RU

Каком еще «общем» случае, и чем он отличается от «необщего»? Вот если тебе БПФ понадобится, ты его будешь на месте писать, или все ж возьмешь либу fftw для этого?

SZT ★★★★ ()
Ответ на: комментарий от LINUX-ORG-RU

Для всего, везде. Таких нет. Ну или glib куда впихнули всё что можно и нельзя =)

Что «для всего»? Ты можешь понятней изъяснять мысль? В glib я что-то алгоритма для быстрого преобразования Фурье не вижу

SZT ★★★★ ()
Ответ на: комментарий от LINUX-ORG-RU

Может так, а может сяк.

Это как вообще? Подкинешь монетку, если решка выпадет - берешь fftw, если орел - идешь читать описание алгоритма БФП и сам его реализуешь?

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

Вот да! Настоящие Программисты на автомате десятипальцевым слепым методом запиливают с нуля AES-128 для каждой своей программы, в которой им этот AES-128 нужен

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

Ти злой! И придираешься! Ниважусь с табой! Бубубубубубу

Что «для всего»? Ты можешь понятней изъяснять мысль? В glib я что-то алгоритма для быстрого преобразования Фурье не вижу

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

Фурье

Алгоритм, а не структура данных. ТС про второе тут говрит.

если орел

Даже при наличии библиотеки делающей что тебе нужно есть ещё множество факторов определяющих можешь ли ты позволить себе использовать внешнюю библиотеку. Взвесить все за и против. А потом уже решать. Никакая тут не монетка. А вдумчивое сидение.

LINUX-ORG-RU ()
Ответ на: комментарий от LancerRevX

так, как я сам не сделаю

Всё ты сделаешь. Если тебе нужен только какой то там 1 словарь и всё есть ли смысл тащить целую инфраструкруту себе? Если тебе много всякого надо, тогда да. Но если во всяких плюсах когда нужен list принято писать std::list bla bla и ли как то так вообще не зная что там под капотом. То в си эта примитивщина пишется тут же сразу и так как удобно лично тебе. Хотя если надо что-то более сложное то понятное дело что бы экономить время можно взять готовое. Хотя чаще изучение готового == по времени в реализации своего.

Давай подробнее что за «словарь»?

LINUX-ORG-RU ()
Ответ на: комментарий от LINUX-ORG-RU

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

Т.е. fft это не общее прикладное программирование? Критерий какой?

Алгоритм, а не структура данных. ТС про второе тут говрит.

А как ты себе реализацию словаря представляешь без конкретных алгоритмов? Любые нетривиальные структуры данных содержат в себе и алгоритмы.

Словарь это key-value хранилище. Словарь можно реализовать по-разному, например как хэш-таблицу, или как красно-черное дерево, или еще каким-то образом. Если ты реализуешь это как хэш-таблицу, тебе внезапно нужно будет использовать какую-то хэш-функцию. Хэш-функция это алгоритм.

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

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

LINUX-ORG-RU ()
Ответ на: комментарий от LINUX-ORG-RU

Давай подробнее что за «словарь»?

ну для моей задачи мне нужна функция кармайкла, а чтобы ее реализовать я предполагаю использовать список пар число:степень, я думал, что есть какая то популярная библиотека, может быть GLib, которая мне пригодится в будущем для чего либо еще

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

Я исхожу из слов ТС ему надо некую библиотеку ХХХ лучшую, что она делает насрать главное лучшую )))))))))! Чтобы в ней были словари, какие словари, словари чего не ясно.

Вот я и пытаюсь понять нужны ему только словари и всё, есть ли смысл написать их самому или есть смысл взять готовое. Я ничего не утверждаю. Это ты чёта взбисился прям шо ваще. Дядя ниругася!

Давай лучше не выяснять у меня о моих взглядах на то как и что делать и как к чему подходить. А узнаем у ТС что ему конкретно нужно в однозначном виде. И далее либо предложим либу решающую его задачу или пнём в сторону написания своего.

Вот пристал ко мне, чво я врасивый такой чтоль? )))) Хотя да, я топчик ) Вот и ни завидуй! ТС маленький и растерялся что делать, давай дружно по мере возможности подскажем, а сраться в толксах будем

LINUX-ORG-RU ()
Ответ на: комментарий от LINUX-ORG-RU

Я ничего не утверждаю. Это ты чёта взбисился прям шо ваще. Дядя ниругася!
Давай лучше не выяснять у меня о моих взглядах на то как и что делать и как к чему подходить.
Вот пристал ко мне, чво я врасивый такой чтоль? )))) Хотя да, я топчик ) Вот и ни завидуй!

Уфф... Поумерь ЧСВ и не воспринимай критику написанного тобой как какие-то личные нападки или ругань

SZT ★★★★ ()
Ответ на: комментарий от anonymous
https://github.com/kahun/awesome-sysadmin                  A curated list of amazingly awesome open source sysadmin resources inspired by Awesome PHP
                                                           Список всех самых полезных инструментов с открытым исходным кодом для сисадмина по категориям: Backups, Cloning, Cloud Computing, Cloud Orchestration, 
                                                           Cloud Storage, Collaborative Software, Distributed Filesystems, DNS, VPN и др.

https://github.com/ziadoz/awesome-php                      A curated list of amazingly awesome PHP libraries, resources and shiny things

Владимир

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

То есть строки. Тогда наверное что-то типа такого?


struct mdata_t
{
  char * key, * value;
}mdata[100500] = 
{
{"6849684984968496849846548649879848596484651684684684","64984984984684984646846541684684654184"},
{"6849684984968496849846548649879848596484651684684684","64984984984684984646846541684684654184"},
{"6849684984968496849846548649879848596484651684684684","64984984984684984646846541684684654184"},
{"6849684984968496849846548649879848596484651684684684","64984984984684984646846541684684654184"},
{"6849684984968496849846548649879848596484651684684684","64984984984684984646846541684684654184"},
{"6849684984968496849846548649879848596484651684684684","64984984984684984646846541684684654184"},
{"6849684984968496849846548649879848596484651684684684","64984984984684984646846541684684654184"},
{"6849684984968496849846548649879848596484651684684684","64984984984684984646846541684684654184"},
}

Я имею в виду что-то типа такого должно обрабатываться?

LINUX-ORG-RU ()
Ответ на: комментарий от LancerRevX

ну для моей задачи мне нужна функция кармайкла

Нужно выводить числа Кармайкла подряд, или нужно вывести допустим 100500-е число Кармайкла? Какие требования к диапазону чисел? Вот допустим есть условная функция bigint getCarmichael(bigint a) - для какого максимально допустимого «a» оно должно работать?

SZT ★★★★ ()
Ответ на: комментарий от anonymous
 http://rosettacode.org/wiki/Category:C%2B%2B
 http://rosettacode.org/wiki/HTTP

 http://pleac.sourceforge.net/
 http://xlinux.nist.gov/dads/                              Dictionary of Algorithms and Data Structures
 http://www.similarsitesearch.com/alternatives-to/rosettacode.org

 !!!!!!!!!!http://www.thefreecountry.com/                  Welcome to thefreecountry.com's collection of free programming resources, free webmasters' resources, 
                                                           free security resources and free utilities.

!!!http://itbookz.ru/itbookz.php

 https://github.com/languages

Владимир

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

если совсем конкретно, то мне нужно посчитать функцию кармайкла или функцию эйлера от 10^2019

Лучше тогда функцию Эйлера считай, мне это кажется как-то попроще. Ну во-первых надо факторизовать число 10^2019 (точнее даже не факторизовать, достаточно узнать простые множители). Это запросто, ведь 10^2019 = 2^2019*5^2019

Потом воспользуйся приведенной формулой: https://ru.wikipedia.org/wiki/Функция_Эйлера#Функция_Эйлера_от_натурального_ч...

Или вот: https://oeis.org/A000010 phi(n) = n*Product_{distinct primes p dividing n} (1 - 1/p).

Т.е. phi(10^2019) = 10^2019 * ((1 - 1/2 ) * (1 - 1/5) )

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

Пиши свой – это же C.

А зачем тогда вообще нужны библиотеки? Или они только для слабаков?

Наоборот, только для сильных духом. Не каждый может выдержать менеджмент зависимостей в Си.

NeXTSTEP ★★ ()

почему-то нет GLib

Если тебе хочется с головой погрузиться в дерьмо, да и плавать там — пожалуйста. Но я крайне не советую. Хуже глиба может быть только Qt.

anonymous ()

Здесь еще почему-то нет GLib, стоит ли ее рассматривать?

GLib практически всегда и везде установлена «по-умолчанию», так что если чего нет в libc, то в первую очередь целесообразно смотреть на GLib.

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

Написать не сложно, но это решит проблему лишь на твоём локалхосте. И то, только если повезёт и мейнтейнеры твоего дистрибутива соизволили опакетить нужную либу.

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

Зависит от ситуации же, если нужно fft на небольших массивах и без распараллеливания внутри, то наивная реализация в 10 строк может быть вполне себе удобна.

thunar ★★★★★ ()