No video

P.1 Python vs C/C++ vs Java на простом примере

  Рет қаралды 7,307

dUdVstud

dUdVstud

Күн бұрын

#dudvstud #математиканапальцах #войтивайти
Телеграм: t.me/dudvstud
Плейлисты, литература, помощь проекту и прочее: dudvstud.wixsi...
Инвентаризация технологий программирования:
docs.google.co...
Пишем "hello word"-образное приложение на C, C++, Python и на Java. Все в консольном режиме :) Сразу видим особенности компиляции и исполнения программ в разных системах.

Пікірлер: 89
@skm1355
@skm1355 3 жыл бұрын
Спасибо большое. Такие хорошие уроки стоят немало денег, особенно если их продают, а вы здесь бесплатно делитесь своими знаниями. Спасибо вам огромное!!!
@dudvstud9081
@dudvstud9081 3 жыл бұрын
Спасибо и Вам за за отзывы! :)
@timecode2024
@timecode2024 19 күн бұрын
Здравствуйте! Конспект и тайм-коды для этого видео: 0:30 Вступление. Простой пример 0:50 работаем прямо в консоли 2:00 пишем простую программу на #С 3:45 сохраняем (* в Windows вместо ls используем команду dir) 4:20 делаем файл исполняемым 5:10 обратите внимание 5:50 теперь работаем с С++ , пишем программу 7:45 смотрим на результат 9:15 создаем код на #Python 10:53 преимущества Python состоит в... 12:10 про библиотеку #NumPy 13:20 теперь #Java 14:55 интересно, как мы будем этот код выполнять. Смотрите, что у нас появилось 15:50 подсматриваем что в файле testJ.class : видим байт-код (исполняемый код для #JavaMachine) 17:00 Java взяла лучшее от двух миров, кроссплатформенная 18:20 главное, что есть удобная среда, гуглите\ищите #JupyterNotebook Успехов Вам в обучении!
@DSS-Podcast
@DSS-Podcast 3 жыл бұрын
Круто, что объясняете как работает преобразование исходников на примере Си, так как обычно каналы по DS сразу на пистоне всё начинают делать и в такие тонкости не углубляются
@dudvstud9081
@dudvstud9081 3 жыл бұрын
Спасибо за отзыв :)
@thetraveler7779
@thetraveler7779 3 жыл бұрын
Такой "мощной" интерпритации разницы между интерпритатором и компилятором я лично в ютубе не встречал. Возможно изучение ассемблера мне дало лучшее понимание низкоуровневых деталей.... От души благодарю вас за прекрасное видео, нравится всё и дикция, и т.д. и т.п..
@dudvstud9081
@dudvstud9081 3 жыл бұрын
Спасибо :)
@anzarsh
@anzarsh 3 жыл бұрын
У вас талант к преподаванию:)
@dudvstud9081
@dudvstud9081 3 жыл бұрын
Спасибо!
@DoskarinMarlen
@DoskarinMarlen 3 жыл бұрын
Вячеслав, наконец-то начался блок с программированием! Теперь буду Вас постоянно смотреть, а то все один линал и дискретка:)
@dudvstud9081
@dudvstud9081 3 жыл бұрын
Ура! :)
@doopath8737
@doopath8737 3 жыл бұрын
Спасибо за интересное видео. Можно было еще продемонстрировать работу со структурами данных (вроде массивов) в этих языках. А дополнительно, хочется слегка упороться и написать похожую программу на языке ассемблера (а точнее, его диалекте - fasm). Приведу пример кода, который компилируется для системы Linux с архитектурой X86_64. main.asm -> ; Начало format ELF64 public _start section ".data" writable message db "From assembly with love!!!", 0xA ; Определение строки length = $ - message ; Определение длинны сообщения section "_start" executable _start: mov rax, 4 ; Номер системного вызова mov rbx, 1 ; Файловый дескриптор mov rcx, message mov rdx, length int 0x80 ; Системный вызов с кодом прерывания 128 call exit section ".exit" executable exit: mov rax, 1 ; Помещаем единицу в регистр ax xor rbx, rbx ; Обнуляем регистр bx Int 0x80 ; Системный вызов с кодом прирывания 128 ; Конец Нужно заметить, что этот код показывает конкретное сообщение. Для того, чтобы показывать то, что нам хочеться, нам бы пришлось писать процедуру, которая высчитывает длинну сообщения и выводит его на экран, сохраняя при этом значения регистров в стэк и возвращая их после выполнения. После этого, нужно создать объектный файл при помощи одного из компиляторов - fasm. Объектным файлом будет представление программы, готовое для преобразования в бинарный файл, при помощи утилиты ld. Возможно, кому-нибудь будет интересно посмотреть на бинарный файл как он есть, в привычном нам виде. Это можно сделать, например, в редакторе vim при помощи внутренней комманды :%!xxd. В итоге создание программы выглядит так: vim main.asm # Создание и заполнение исходного файла fasm main.asm # Создание объектного файла main.o ld main.o # Преобразование объектного файла в бинарный a.out ./a.out # Запуск бинарного файла Надеюсь, это дополнение окажется для кого-нибудь полезным или интересным.
@dudvstud9081
@dudvstud9081 3 жыл бұрын
Спасибо :)
@user-sn9se8dv3q
@user-sn9se8dv3q 3 жыл бұрын
Даже зная эти различия с интересом смотрел,Вы очень локанично объясняете) А как часто будут выходить видео из данного модуля ?
@dudvstud9081
@dudvstud9081 3 жыл бұрын
Спасибо. Пару уроков в неделю.
@artemwealth
@artemwealth 3 жыл бұрын
ну очень классный контент. надо мне помочь тебе с развитием канала , чем больше людей его увидят, тем лучше)
@dudvstud9081
@dudvstud9081 3 жыл бұрын
Спасибо!!!
@artemwealth
@artemwealth 3 жыл бұрын
@@dudvstud9081 давайте общаться. поможем друг другу. Я из Минска
@dudvstud9081
@dudvstud9081 3 жыл бұрын
@@artemwealth нет, извините. Я не хочу общаться за пределами канала.
@artemwealth
@artemwealth 3 жыл бұрын
@@dudvstud9081 ok
@AMonastyrskiy
@AMonastyrskiy 3 жыл бұрын
В последних версиях Java самому писать команды для компиляции не обязательно, можно просто передать файл с кодом виртуальной машине на исполнение (как и в Python). Она сама его скомпилирует.
@dudvstud9081
@dudvstud9081 3 жыл бұрын
Это понятно :) Смысл демонстрации был в том, чтобы показать, что Java его именно скомпилирует, а не исполнит построено.
@aleksandrkucheryaev7547
@aleksandrkucheryaev7547 3 жыл бұрын
Круто что подход отличается от стандартных видосов на такую тему) никаких редакторов и пошел ты Hello world))
@dudvstud9081
@dudvstud9081 3 жыл бұрын
Спасибо за отзыв. На следующих уроках все будет не так низкоуровнево, мы будем использовать среду jupyter.
@aleksandrkucheryaev7547
@aleksandrkucheryaev7547 3 жыл бұрын
@@dudvstud9081 💪👍
@nanoqsh
@nanoqsh 3 жыл бұрын
Никаких редакторов кроме nano
@dudvstud9081
@dudvstud9081 3 жыл бұрын
@@nanoqsh да! И gui в печку! Да здравствует консоль!!!
@IscanderFigaro
@IscanderFigaro 3 жыл бұрын
настоящие мужчины программируют исключительно на Фортране-4 ))) и не признают редакторов кроме TECO и EDT (к обрезанным версиям типа K52/KEX относимя с пониманием).
@nikita13131
@nikita13131 3 жыл бұрын
Спасибо!
@dudvstud9081
@dudvstud9081 3 жыл бұрын
И Вам! :)
@Toxic__Play
@Toxic__Play 2 жыл бұрын
Быстро печатаешь, много опыта наверное)))
@dudvstud9081
@dudvstud9081 2 жыл бұрын
Ага :))
@user-bp3xw5ce9z
@user-bp3xw5ce9z 3 жыл бұрын
Вячеслав, есть у меня дилемма. Закончил я свою прогерскую деятельность на 7 паскале и дельфи-3 20 лет назад. Сейчас появилась необходимость в программировании. Залип на том, какой язык все же изучать. Питон или какой то компилятор. Большинству задач в части аналитики подошел бы питон (обработка массивов), но на перспективу нужны будут утилиты, работающие на VPS сервере, а с ресурсами там не фонтан. Насколько много отъедает "лишних" ресурсов интерпретатор в сравнении со скомпилированным исполняемым файлом? Трудозатраты (время) на создание и отладку тоже важны.
@dudvstud9081
@dudvstud9081 3 жыл бұрын
Спасибо за отзыв. Ну смотрите, если Вы знаете паскаль он же дельфи, то вы преодолели процентов 70 до вершины полд названием C++. Я бы на Вашем месте все же постарался с этим освоиться. А потом можно перейти на питон для обработки массивов (pandas, numpy). Но всегда будет свобода для маневра за пределами питотна. Что касается скорости, то питон действительно очень медленный сам по себе. НО, тот же numpy написан на C++ (или фортран, точно не помню) и из питона вызывается скомпилированный код, и поэтому он быстрый. И получается оптимальны вариант: python позволяет быстро разрабатывать скрипт, который будет быстро работать за счет использования numpy и pandas.
@user-bp3xw5ce9z
@user-bp3xw5ce9z 3 жыл бұрын
@@dudvstud9081 Спасибо за оперативный ответ. "Преодолел 70%" - это сильно сказано ))) Все осталось там, 20 лет назад ) Сейчас все знания остались практически на уровне алгоритмов, а язык надо вспоминать с нуля. Вы еще не ответили про поедание интерпретатором "лишних ресурсов". Понятное дело, среду надо устанавливать, но место на диске не столько критично (хоть неудобства это создает), как "лишнее" отъедание оперативки. Еще я забыл упомянуть, что потребуются средства визуализации (графики в онлайн режиме, итерфейсы утилит). Как с этим в С++? И еще один момент, разработка и отладка предполагается на макоси, а работа утилит и аналитиков должна быть кроссплатформенной (макось и винда)
@dudvstud9081
@dudvstud9081 3 жыл бұрын
@@user-bp3xw5ce9zНу, знание алгоритмов - это самое ценное и есть :) Про ресурсы ничего не скажу, не сравнивал. В моих кейсах данные продают больше, чем компилятор и интерпретатор вместе взятые :) Ну а что касается кроссплатформенности: питон - кроссплатформенный. Ещё можно в сторону джавы посмотреть. Ну и можно cmake задействовать, тогда можно будет писать хоть на c/c++, но собирать проекты из этого кода под разные системы. Короче, есть много решений...
@user-bp3xw5ce9z
@user-bp3xw5ce9z 3 жыл бұрын
@@dudvstud9081 спасибо!
@ValueLevit
@ValueLevit 3 жыл бұрын
Спасибо
@dudvstud9081
@dudvstud9081 3 жыл бұрын
^_^
@maksimchizhov2420
@maksimchizhov2420 2 жыл бұрын
+
@IscanderFigaro
@IscanderFigaro 3 жыл бұрын
5:35 у gcc есть "секретная" оция "-S". Инлайновский ассемблер у gcc - это нечто.
@dudvstud9081
@dudvstud9081 3 жыл бұрын
Этим мы пользоваться не будем, по крайней мере пока :)
@thisdaulet9059
@thisdaulet9059 3 жыл бұрын
C++ more interesting
@dudvstud9081
@dudvstud9081 3 жыл бұрын
Why? Yes, c++ is the language of the final application. But for datascience, for research, for data analysis, for neural network trainig etc Python is more usefull. And then, when algorythms are devoloped, midels are constructed and neural networks are trained... Then C++ developers use all of this for some new product :)
@thisdaulet9059
@thisdaulet9059 3 жыл бұрын
@@dudvstud9081 yes, I agree with you , but with C plus-plus the best!
@nanoqsh
@nanoqsh 3 жыл бұрын
Wow, hello! You are probably from England
@nanoqsh
@nanoqsh 3 жыл бұрын
@@dudvstud9081 Вы хотели сказать, что сначала разрабатываются алгоритмы и библиотеки для работы с нейронными сетями, а потом разработчики на питоне заворачивают их в красивый api и используют для конечного продукта? Сам питон написан на Си. NumPy написан на Си. TensorFlow написан на C++. Любая хоть сколько-то полезная библиотека, которая требует хороших вычислительных ресурсов пишется на Си(++), а потом используется в питоне. Я не хочу сказать, что поэтому питон какой-то плохой и лучше писать на Си (хотя такое утверждение тоже не безосновательно). Питон хороший скриптовый язык и почему бы не писать на нём если он нравится? Не всем же разрабатывать библиотеки для производительных вычислений? Просто нужно знать возможности и сферу применения определенного языка
@dudvstud9081
@dudvstud9081 3 жыл бұрын
@@nanoqsh я не совсем это хотел сказать :) Numpy действительно написан на си, поэтому он быстрый. Поэтому и программа написанная на питоне с грамотным использованием numpy тоже быстро работает. Питон сейчас является одним из основных языков для дасайенса, анализа данных, обучения нейронные сетей и тому подобных задач. Потому что обеспечивает высокий уровень абстракции, есть большое количество готовых библиотек и сама разработка занимает меньше времени, чем на том же c++. Да ещё и кррсплатформенный. А когда дасайнтисты свою часть проекта на питоне выполнили, тогда уже C++/C#/ObjectiveC/Java девелоперы берут готовые алгоритмы, модели, обученные нейросети и создают конечные продукты. Какай язык лучше, важнее, правильнее? Просто у каждого своя ниша, и своя роль. Это как сравнить важность исследовательской работы и создания продукта. Первое без второго бессмысленно, второе без первого невозможно.
@DSS-Podcast
@DSS-Podcast 3 жыл бұрын
Ого, ещё об отличии файликов для JVM, исполняемых файлов и файлов для интерпретатора, при чём быстро и понятно
@dudvstud9081
@dudvstud9081 3 жыл бұрын
Ага :)
@yarosav5396
@yarosav5396 3 жыл бұрын
а можете подсказать что за книги в видео превью/кавер?
@dudvstud9081
@dudvstud9081 3 жыл бұрын
не могу , к сожалению :) это фото не мое
@yarosav5396
@yarosav5396 3 жыл бұрын
@@dudvstud9081 ладно, попробую выкачать через девтулзы фото и прогуглить Спасибо за видео
@user-db8ny4nk8l
@user-db8ny4nk8l 3 жыл бұрын
Здравствуйте, простите за вопрос не по теме. Готовлюсь к ЕГЭ.. Может кто может посоветовать как такую задачку решить за разумное время с помощью написания программы?Если перебрать весь диапазон и для каждого числа до корня смотреть делители, то все равно очееень долго imgur.com/a/DFln0ME Буду признателен за любой совет.
@dudvstud9081
@dudvstud9081 3 жыл бұрын
Тут вот как раз обсуждали недавно, что numba немного облегчает такую ситуацию :)
@user-db8ny4nk8l
@user-db8ny4nk8l 3 жыл бұрын
@@dudvstud9081 ? 0_0 Как оно тут облегчает
@dudvstud9081
@dudvstud9081 3 жыл бұрын
@@user-db8ny4nk8l ускоряет, если Вы на питоне пишете
@user-db8ny4nk8l
@user-db8ny4nk8l 3 жыл бұрын
@@dudvstud9081 но это мне не сильно поможет... 100млн*100млн итераций
@skm1355
@skm1355 3 жыл бұрын
Интересно где вы пишете этот код?)
@lackevil3730
@lackevil3730 3 жыл бұрын
На маке, в консоле с редактором Nano
@dudvstud9081
@dudvstud9081 3 жыл бұрын
@@lackevil3730 да, именно
@user-ym5te6pp5y
@user-ym5te6pp5y 3 жыл бұрын
@@dudvstud9081 А что не Vim?)
@dudvstud9081
@dudvstud9081 3 жыл бұрын
@@user-ym5te6pp5y тут не было ничего такого, ради чего надо стоило бы заморочиться с вимом :)
@lackevil3730
@lackevil3730 3 жыл бұрын
@@dudvstud9081 Да-да, а потом ещё думай как выйти с вима)))
@alexdomanskyi7301
@alexdomanskyi7301 3 жыл бұрын
Как раз сам подошёл к изучению Python и тут такое совпадение тоже начинается Python. Ну теперь держитесь, мы захватим эту планету!
@dudvstud9081
@dudvstud9081 3 жыл бұрын
:))
@whoiam7138
@whoiam7138 3 жыл бұрын
Если не ошибаюсь, то в Java лучше не использовать статические методы, так как их не чистит сборщик мусора и память засоряется
@dudvstud9081
@dudvstud9081 3 жыл бұрын
Да, все так... вот только программа не запустится без статического мейна :)))
@high_orbit
@high_orbit 3 жыл бұрын
@@dudvstud9081 тем лучше, память не засорится!
@dudvstud9081
@dudvstud9081 3 жыл бұрын
@@high_orbit тогда лучше комп вообще никогда не включать, сохранить в первозданном виде :)
@nanoqsh
@nanoqsh 3 жыл бұрын
Что значит, что сборщик не чистит методы? Их вообще нужно чистить? Методы это же не объекты, они не занимают места в динамической памяти, поэтому их не нужно и даже невозможно чистить. Возможно, вы перепутали статические методы со статическими объектами. Статические объекты это объекты, которые существуют на протяжении всей работы программы. И иногда без их использования не обойтись. Так что правило "лучше не использовать статические объекты" слишком грубое и бескомпромиссное
@dudvstud9081
@dudvstud9081 3 жыл бұрын
@@nanoqsh это правило имеет смысл, если его сформулироть: без необходимости, не делай объект статичным
@Konstantin_Baranoff
@Konstantin_Baranoff 3 жыл бұрын
Спасибо, Вячеслав за видео, и за блок в целом. Как всегда наглядно, о важном! Интересовался способами как можно компенсировать низкую скорость python наткнулся на это видео. kzfaq.info/get/bejne/jKeDlM-oyqqUe40.html&ab_channel=StandaloneCoder Как думаете, на сколько это применимо и оправданно в реальных задачах в рамках Data Sience?
@dudvstud9081
@dudvstud9081 3 жыл бұрын
Да, это работоспособное решение. Но имеет смысл при использовании "длинных" циклов. Если есть возможность обойтись без циклов, то лучше обойтись без циклов :) Numpy это позволяет в парадигма векторных операций.
Ф.22 Про мой канал
20:33
dUdVstud
Рет қаралды 1,7 М.
Son ❤️ #shorts by Leisi Show
00:41
Leisi Show
Рет қаралды 10 МЛН
黑天使遇到什么了?#short #angel #clown
00:34
Super Beauty team
Рет қаралды 44 МЛН
Kind Waiter's Gesture to Homeless Boy #shorts
00:32
I migliori trucchetti di Fabiosa
Рет қаралды 12 МЛН
7 Days Stranded In A Cave
17:59
MrBeast
Рет қаралды 82 МЛН
Ф.25 О вечных студентах...
11:19
dUdVstud
Рет қаралды 1,5 М.
С Новым 2024 годом!
2:12
dUdVstud
Рет қаралды 742
A.7.28+ Все о кватернионах
2:13:41
dUdVstud
Рет қаралды 1,7 М.
Son ❤️ #shorts by Leisi Show
00:41
Leisi Show
Рет қаралды 10 МЛН