Какие есть альтернативы питону для консольных приложений?

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

Мне нужен язык для написания всяких скриптов для личных нужд как совсем простых, так и довольно лсожных. Без гуя, просто консольное приложение. Запускаться будет на линуксе, так что кроссплатформенность не критична. Если будет возможность, начну писать сайты на нем вместо php.

Чего я бы хотел от языка:
- нормальное ооп
- многопоточность
- возможность использовать его для веб (хотя не обязательно)
- очень желательна строгая типизация

На что я уже посмотрел:
- ruby У этого языка мне больше всего понравился синтаксис и полная ооп-шность. Так же есть мощные веб-фреймворки. Но по части НЕ веба он не очень (сужу по дискуссиям, на которые указал гугл).
- python Отличный язык. Есть почти на всех линуксах. Очень много либ. Так же есть фреймворки для веба. Но ооп в нем неполноценное. Я по красней мере не нашел интерфейсов, абстрактных классов и приватных методов из коробки.
- perl Об этом языке знаю мало. Отталкивает его слабая востребованность. Я не говорю, что он вообще не нужен, но если сравнивать с предыдущими языками, то это очевидно. Так же гугл указывает на то, что с многопоточностью у него не все в порядке.
- golang Интересный, но без класического ооп. Не понравилось. Плюс я не нашел СТАБИЛЬНЫХ и сформировавшихся фреймворков для него. Видимо еще молод.

Вот все маюсь. Вроде питон хорошо подходит, но останавливает его недоООП.

Собственно, интересует два вопроса:
- Можно ли реализовать в питоне полноценное ооп?
- Какие есть альтернативы?

Буду благодарен за любые соображения.
  • Вопрос задан
  • 3617 просмотров
Решения вопроса 2
sim3x
@sim3x
python

абстрактных классов

stackoverflow.com/a/13646263/1346222
from abc import ABCMeta, abstractmethod

class Abstract(object):
    __metaclass__ = ABCMeta

    @abstractmethod
    def foo(self):
        pass

Abstract()
>>> TypeError: Can not instantiate abstract class Abstract with abstract methods foo

class B(Abstract):
    pass

B()
>>> TypeError: Can not instantiate abstract class B with abstract methods foo


не нашел интерфейсов

Чем абстрактный класс отличается от интерфейса?

приватных методов

https://docs.python.org/2/tutorial/classes.html#pr...

- многопоточность

в интерпретируемых языках этого не делают, тк нужны блокировки
- строгая типизация

есть - duck, dynamic, strong
Ответ написан
vvpoloskin
@vvpoloskin
Инженер связи
Я использую bash для повседневных мелких задач, python для более сложных. А нужны ли вам абстрактные классы и интерфейсы для ваших задач? В python этот функционал либо добавляется модулями, либо парой строк кода (нужно лишь проникнуться метапрограммированием))
И какая многопоточность нужна? Если просто для обхода блокировок чтения-записи (что в большинстве и нужно), то такое есть. А насчет типизации - в python она строгая)
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 7
Zhbert
@Zhbert
Technical Writer, Linux user
На линуксе? Скрипты? Bash, все остальное от лукавого.
Ответ написан
StrangeAttractor
@StrangeAttractor
Я просто оставлю это (David Copeland - Build awesome command-line applications in Ruby 2) здесь.

Сам я не рубист, всё пишу на Scala и C#, но мне кажется нельзя не вспомнить о существовании целой книги, отвечающей на Ваш вопрос.
Ответ написан
Комментировать
leahch
@leahch
Я мастер на все руки, я козлик Элек Мэк :-)
Буду неловок, но www.scala-lang.org подходит под все критерии!
Ответ написан
@v_prom
python. интерфейсы и абстрактные классы накатываются библиотеками, а приватные методы есть из коробки, просто не такие к которым привыкли в других языках.
Ответ написан
@potan
Функциональный программист
Common Lisp
ООП там несколько другое, но вполне себе ООП.
Ответ написан
Комментировать
@vGrabko99
html, css, js, php, golang, mysql
golang и не нужны фреймворки. Всё есть с коробки
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы