Автор Тема: Курилка  (Прочитано 231899 раз)

Оффлайн Anchoret

  • Житель
Re: Курилка
« Ответ #1425 : 24 Апрель 2023, 04:37:43 »
На тему пайтона. Без своих библиотек так себе язык в плане быстродействия. Примерно как эрзац бейсик в 1С. Нет типизации переменных, лоюбые данные помещенные в эти переменные жрут немеряно памяти и долго обрабатываются. Для эксперимента предлагаю написать на пайтоне сортировщик. Любой. И сравнить по скорости с таким-же хотя-бы на VB (байт код + типизация переменных). Жаль, что мелкомягкие его постепенно забрасывают.

Оффлайн Striver

  • Житель
  • недоинженер, полупрограммист
    • http://striver00.ru
Re: Курилка
« Ответ #1426 : 24 Апрель 2023, 14:04:50 »
Ну, бля.ь, накурили! Как всегда дым столбом, дышать нечем!
Будь моя воля, вообще полностью запретил бы нахрен продажу табачных изделий.

Оффлайн Striver

  • Житель
  • недоинженер, полупрограммист
    • http://striver00.ru
Re: Курилка
« Ответ #1427 : 24 Апрель 2023, 14:05:05 »
Николай Николаев:
Цитировать
что должно произойти чтобы полностью отказаться freebasic в пользу python?
Вот нахрена было вбрасывать на вентилятор? Прекрасно знал же, к чему это приведёт!

Оффлайн Striver

  • Житель
  • недоинженер, полупрограммист
    • http://striver00.ru
Re: Курилка
« Ответ #1428 : 24 Апрель 2023, 14:05:36 »
На тему пайтона. Без своих библиотек так себе язык в плане быстродействия. Примерно как эрзац бейсик в 1С. Нет типизации переменных, лоюбые данные помещенные в эти переменные жрут немеряно памяти и долго обрабатываются. Для эксперимента предлагаю написать на пайтоне сортировщик. Любой. И сравнить по скорости с таким-же хотя-бы на VB (байт код + типизация переменных). Жаль, что мелкомягкие его постепенно забрасывают.
Внезапно, я писал на питоне сортировщик. Нет, не для эксперимента, а вполне себе по работе. Конечно, дурацкая "сортировка пузырьком" мне была не нужна, метод sort() у питоновских списков прекрасно пашет (и для этого не нужны "свои библиотеки"!). Мы расставляли слова в правильном порядке на странице с текстом, т.е. исходные данные для сортировки были двумерные (для каждого слова заранее были высчитаны все требуемые координаты: top, bottom, left, right, center_x, center_y). И нужно правильно обрабатывать странные ситуации, когда отдельные слова в пределах одной строки находятся выше или ниже всех остальных или написаны шрифтом другого размера.

Первая версия (её писал не я) работала правильно, но в случае некоторых "особо нехороших" входных данных могла работать 15-30 сек для одной страницы, что было, конечно, слишком медленно. Значит ли это, что "питон слишком тормозной"? Возможно и да, но, когда я взялся за оптимизацию этого алгоритма, мне удалось всё это ускорить. В самом худшем случае функция отрабатывает за 5 сек, а обычно 100-200мс. Причем в основном, оптимизация заключалась в отказе от использования левых библиотек и переписывании всего на стандартных для питона списках, словарях и множествах.

Когда уже и эти 5 сек посчитали слишком медленными (целый год средняя скорость работы всех устраивала), я всё-таки заставил себя отложить питон и переписать на компилируемом языке (в этом качестве предпочитаю D). "Худшее время" уменьшилось до 0.8 сек. Опять же, значит ли это, что "питон слишком тормозной"? Видимо конкретно для этой задачи всё-таки да, но все остальные 99,9% этой немаленькой системы прекрасно работают на питоне. На D я переписал всего лишь одну небольшую функцию, которая, к тому же, далеко не всегда используется. И как-то вся эта история моё мнение о питоне никак не ухудшила, я и раньше знал все его положительные и отрицательные стороны.

Оффлайн Anchoret

  • Житель
Re: Курилка
« Ответ #1429 : 25 Апрель 2023, 01:32:17 »
А метод Sort где живет? Это про то, что все функции, методы и т.д. написаны на том-же Си ,скомпилированы и зашиты в библы пайтона. 30 сек - это катастрофа. Например индексный вариант "быстрой" сортировки на VBA для двумерного массива в 100к обрабатывает тот-же текст за доли секунды. Числа еще быстрее, а всякие специализированные по входным данным (Double, Long, про Integer вообще молчу) работают еще быстрее. И в большей части разница по скорости именно в типах входных данных и типизации самих переменных - нет лишних промежуточных преобразований.



Оффлайн LanuHum

  • Житель
