August 2, 2022

Python vs JS для крипты

Йоу, вам пламенный летит от Олега Rabbit Hole и Izi DAO.
Мы собрались и решили раскатать для вас интересную статеечку про код в крипте. Подстраиваемся под рынок, что уж тут.

В ЭТИХ КАНАЛАХ ГЕМ-СМАРТ-ИДЕИ, ПОДПИШИСЬ ПО-БРАЦКИ: Олег Rabbit Hole Izi DAO

Бро, ты же сто процентов задумывался выучить код, чтобы психануть и вынести все эти сейлы к чертям, как Нифоллеко и Терн? Ммм, да, влажные фантазии криптана. Но код тебе может дать даже больше, чем просто вынос сейлов (хотя это тоже очень и очень круто).

Например, ты сможешь:

Писать свои проекты, боты, что актуально простоо нереально в нынешних реалиях. Создав что-то достойное - легко найти спрос.

Устроиться на работу девом в крипто-стартап или даже в стабильно крутой проект. Это прям замечательно, ибо ЗП на высоте + возможность релокейта в условный Дубай (необязательно, могут и в Эстонию забрать).

Но как минимум, ты просто сможешь решать базовые задачи и по-настоящему понять как же работает крипта. Это перевернет твой мир, а твой уровень криптана возрастет до высот эдванседа.

Но что делать? С какого языка начать? Сразу Solidity?
Воу, друг, нет. Сразу Solidity учить не стоит, начать стоит с прочтения этой статьи. Многие вопросы у тебя отпадут.

Погнааали сразу к делу.

Синтаксис

Синтаксис - правила написания программы на языке. Каждому действию и структуре действий присвоены свои слова. Если вы используете неправильный синтаксис, то компьютер не поймёт, что вы имеете ввиду. Например, нельзя использовать часть синтаксиса из Python и часть из JavaScript.

Синтаксис Python считается более простым и интуитивно понятным, в то время как синтаксис JS, по мнению большинства, сложнее освоить. Приведем пару примеров:

Объявление переменной x со значением 5

Условия, например если BTC=15k - закричать выполнить следующий код. Как видим в JS используются фигурные скобки для обозначения границ блока. Это значит, что если BTC будет стоить 15k - будет выполнен код внутри этих скобок. В Python же просто отступы

Несколько условий. Предположим у нас несколько условий, например BTC=15k и ETH=800

Циклы. если мы хотим выполнить что-то n раз

Веб разработка

Веб разработка делится на 2 части - пользовательская часть (Frontend) и серверная часть где хранятся все данные, и происходят вычисления (Backend).

Разговор начнём с Frontend

Представим, что вы решили написать сайт для своего проекта и выбираете какой язык программирования для этого учить. Конечно, для написания любого сайта вам понадобятся знания HTML, CSS, однако это языки разметки и стиля страницы, которые учатся довольно быстро. За неделю можно познать основы.

Грубо говоря HTML - скелет, CSS - кожа и прочие внешние части, JS - органы.

Без JS сайт будет неживым. Анимации, прокрутка информации (пример), авторизация на сайте и даже игры внутри не смогут быть интегрированы на сайт без JS. Однако обычный JS - не самое мощное, что есть на рынке.

Под JS написаны фреймворки (мощные инструменты) для разработки, от ведущих компаний. Например AngularJS от Google, React от FaceBook, а также Vue разработанный бывшим сотрудником Google и другими компаниями.

Популярность фреймворков за последний год

Где же Python? Если вы внимательно читали статью, то знаете, что в браузере может быть выполнен только JS код. Соответственно, нельзя написать Frontend на Python.

Перейдем к Backend

Что же такое Backend? Своеобразный мозг сайта (Server), который получает информацию, данные и HTTP-запросы от клиентской части, обрабатывает их и производит соответствующие действия

Примером возьмём нашумевшую биржу FTX. Когда мы заходим на сайт - нам необходимо авторизоваться в аккаунт, на котором хранится наша крипта. Но не будет же храниться информация всех пользователей на пользовательской стороне? Конечно, нет! После ввода логина и пароля данные отправляются на сервера FTX, которые проверяют ваш логин и пароль, и возвращают результат. Таким образом, вы либо авторизуетесь в аккаунт, либо у вас появляется сообщение о неверных данных. Сервер FTX принимающий запросы с клиентской стороны как раз таки написан на NodeJS или подобных языках, таких как Python например.

Изначально JS был написан как язык для Frontend, однако время шло и на свет появился фреймворк NodeJS, позволяющий работать с беком сайта. Также его функционал выходит за эти рамки и позволяет программы, даже с интерфейсом.

Наконец, перейдём к Python. В интернете много споров кто круче - Python или NodeJS. Внизу будет интересная инфа, кстати.

