• XSS.stack #1 – первый литературный журнал от юзеров форума

Почему на python писать нужно всем ( спец.ред для HexHunter)

Che

RAM
Пользователь
Регистрация
15.03.2024
Сообщения
137
Реакции
155

Оговорка : прежде чем тыкать минусы, прочтите статью автора - тут


Почему Python лучше C: Достоинства Python и недостатки C

Python — это язык программирования, который не нуждается в представлении. Его популярность и востребованность растут с каждым годом, и на то есть множество причин. Если сравнить Python с языком C, можно с уверенностью сказать, что Python превосходит C по всем параметрам. Давайте разберёмся, почему это так.

1. Простота и удобочитаемость кода

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

Кроме того, Python требует в среднем в три раза меньше строк кода для выполнения той же задачи, что и C. Это значит, что проекты на Python разрабатываются быстрее, а их поддержка обходится дешевле.

2. Динамическая типизация и гибкость

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

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

3. Богатая стандартная библиотека и экосистема

Python предлагает огромную стандартную библиотеку и тысячи сторонних модулей для решения практически любых задач: от веб-разработки до машинного обучения. Это позволяет разработчикам быстро и эффективно находить решения для множества различных проблем.

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

4. Кроссплатформенность и переносимость

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

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

5. Автоматическое управление памятью

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

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

6. Поддержка со стороны сообщества и легкость обучения

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

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

7. Интерпретируемость и интерактивность

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

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


Теперь к реальным примерам :


Python:
word_count = len(input("Введите строку: ").split())
print(f"Количество слов: {word_count}")


Код:
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <ctype.h>

#define MAX_LENGTH 1000

int count_words(const char* str) {
    int in_word = 0;
    int count = 0;
    while (*str) {
        if (isspace((unsigned char)*str)) {
            if (in_word) {
                in_word = 0; // конец слова
            }
        } else if (!in_word) {
            in_word = 1; // начало нового слова
            count++;
        }
        str++;
    }
    return count;
}

int main() {
    char input[MAX_LENGTH];

    printf("Введите строку: ");
    if (!fgets(input, sizeof(input), stdin)) {
        fprintf(stderr, "Ошибка ввода.\n");
        return 1;
    }

    // Убираем символ новой строки, если он есть
    size_t len = strlen(input);
    if (len > 0 && input[len - 1] == '\n') {
        input[len - 1] = '\0';
    }

    int word_count = count_words(input);
    printf("Количество слов: %d\n", word_count);

    return 0;
}


Все очевидно!
 
а еще непонятно как он делает арефмитические действия когда то с лева на право когда то с права на лево это из того, что запомнилось мне и что я часто вспоминаю. пороюсь в закрамах памяти может еще чего найду
 
разработчики на C вынуждены тратить время на изобретение велосипеда
Какая жиза. Прям в самое сердце. От реализации TLS на schannel.dll вообще может случится инфаркт жопы.
 
Последнее редактирование:
Какая жиза. Прям в самое сердце. От реализации TLS на schannel.dll вообще может случится инфаркт жопы.
"So relatable. Hits right in the heart. Implementing TLS on schannel.dll can literally cause a butt infarction"
- Courtesy of Firefox On device translation addon
gluteal-strain.png


print(f"Количество слов: {word_count}")
use some syntactic sugar: print(f"{word_count=}")
 
Последнее редактирование:
Поверхностное знание питона и правда обязательно для всех.
А вот с глубиким не все так просто, я даже думаю что углубленное изучение питона пустая трата времени.
Вот допустим ты разберешся со
__slots__,
с корутитами и генераторами(почти одно и тоже),
освоишь ивент лопы,
научишся к месту использовать викптр,
научишся по максимуму избегать гонки за доступ к объектам и создания новых фреймов везде где это возможно,
вытеснишь в отдельные процессы все что можно и не потому что нужна отказоустойчивость а отдельный тред который не будет бороться 90% времени за критическую секцию,
напишеш сложный код который по производетельности все равно будет говном, и ресурсы будет жрать как бесплатные.
Да глубокое знание питона тебе даст приимущество, но стоит ли овчинка выделки?

Ах это волшебное чувство когда разобрался как это наиболее эффективно сделать на питоне, и понял что ты не хочешь это делать на питоне =)
 
Я бы много чего написал, но воздержусь.
В военкомате:
- Откати. - Закати. - Свободен, иди.
- Нет уж! - Позвольте. позвольте.

Жги давай, ни в чем себе не отказывай.
 
а еще непонятно как он делает арефмитические действия когда то с лева на право когда то с права на лево это из того, что запомнилось мне и что я часто вспоминаю. пороюсь в закрамах памяти может еще чего найду
мне кажется ему когдубто что то мишает! поройтесь пожалуста я знаю что вы професи анал
 