Re: Курилка
« Ответ #1430 : 25 Апрель 2023, 08:48:18 »
Кто хочет быстро, пусть на фотонный компьютер деньги собирает. Я раньше не понимал, как это рендерер написанный на ассемблере с использованием тысяч процессоров видеокарты считает грёбаную сцену несколько суток. Оказывается, проблема в желаниях, а не в языках программирования. Вспомнилась байка про спор Бога с Дьяволом. Они поспорили, кто из них создаст нечто самое красивое. И, пока Дьявол в своём подземелье ковал золотое ожерелье, Бог из жука сделал Солнце.

Оффлайн Anchoret

  • Житель
Re: Курилка
« Ответ #1431 : 27 Апрель 2023, 23:00:31 »
Ну так есть ограничения у "жуков". У одних больше, у других меньше. Плюс еще прямизна рук писавших на Си в библиотеки, а то на том-же VBA функция Split дольше работает, чем функция написанная собственноручно с применением Instr.

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

На старте всей этой компьютерной петрушки, когда быстродействие не позволяло подвесить различные интерпретаторы языков, то писали на АСМе. И работало это быстро. Правда в случае графики - только 2д.

Оффлайн Samovar

  • Житель
Re: Курилка
« Ответ #1432 : 27 Апрель 2023, 23:13:21 »

Freebasic полностью совместим с Си, кроме синтаксиса, естественно ( в принципе, он таковым и задумывался разработчиками)
Единственное "неудобство" синтаксиса классического BASIC, что в нём изначально ( и сейчас в Freebasic для совместимости с древним кодом), пофиг на регистр символов имён переменных и прочего кода (FADD=fAdd), а Cи нет, потому есть для Си и прочих ЯП такое в нём : Alias "fAdd"
--------------
Репост с репоста.
https://users.freebasic-portal.de/freebasicru/fbteacher.html



FreeBasic в образовании
Автор: tux, ссылка по теме. Если вы автор статьи, а так же против ее размещения на этом сайте, вы можете написать об этом в ПС на форуме


Есть куча мнений, на каком языке надо обучать программированию, на каком компиляторе. Некоторые утверждают, то необходимо сразу на профессиональных языках программирования, иначе в дальнейшем будет сложно перейти на него, но при этом сложно объяснить даже базовые принципы программирования. Но кто бы о чем не думал, многие, непонятно почему, продолжают обучать еще на 16-ти разрядных версиях Паскаля да Си. К сожалению, наработки написанные на них невозможно в дальнейшем использовать в современных языках, и поэтому приходится либо переписывать немалую часть кода. Я не буду доказывать, что FreeBASIC идеально подходит для этой задачи, но продемонстрирую его преимущество в этом вопросе.
Трудно спорить с тем, что сейчас стандартом системных языков программирования является Си, и от этого никуда не деться. Если выходит какая либо новая библиотека, то 100% у нее будет Си совместимый интерфейс. FreeBASIC является полностью Си совместимым языком, это означает, что все, что можно использовать в Си, можно использовать и в FreeBASIC-е. Это также означает, что куски кода написанные на Си и на FreeBASIC-е можно без особых проблем использовать в одном проекте. Так как формат бинарных файлов FreeBASIC-а является ELF — который является стандартным для *NIX систем, то помимо использования библиотек, можно использовать линковку чистых объектных файлов. Продемонстрирую это на примере.


Напишем функцию на FreeBASIC-е


Код
Declare Function fAdd Alias "fAdd"( Byval A As Integer, Byval B As Integer ) As Integer
Function fAdd ( Byval A As Integer, Byval B As Integer ) As Integer
    Function=A+B
End Function


Сохраним ее в файле func.bas и скомпилируем


fbc -c func.bas
Получим в итоге файл func.o . Теперь напишем код основной программы с вызовом этой функции на Си и сохраним в файле main.c


Код
#include <stdio.h>


int fAdd(int A, int B);


int main(){
printf("%d\n", fAdd(4, 5));
return 0;
}


Скомпилируем:


gcc -c main.c -o main.o


Получим файл main.o с точкой входа в нашу программу, ну а теперь слинкуем это в один готовый исполняемый файл


gcc main.o func.o -o proga


в результате получаем готовую программу.


