Форум программистов, компьютерный форум, киберфорум
Basic
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
Результаты опроса: Нужен ли раздел для FreeBasic
Определённо нужен 13 76.47%
В разделе нет необходимости 3 17.65%
Другой вариант(написать в теме) 1 5.88%
Голосовавшие: 17. Вы ещё не голосовали в этом опросе

 
 
Рейтинг 4.54/105: Рейтинг темы: голосов - 105, средняя оценка - 4.54
Кормпилятор
 Аватар для Quiet Snow
5040 / 1714 / 409
Регистрация: 25.04.2010
Сообщений: 4,827
Записей в блоге: 2

Создание раздела FreeBasic (голосование)

19.10.2012, 18:45. Показов 22664. Ответов 228

Студворк — интернет-сервис помощи студентам
Приветствую всех форумчан!

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

Именно поэтому предлагаю администрации cyberforum подумать над созданием нового
раздела для FreeBasic. Предполагаю, если появится раздел, появятся и новые пользователи,
которые будут поддерживать его, включая меня.

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



Почему FreeBasic?
  1. Современный
  2. Свободный и бесплатный
  3. Кроссплатформенный(Windows, Linux)

Давайте посмотрим на функционал:

Описание: http://ru.wikipedia.org/wiki/FreeBASIC
Официальный сайт(Англоязычный): http://www.freebasic.net/
Ресурсы сети интернет по FreeBasic

Частичная цитата:
FreeBASIC — язык программирования высокого уровня по синтаксису наиболее близкий к
QuickBasic ... Первоначально разрабатывался как свободная альтернатива Microsoft
QuickBasic, но быстро оброс новыми возможностями и стал мощным средством разработки.
  • Поддержка Unicode.
  • Множество встроенных типов переменных (Byte, UByte, Short, UShort, Integer, UInteger,
    LongInt, ULongInt, Single, Double, String, ZString, WString).
  • Типы данных определяемые пользователем (бесконечная вложенность, Union, тип поля
    (array, function, bit fields)).
  • Пространства имён.
  • Перечислимый тип (Enum).
  • Новые возможности при работе с массивами (до 2 ГБ размером, Redim Preserve).
  • Указатели (указатели на любые типы данных, неограниченная косвенная адресация).
  • Перегрузка функций и операторов.
  • Необязательные аргументы функций.
  • Встроенный ассемблер (ассемблерные инструкции в исходном коде программы).
  • Препроцессоры.
  • Typedefs.
  • Конструкторы и деструкторы классов.
  • Улучшенная графическая библиотека.

Моё мнение:

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


P.S. Я постарался донести информацию в объективной и понятной форме, надеюсь тема не
останется без ответа и голосов, всем спасибо за внимание .
9
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
19.10.2012, 18:45
Ответы с готовыми решениями:

Создание статической библиотеки в FreeBasic
Есть непонятки со статической библиотекой. Код. Public Function Add2( ByVal x As Integer, ByVal y As Integer ) As String Return str(...

Создание блок-схемы FreeBasic - Basic
cls dim as single n,i input n screen 12 window (-200,-200)-(200,200) x1=-190 y1=-190 x2=190 y2=-190 x3=-190

Создание раздела D
Здравствуйте. После установки Windows 10, после создания второго раздела, он не отформатирован и без буквы. Я форматирую, но буква D не...

228
 Аватар для Power_Basic
46 / 25 / 0
Регистрация: 08.03.2016
Сообщений: 443
20.03.2020, 18:00
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от Pro_grammer Посмотреть сообщение
Я же про то и говорю. Что сколько бы движков не было запущено, даже если в разных совершенно программах, все они работают строго по очереди. SAPI не позволяет параллельную работу.
Но всё равно остаётся открытым вопрос, какой имеет смысл возвращать программисту номер аудиопотока в событии EndStream, если аудиопоток там всегда один-единстенный?

Цитата Сообщение от Pro_grammer Посмотреть сообщение
Есть Бесплатная + с открытым исходным кодом на Делфи Exo - синтезатор речи Эхо.
Он с помощью голосовых движков умеет озвучивать двуязычные тексты, работать со словарями. Очень интересно запустить 2 экземпляра двуязычного текста! Тогда текст читается по очереди в обеих копиях, чередуя английский и русский.
Но есть и хорошая новость. При создании звукового файла обе копии программы работают одновременно!
Т.е. я попробовал на одном и том же тексте одновременно запустить 2 копии программы и записать в разные файлы. Оба звуковых файла были записаны совершенно одинаково и параллельно, с правильным чередованием русских и английских текстов.
Так что скорее всего многопоток возможен. Или проще ни чего не переделывать, а запускать несколько копий программы с разными кусками текста
Не, ну так не интересно
Хочется же не чужие программы использовать, а своё написать.

На самом деле, я на протяжении уже очень многих лет слышу от друзей и колег по работе одно и то же: зачем ты занимаешься всем этим программированием, зачем ты "изобретаешь велосипед", когда всё уже давно написано, когда гораздо проще скачать любую программу в интернете, и те профессиональные программы заведомо гораздо лучше твоих.
На это я им обычно отвечаю, что для меня это вроде творчества. Вот, например, человеку, который пробует писать стихи для самого себя, "для души", тоже можно сказать, что его занятие не имеет никакого смысла, потому что достаточно просто взять с полки сборник стихов Есенина и почитать, и те стихи тоже будут заведомо лучше
Ну творчество же!

Цитата Сообщение от Pro_grammer Посмотреть сообщение
Так что скорее всего многопоток возможен.
Ну да, по логике, если есть номера для аудиопотоков, то и многопоточность тоже допускается.
А иначе зачем пронумеровывать что-то единственное, уникальное в своём роде.
0
 Аватар для Pro_grammer
6807 / 2838 / 527
Регистрация: 24.04.2011
Сообщений: 5,308
Записей в блоге: 10
20.03.2020, 19:00
Цитата Сообщение от Power_Basic Посмотреть сообщение
а своё написать.
Да кто мешает? Ключевые слова
Цитата Сообщение от Power_Basic Посмотреть сообщение
с открытым исходным кодом на Делфи
Всегда полезно посмотреть, как это написано у других.
Тем более, что писали, у вас проблемы со словарями?

Добавлено через 6 минут
Цитата Сообщение от Power_Basic Посмотреть сообщение
если есть номера для аудиопотоков
И не забивайте голову, это ложное направление. Я уже сказал, что написано в MSDN, потоки исключительно для разных голосов.
Направление я думаю одно - тупо запустить один и тот же код в нескольких потоках с разным текстом, и всего делов то.
0
Кормпилятор
 Аватар для Quiet Snow
5040 / 1714 / 409
Регистрация: 25.04.2010
Сообщений: 4,827
Записей в блоге: 2
20.03.2020, 19:12  [ТС]
Цитата Сообщение от Pro_grammer Посмотреть сообщение
Или проще ни чего не переделывать, а запускать несколько копий программы с разными кусками текста
Можно в командную строку отправлять номер ядра, на которое повесить обсчёт.
Скомбинировав в программе обсчёт и оболочку. Т.е. экзешник может вызвать сам себя
но уже со специфичными параметрами. Если нужно именно несколько экземпляров
запущенных.

В самой проге же сделать что-то типа:
PureBasic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
IF Param <> "" THEN
Выцепить из параметров Core согласно выбранному формату ком. строки
  SELECT CASE Core
      Переброс на первое ядро
      Вызов процедуры с указанием номера куска
   CASE 1
      Переброс на второе ядро
      Вызов процедуры с указанием номера куска
 
   CASE 2
 
   . . .  и т.д.
  END SELECT
 
ELSE  ' Оболочка
 
'Тут в процедуре старта расчёта: создаём 1 поток в процедуре которого делаем EXEC.
'Через указатель передаём строку с параметрами.
'создаём 2 поток
'создаём 3 поток
'и т.д.
END IF
 
SUB ExecutePrg (...)
    запишем в строковую CmdParam параметры
     EXEC имя программы, CmdParam
END SUB
0
Эксперт по электронике
6207 / 2901 / 311
Регистрация: 28.10.2011
Сообщений: 11,218
Записей в блоге: 6
20.03.2020, 19:29
Цитата Сообщение от Quiet Snow Посмотреть сообщение
Можно в командную строку отправлять номер ядра, на которое повесить обсчёт.
Какое это даст преимущество по сравнению с выбором ядра системой?
0
Кормпилятор
 Аватар для Quiet Snow
5040 / 1714 / 409
Регистрация: 25.04.2010
Сообщений: 4,827
Записей в блоге: 2
20.03.2020, 19:58  [ТС]
Цитата Сообщение от locm Посмотреть сообщение
Какое это даст преимущество по сравнению с выбором ядра системой?
Когда я занимался стримами, приходилось жёстко привязывать несколько видов софта к определённым
ядрам по нагрузке, выходило ощутимо лучше и самое главное стабильно. Система балансировала с
попеременным успехом, бывало всё пердело и заикалось очень сильно.
Всё зависит от специфики. Это только на тестах выявляется. Так с ходу что-то оценить я не могу,
может на его задаче разницы и не будет вовсе. Но самому отбалансировать - как-то спокойнее.
0
 Аватар для Power_Basic
46 / 25 / 0
Регистрация: 08.03.2016
Сообщений: 443
20.03.2020, 21:22
Цитата Сообщение от Pro_grammer Посмотреть сообщение
Но есть и хорошая новость. При создании звукового файла обе копии программы работают одновременно!
Т.е. я попробовал на одном и том же тексте одновременно запустить 2 копии программы и записать в разные файлы. Оба звуковых файла были записаны совершенно одинаково и параллельно, с правильным чередованием русских и английских текстов.
Так что скорее всего многопоток возможен. Или проще ни чего не переделывать, а запускать несколько копий программы с разными кусками текста
На самом деле, я сейчас, пока слегка перекусывал, параллельно размышлял над вашими наблюдениями и над всей "концепцией" моей программы, и сделал вывод, что это очень ценная информация. Большое спасибо, что поделились.

Короче говоря, приходится признать, что моя первоначальная идея получить значительное ускорение за счёт полного переноса всей работы с диска в память была, мягко говоря, неразумной.
Ведь и правда, сброс на диск всего записанного материала фрагментами или сброс того же самого материала целиком большого выигрыша в скорости не даст. Ну а значит, какой тогда смысл накапливать весь материал в памяти? Выходит, нет никакого смысла!
Конечно, неприятно признавать свои ошибки, но, увы, приходится. Однако, как говорится, нет худа без добра. Ценность ваших наблюдений заключается в том, что таким образом всё-таки можно использовать многопоточную запись аудиокниг, но не за счёт использования нескольких аудиопотоков в памяти, а за счёт одновременного использования нескольких программных потоков (то есть нескольких ядер процессора).

И следовательно, я полностью отказываюсь от первоначальной идеи. Теперь буду перестраивать эту программу на более "традиционный" лад, а именно сразу сбрасывать всё в файлы, - в 5 штук одновременно, ну вот и будет выигрыш в скорости, я думаю, раза в 3 по сравнению с одним потоком. locm порекомендовал использовать больше потоков, ну не знаю, попробую, поэкспериментирую.
А кроме того, программа будет работать на рам-диске (объёмом 1 Гб), поэтому, получается, всё равно, практически, в ОЗУ, лишь с незначительными потерями производительности на виртуализацию.
0
 Аватар для Pro_grammer
6807 / 2838 / 527
Регистрация: 24.04.2011
Сообщений: 5,308
Записей в блоге: 10
20.03.2020, 21:22
Цитата Сообщение от Quiet Snow Посмотреть сообщение
Т.е. экзешник может вызвать сам себя
но уже со специфичными параметрами. Если нужно именно несколько экземпляров
запущенных.
Пойдет, как вариант!
0
 Аватар для Power_Basic
46 / 25 / 0
Регистрация: 08.03.2016
Сообщений: 443
20.03.2020, 22:06
Цитата Сообщение от Pro_grammer Посмотреть сообщение
с открытым исходным кодом на Делфи ...
Всегда полезно посмотреть, как это написано у других.
Скачал, посмотрел как баран на новые ворота
Там 3 pascal-модуля в проекте. Ну сложно всё-таки разобраться, ну совсем незнакомый мне язык, никогда не имел с ним дело.
Конечно, многие операторы вроде бы похожи на бейсиковские, но логику программы всё равно отследить не получится, тем более без дебаггера.

Цитата Сообщение от Pro_grammer Посмотреть сообщение
Тем более, что писали, у вас проблемы со словарями?
Проблемы с подключением сторонних словарей. Сейчас к программе подключёны 2 моих самодельных словаря, один из которых (английский) пока ещё совсем пустой, а русский состоит пока ещё только из 10 слов. По мере выявления косяков в произношении движков буду эти словари пополнять.

Цитата Сообщение от Pro_grammer Посмотреть сообщение
Направление я думаю одно - тупо запустить один и тот же код в нескольких потоках с разным текстом, и всего делов то.
Согласен, так и буду действовать.

Добавлено через 18 минут
Цитата Сообщение от Quiet Snow Посмотреть сообщение
Можно в командную строку отправлять номер ядра, на которое повесить обсчёт.
Скомбинировав в программе обсчёт и оболочку. Т.е. экзешник может вызвать сам себя
но уже со специфичными параметрами. Если нужно именно несколько экземпляров
запущенных.
Цитата Сообщение от Quiet Snow Посмотреть сообщение
Когда я занимался стримами, приходилось жёстко привязывать несколько видов софта к определённым ядрам по нагрузке, выходило ощутимо лучше и самое главное стабильно. Система балансировала с
попеременным успехом, бывало всё пердело и заикалось очень сильно.
Всё зависит от специфики. Это только на тестах выявляется. Так с ходу что-то оценить я не могу,
может на его задаче разницы и не будет вовсе. Но самому отбалансировать - как-то спокойнее.
Да я и со стандартным-то параллельным запуском нескольких потоков познакомился всего пару месяцев назад, потому что у меня нынешний многоядерный комп всего-то полтора года, а до этого с 2004 до 2018 был одноядерный Пентиум4, и просто смысла не было в нескольких потоках.
А уж так "виртуозить" мне и вовсе не по плечу будет. Ну сейчас, по крайней мере.
0
 Аватар для Power_Basic
46 / 25 / 0
Регистрация: 08.03.2016
Сообщений: 443
09.05.2020, 19:00
Цитата Сообщение от locm Посмотреть сообщение
Вы же писали что не хотите тратить ресурс SSD, но выбрали такую неоптимальную схему. Кодируйте в MP3 в приложении и после пишите на диск.
Это не сложно. Вот часть кода преобазующая WAV в MP3 посредством acm функций.

PureBasic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
Procedure MP3_Codec(*MP3.MP3_Param, OutFile, *WaveBuff, Size, EndStatus=#False)
  Protected WriteBytes=0, Flag=0
  With *MP3
    If *MP3 
      
      If *WaveBuff And Size>0
        CopyMemory(*WaveBuff, \ash\pbSrc, Size)
      Else
        ProcedureReturn 0
      EndIf
      
      If EndStatus
        Flag | #ACM_STREAMCONVERTF_END
        \ash\cbSrcLength=0
      EndIf
      If acmStreamConvert_(\has, @\ash, #ACM_STREAMCONVERTF_BLOCKALIGN | Flag) = #MMSYSERR_NOERROR And
         \ash\cbDstLengthUsed>0
        WriteBytes = WriteData(OutFile, \ash\pbDst, \ash\cbDstLengthUsed)
      EndIf
      
    EndIf
  EndWith
  ProcedureReturn WriteBytes
EndProcedure
*WaveBuff содержит сырые данные WAV, а функция WriteData записывает на диск данные преобразованные в MP3.
Ну вот сейчас, наконец-то, дошли руки до этой конвертации, поскольку снова вернулся к своей первоначальной идее всё делать в памяти и только уже в самом конце сбрасывать полученный аудиопоток на диск.

Сразу скажу, что код на Pure Basic'е мне совершенно не понятен. Понятно только то, что мы здесь используем WINAPI функцию acmStreamConvert. Полез в MSDN, там какие-то непонятные структуры надо заполнять. Ну, короче говоря, не так уж это и просто, как вы говорите.
Продолжил гуглить в поисках кода с этой функцией на VB, ну чтобы иметь хотя бы приблизительное представление о том, как "мартышке использовать эти очки"

К моему удивлению, первым нагуглился буржуйский сайт с веткой "How to convert wave data to mp3 ? ", где The trick, отвечая на этот вопрос, выложил не слабый такой по объёму код. Не удивлюсь, если The trick с того форума и The trick с нашего форума это одно и то же лицо, поскольку ник-то уж очень необычный и заметный

Как я уже понял, ссылки здесь давать нельзя кроме ссылок на MSDN, поэтому ссылку не даю. Скажу только, что если погуглить "VB How to convert wave data to mp3 ?", самой первой ссылкой будет как раз та самая

Бегло просмотрел всю ветку. Навскидку выглядит так, что путь не такой уж быстрый и гладкий. А в самом последнем посте там ещё и про какие-то искажения толкуют.

Или у меня ошибочное впечатление сложилось?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
09.05.2020, 19:00
Помогаю со студенческими работами здесь

Создание раздела
Доброго времени суток народ! Нужно в Битриксе создать раздел с несколькими подкатегориями. В сети пишут что это можно сделать в разделе...

Создание нового раздела
Поменял диск 500г на 1тб. Клонировал систему. 500гб на диске не размечено. С помощью GParted создал раздел ext4. Захожу на него, но...

Создание отдельного раздела
Здраствуйте, подскажите пожалуйсто, можноли создать в linux ubuntu отдельный раздел харда? и возможноли это сделать уже с установленной...

Создание раздела fedora 16
доброй ночи юзеры! прошу вашей помощи. есть ноут, на нем установлена федора 16. хард = 650гб (использую максимум 40-50гб) захотел...

VBulletin Создание родительского раздела
Здравствуйте! Пытаюсь создать родительский раздел (как на первом фото) и вот что получается, на втором фото как должно быть. В...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
229
Ответ Создать тему
Новые блоги и статьи
Непрерывная интеграция для пакета Python
Mr. Docker 22.06.2025
Было 4 часа утра пятницы, когда я выпустил новую версию нашей внутренней библиотеки для обработки данных. Релиз 0. 5. 2 содержал небольшой фикс для обработки дат в ISO формате, что может пойти не так?. . .
Продвинутый ETL на C# из OLTP БД в хранилище
stackOverflow 22.06.2025
Работая в сфере корпоративной аналитики, я постоянно сталкиваюсь с одним и тем же - нужны чистые, структурированные и, главное, свежие данные. Без них современные аналитические системы, машинное. . .
Мастер-класс по микросервисам на Node.js
Reangularity 21.06.2025
Node. js стал одной из самых популярных платформ для микросервисной архитектуры не случайно. Его неблокирующая однопоточная модель и событийно-ориентированный подход делают его идеальным для. . .
Управление Arduino из WPF приложения
Wired 21.06.2025
Зачем вообще связывать Arduino с WPF-приложением? Казалось бы, у Arduino есть собственная среда разработки, своя экосистема, свои способы управления. Однако при создании серьезных проектов. . .
Звёздная пыль
kumehtar 20.06.2025
Я просто это себе представляю: как создавался этот мир. Как энергия слипалась в маленькие частички. Как они собирались в первые звёзды, как во вселенной впервые появился Свет. Как эти звёзды. . .
Создание нейросети с PyTorch
AI_Generated 19.06.2025
Ключевое преимущество PyTorch — его питоновская натура. В отличие от TensorFlow, который изначально был построен как статический вычислительный граф, PyTorch предлагает динамический подход. Это. . .
JWT аутентификация в ASP.NET Core
UnmanagedCoder 18.06.2025
Разрабатывая веб-приложения, я постоянно сталкиваюсь с дилеммой: как обеспечить надежную аутентификацию пользователей без ущерба для производительности и масштабируемости? Классические подходы на. . .
Краткий курс по С#
aaLeXAA 18.06.2025
Здесь вы найдете все необходимые функции чтоб написать програму на C# Задание 1: КЛАСС FORM 1 public partial class Form1 : Form { Spisok listin = new Spisok(); . . .
50 самых полезных примеров кода Python для частых задач
py-thonny 17.06.2025
Эффективность работы разработчика часто измеряется не количеством написаных строк, а скоростью решения задач. Готовые сниппеты значительно ускоряют разработку, помогают избежать типичных ошибок и. . .
C# и продвинутые приемы работы с БД
stackOverflow 17.06.2025
Каждый . NET разработчик рано или поздно сталкивается с ситуацией, когда привычные методы работы с базами данных превращаются в источник бессонных ночей. Я сам неоднократно попадал в такие ситуации,. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru
OSZAR »