Пожалуйста, обратите внимание, что пользователь заблокирован
даже так сразу и не понять, кто хуже: ярый питонист или ярый хейтер питона.
Битва говна и мочи. Авторы, не принимайте на личный счёт :)

а почему сравнение с языком C, а не с его братом?
или может надо было ассемблер взять, чтобы точно казалось, что питончик выигрывает?

Язык это инструмент. Интерпретируемые языки никогда не будут хорошо работать в highload сервисах. Пример тому ВПараше, которые переехали с PHP на KittenPHP и в итоге код нативный.
А питон часто скорее как швейцарский нож. Может всё, но не так хорошо, как это делают инструменты по отдельности.
 
Какая жиза. Прям в самое сердце. От реализации TLS на schannel.dll вообще может случится инфаркт жопы.


Да не особо инфаркт, там ещё упростить можно, по кайфу шобы было.
 
даже так сразу и не понять, кто хуже: ярый питонист или ярый хейтер питона.
Битва говна и мочи. Авторы, не принимайте на личный счёт :)

а почему сравнение с языком C, а не с его братом?
или может надо было ассемблер взять, чтобы точно казалось, что питончик выигрывает?

Язык это инструмент. Интерпретируемые языки никогда не будут хорошо работать в highload сервисах. Пример тому ВПараше, которые переехали с PHP на KittenPHP и в итоге код нативный.
А питон часто скорее как швейцарский нож. Может всё, но не так хорошо, как это делают инструменты по отдельности.
Просто нужно знать несколько языков, что бы бизнес логику писать на языке для бизнес логики, что бы прототипирование делать на языке для прототипирования и т.д.
Если хотите все делать сами то лучше учите несколько разных языков пусть и не очень углубленно. Если хотите на работу то учите как можно глубже какой то один.
Но самое важное понимание основ.
 
Пожалуйста, обратите внимание, что пользователь заблокирован
Жги давай, ни в чем себе не отказывай.
А что писать? Статья или для троллинга, или ее вовсе чат-гпт написал.
Идет сравнение несравнимых вещей, да ты сам прекрасно понимаешь.

Это как 20 лет назад сравнивали дельфи и Си. "Дельфи круче, в нем ты пишешь idhttp1->get() и получаешь контент сайта!!! А в Си надо 30 строк для иницилизации винсок!!!"
Вот тут такой же уровень аргументации
 
А что писать? Статья или для троллинга, или ее вовсе чат-гпт написал.
Идет сравнение несравнимых вещей, да ты сам прекрасно понимаешь.

Это как 20 лет назад сравнивали дельфи и Си. "Дельфи круче, в нем ты пишешь idhttp1->get() и получаешь контент сайта!!! А в Си надо 30 строк для иницилизации винсок!!!"
Вот тут такой же уровень аргументации
Да забей на статью.
Сам дискусс то нормальный, и тема хорошая, вот мой пост который 5, он же толковый. А это ведь доргого стоит знать заранее какие инструменты для чего хорошо подходят а для чего подходят очень плохо. Ведь можно очень долго идти не туда, преодолевать трудности которые вообще не нужно преодолевать, изучать тонкости которые не стоят потраченного на них времени. Можно написать много кода не на том языке и слить его в толчок просто потому что изначально выбрал неверный инструмент. Люди ведь часто думают что они офигенно разберутся в каком то языке и дальше будут просто как боги хреначить все на свете, и это понятно, это ведь легко настроиться на то что нужно хорошо выучить 1 язык, а вот на то что надо уметь 5 языков это уже как то пугает.
Многие не то что язык выбрать не могут, они не могут разбить задачу на части где нагрузка на ио, а где на проц, а где вообще не важно потому что это фигня а не нагрузка.
И это проблема отсутствия базиса. Тут один не безизвестный писатель шкафчика пытался решать проблемы синхронизации методом тыка, реально пытался сбалансировать систему слипами. Идти читать Д. Рихтера не хотел, потому что у него же уже и так почти получилось. Ты то к многопоточному коду пришел не сразу и уже с какой то базой, а тут нубы сразу в это все лезут и переживают что один тред занят на 100% а остальные нихрена не делают. А сделать десять шагов назад и начать курить базу отложив все остальное на годик..., и дорого и морально тяжело. А в результате время сливается на борьбу с несуществующими трудностями и попытками балансировать систему слипами, ну и кидки от того что кодер был уверен что за месяц полюбому во всем разберется и код будет готов.
Вот тебе и корни уровня аргументации, и здесь и не только. Про все это стоило бы статью написать, про базис, про выбор язков, про планирование и сроки и многое другое, накидать примерный план обучения, контрольные вопросы и в зкреп.
А ты говоришь - что писать? Есть что писать, и много, так что пиши бро не стесняйся.
 


Напишите ответ...
  • Вставить:
Прикрепить файлы
Верх