Однако тут следовало бы сказать об одной важной вещи. FreeBASIC изначально был ориентирован на полную независимость от сторонних динамических библиотек, и поэтому использует при линковки свои собственные библиотеки, в которых и реализованы все сложные конструкции, которые было бы накладно генерировать при каждой компиляции программы. Язык Си же является основным языком многих операционных систем, и поэтому можно практически с полной уверенностью утверждать, что все Си-шные библиотеки будут в системе. Поэтому в Си используются динамические библиотеки, и следовательно меньше проблем при линковки. В нашем примере на FreeBASIC не было использовано никаких специфичных конструкций, поэтому нам ничего для компиляции больше не понадобилось. В принципе использование дополнительных библиотек не накладывает никаких ограничений и никак не повлияет на производительность, единственное итоговый файл получится на несколько килобайт больше, чем подобный на Си, но с учетом характеристик современной техники это можно не принимать во внимание.
« Последнее редактирование: 27 Апрель 2023, 23:30:58 от Samovar »

Оффлайн LanuHum

  • Житель
Re: Курилка
« Ответ #1433 : 28 Апрель 2023, 00:33:33 »
Когда таланта нету к программированию, то язык можно учить любой, но, выучить не получится. Когда этим вопросом интересовался, нашёл совет, что лучший способ выучить язык - это написать на нём полноценную программу. Для начала я взял рендерер написанный на Java и попытался понять процесс распараллеливания. Там есть класс ThreadLocal. Всё закончилось сразу же как я перестал материться на инфу в сети по поводу этого класса будь он неладен.

Оффлайн Samovar

  • Житель
Re: Курилка
« Ответ #1434 : 28 Апрель 2023, 22:56:09 »
Цитировать
Когда таланта нету к программированию...
Талант (дар или одарённость) - вещь субъективная... это предрасположенность к чему либо, способность, более лёгкая обучаемость, интерес... всё :)

Оффлайн LanuHum

  • Житель
Re: Курилка
« Ответ #1435 : 28 Апрель 2023, 23:30:07 »
Я тебе объясняю следующее, что, если ты с нуля собрался изучить язык программирования в интернете, то выясни для начала возможности получения адекватных консультаций на человеческом языке который ты в состоянии полноценно понимать.
С другой стороны, что писать, чего нет? Поврей под видеокарты АМД? Фрибейсик лучший для этого вариант?
Без интереса после работы учить яп никто не будет

Оффлайн LanuHum

  • Житель
Re: Курилка
« Ответ #1436 : 28 Апрель 2023, 23:39:18 »
Почему Vala?
Эффективный
    Vala компилируется в невероятно быстрые полностью нативные двоичные файлы. Вы также можете использовать существующий Cи-код в своих программах Vala, а также генерировать Cи-код из Vala.
Код
int main (string[] args) {
  var app = new Gtk.Application(
    "com.example.App",
    ApplicationFlags.FLAGS_NONE
  );
 
  app.activate.connect(() => {
    var win = new Gtk.ApplicationWindow(app);

    var btn = new Gtk.Button.with_label("Hello World");
    btn.clicked.connect(win.close);

    win.child = btn;
    win.present();
  });
  return app.run(args);
}

Оффлайн Samovar

  • Житель
Re: Курилка
« Ответ #1437 : 28 Апрель 2023, 23:56:28 »
LanuHum, меня сейчас совершенно неинтересуют видеокарты :) и их возможности :) Хотя, да, я отчасти задал  тему использования видеокарт в рендеринге давным-давно на 3dcenter.ru
Сейчас пожинаю плоды своего выпендрёжа :)  Которые,  в итоге, обернулись против меня :)

Оффлайн LanuHum

  • Житель
Re: Курилка
« Ответ #1438 : 29 Апрель 2023, 00:03:02 »
LanuHum, меня сейчас совершенно неинтересуют видеокарты :) и их возможности :) Хотя, да, я отчасти задал  тему использования видеокарт в рендеринге давным-давно на 3dcenter.ru
Сейчас пожинаю плоды своего выпендрёжа :)
Вот, и я думаю создать формат файла способный перенести сцену, созданную в блендере 3.3.6 для блендера 2.79, чтобы рендерить интерналом на ядрах проца и нахер все видеокарты. У меня видеокарты, вообще нету, используется встроенная AMD RADEON VEGA 8 в процессор RYZEN 3 3200G

Оффлайн Samovar

  • Житель
Re: Курилка
« Ответ #1439 : 29 Апрель 2023, 00:26:24 »
Цитировать
Вот, и я думаю создать формат файла способный перенести сцену, созданную в блендере 3.3.6 для блендера 2.79...
Допили лушче для 2.79 свой коннектор с  Pov-Ray. Хороший старый добрый рендерер... но х.з. кому он нужен... как и интернал... все зациклилились и пэбэрнулись:)

 


Яметрика

* По форуму

* Рекламный блок

* Последние вложения

1 (1).png
Скачано: 342
Автор: LEXA ANЭGROWND
blender.png
Скачано: 340
Автор: ipv2007
4.png
Скачано: 346
Автор: hiroyukiss
2.png
Скачано: 368
Автор: hiroyukiss

Скачано: 402
Автор: Dilifa12