Для работы с серверной частью сайта можно использовать Python и фреймворк Django, созданный для этих целей

Написание десктопных приложений

Предположим вы просветились и решили открыть свой проект на медвежке, ну или бычке, кто его знает. Сайт у вас уже есть, но как же удобный софт, который привлечет и удержит ещё больше людей в ваш проект, м? Вы же не пользуетесь дискордом через сайт, верно? Большинство ответит да, теперь, думаю, вы поняли насколько это важная ниша.

Приложения на JS

По старинке начнём с JS, многие наверное подумали, что десктопные приложения это сложно, нужно опять учить тонну информации, да ну его к чёрту. Ахаха, к счастью у меня есть решение. Барабанная дробь... Electron. Вам наверное, об этом ничего не говорит, сейчас исправим.

Всё очень просто, Electron - фреймворк, разработанный Github, позволяющий создавать графические приложения.

При этом используя NodeJS для обработки данных на внутренней стороне (вычислительные процессы), и HTML CSS JS для работы с пользовательской частью. Тем, кто внимательно читал уже стало ясно, что мы пишем сайт, а Electron преобразует это в Десктопное приложение! И неужели кто-то это использует? Это же костыль какой-то. Никак нет, приложение Discord, написанное на Electron, тому пример.

Приложения на Python

Python тоже не отстаёт и предлагает потрясающие возможности для людей которые хотят разрабатывать приложения. Однако тут всё немножко сложнее чем с JS. К сожалению мы не сможем писать приложения как в JS, просто написав сайт и интегрировав его внутрь, однако это даёт новые возможности для вашей фантазии.

Использовать необходимо фреймворк PyQt. Основным плюсом является его популярность, именно поэтому в интернете есть куча информации, курсов, примеров и готовых модулей для работы с PyQt. Уже сегодня, зная Python, вы сможете написать свое первое приложение. Популярная программа для 3D моделирования Blender написана на Python.

Браузерные расширения

Вы уже совсем стали Китярой, открыли компанию на 1000 человек и зарабатываете мильоны, но у вас всё ещё нет расширения? Оставлять без дела это мы конечно не будем и перейдём к решению сея проблемы.

Расширения на JS

Написать расширение тоже не так сложно, как вы думаете, а сделать там можно ой как много. Достаточно знать JS (для логики) и HTML CSS (для пользовательской стороны). Проще говоря, тот же сайт, только который является расширением, то бишь может взаимодействовать с внешним сайтом (через JS). Примером тому AdBlock или расширение по смене темы на темную на всех сайтах. Вся сочная инфа ниже.

Расширения на Python

Как я уже говорил, в браузере может быть выполнен только JS код, а так как расширение - это как-никак браузер, мы не можем использовать Python для написания расширений.

Автоматизация

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

Автоматизация на JS

На JS есть два варианта автоматизации браузера - Selenium и Puppeteer. О селениуме попозже, это более старое решение. Puppeteer - библиотека для NodeJS (после изучения браузерного JS его можно использовать и в ноде, за исключением браузерных методов), разработанная Google, позволяющая автоматизировать всё, что есть в браузере. Например вы хотите сделать авторегер под коинлист - без проблем. Есть куча инфы в интернете + готовые модули для более простой работы. Можете совмещать с любыми другими модулями, например если при авторизации в аккаунт вас требует ввести 2FA - спокойно можно автоматизировать с помощью специального модуля.

Автоматизировать можно даже браузер из антика.

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

Автоматизация на Python

На питоне есть только Selenium, довольно старое решение, не мега его люблю если честно, но тоже юзать можно. Не такой удобный и интуитивно понятный синтаксис, обновления не очень часто. Также можно автоматизировать антик.

С запросами везде одинаково, язык - просто инструмент для отправки запроса.

Различие Puppeteer и Selenium

Будущее криптана

Самое сладкое...

Зная JS

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

Зная JS - вы сможете быстро выучить Solidity, язык на котором работают смартконтракты в Ethereum и его родственных сетях. Очень полезная темка, можно реверсить контракты, писать их самому. Также поможет модуль web3, позволяющий подключить все прелести web3 к вашему сайту.

Зная Python

Зная Python вы сможете легче от части заниматься веб разработкой, а также разработкой десктопных приложений. В силу популярности языка - в интернете есть много готовых модулей и решений. Можно собирать свой проект как конструктор.

Синтаксис у Python отличается, соответственно Solidity учить будет не особо проще. Однако он всё равно может облегчить изучение языка смарт контрактов эфира.

Полезные ссылки

Веб разработка

Десктопные приложения

Браузерные расширения

Автоматизация

Solidity

JS

Python