LINUX.ORG.RU

[Python] Real-time Python IDE

 


0

0

Просьба перед тем как отвечать, внимательно прочитать что требуется именно. Спасибо :)

И так, разыскивается продвинутая IDE для Python, по ф-алу как Eclipse для Java. И так, немного объясню что мне нужно.

Самый первый мой ЯП был C++, поэтому я без проблем писал в продвинутых блокнотах. Когда начал писать на Java да к тому же на Eclipse, я понял как много я потерял времени когда писал в «блокнотах».
Что мне понравилось:

1. Автокомплит - это умеют все IDE, ничего особенного
2. Real-time autocompile - не знаю как правильно это назвать, но значит это то, что IDE а режиме реального времени компилит вашу прогу и смотрит какие методы доступны на данный момент. То есть не просто синтаксис, или обычные методы из объекта, а даже тогда, когда вы наследовали клас из суперкласа, потом пропустили его через 7 кругов ада, и вот вам IDE не говорит что ничего из автокомплита предложить вам не может (так как для нее это за сложно), а смотрит (компилит в фоновом режиме и наверное через reflection) и говорит что вот доступный еще один метод.

Это именно то что я не могу найти ни в одной IDE для других ЯП (python, ruby)

Если кто-то писал хоть раз в жизни на Eclipse Java, он поймет что мне нужно.

Я искал в инете по ключевым словам типа real time compiling autocompele, но ничего так и не нашел.

3. Это в принципе похоже на пункт 2, но такое только видел в IDEA Python, в других не встречал. Это ошибки в real-time пока пишешь. То есть поставил точку, оно не просто разчехлило по синтаксису что это плохо, а методом компиляции подчеркнуло тебе это место красным цветом.
Это тоже очень важно для успешной быстрой разработки.
Напр, Eclipse PyDev такое делает только после сохранения файла.

И так список из того что я пробовал:

Eclipse PyDev - пока что лучший выбор
Netbeans
IDEA

думаю про редакторы тут лучше не говорить.

Кто что может предложить?

> Это именно то что я не могу найти ни в одной IDE для других ЯП (python, ruby)

Если кто-то писал хоть раз в жизни на Eclipse Java, он поймет что мне нужно.

А сколько IBM вложила денег в инкрементальный Java компилятор, который в Eclipse JDT? Кто еще может себе такое позволить? Похоже никто, так что другие ЯП пока такой поддержки от IDE не имеют.

kamre ★★★
()
Ответ на: комментарий от dimon555

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

class A:
    def method1(self):
        return "A: method1"

def method2(self):
    return "DEF: method2"

A.method2 = method2

x = A()
print (x.)

#Python 3

там после x. попробуйте автокомплит, и скажите подтянет ли. Eclipse PyDev напр. не подтягивает.

EinsamerWolf
() автор топика

>Это именно то что я не могу найти ни в одной IDE для других ЯП (python, ruby)

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

Напр, Eclipse PyDev такое делает только после сохранения файла.


PyDev должен уметь pyflakes

Это тоже очень важно для успешной быстрой разработки.


Ну если зрение -5 и руки трясутся так, что набираешь что попало - тогда да. Очень важно.

volh ★★
()
Ответ на: комментарий от kamre

То есть, та фича которую я так хочу увидить называеться в Java инкрементный компилятор? В инете не много нашел на эту тему:

Инкрементный компилятор, позволяет собирать проект, даже если некоторые его классы ещё не компилируются. Является частью популярной Java IDE Eclipse и был построен на технологиях, полученных от IBM-овского проекта VisualAge for Java Compiler Так же как и jikes, в процессе компиляции по умолчанию выводятся warning-и аналогичные тем, что можно видеть в самом Eclipse Java IDE.

EinsamerWolf
() автор топика
Ответ на: комментарий от EinsamerWolf

> То есть, та фича которую я так хочу увидить называеться в Java инкрементный компилятор?

Нет. Для Питона такое практически невозможно (а может, и теоретически тоде). Питон слишком динамичен.

tailgunner ★★★★★
()
Ответ на: комментарий от kamre

>А сколько IBM вложила денег в инкрементальный Java компилятор, который в Eclipse JDT? Кто еще может себе такое позволить?

вы удивитесь, но JetBrains. Более того, они осилили инкрементальную компиляцию я для Groovy. И - сюрприз - это всё доступно под APL2.0

thevery ★★★★
()

>Это именно то что я не могу найти ни в одной IDE для других ЯП (python, ruby)

RubyMine разве не умеет подобное?

thevery ★★★★
()
Ответ на: комментарий от volh

> Java IDE написаны на Java и пользуются возможностями интроспекции языка для таких вещей.

Если имеется ввиду reflection, то он как раз в IDE не используется.

kamre ★★★
()
Ответ на: комментарий от thevery

>А сколько IBM вложила денег в инкрементальный Java компилятор, который в Eclipse JDT? Кто еще может себе такое позволить?

вы удивитесь, но JetBrains.

А разве IDEA имеет свой компилятор для Java? Ей же JDK нужен, сама она только парсить исходники и строить индексы умеет.

kamre ★★★
()
Ответ на: комментарий от EinsamerWolf

> В инете не много нашел на эту тему:

http://en.wikipedia.org/wiki/Incremental_compiler

For most incremental compilers, compiling a program with small changes to its source code is usually near instantaneous. It can be said that an incremental compiler reduces the __granularity__ of a language's traditional compilation units while maintaining the language's semantics, such that the compiler can append and replace smaller parts.

kamre ★★★
()

>Real-time autocompile - не знаю как правильно это назвать, но значит это то, что IDE а режиме реального времени компилит вашу прогу и смотрит какие методы доступны на данный момент. То есть не просто синтаксис, или обычные методы из объекта, а даже тогда, когда вы наследовали клас из суперкласа, потом пропустили его через 7 кругов ада, и вот вам IDE не говорит что ничего из автокомплита предложить вам не может (так как для нее это за сложно), а смотрит (компилит в фоновом режиме и наверное через reflection) и говорит что вот доступный еще один метод.

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

Laz ★★★★★
()

>Это именно то что я не могу найти ни в одной IDE для других ЯП (python, ruby)

В смолтоковых есть

yoghurt ★★★★★
()

Не понимаю, нафига это надо для скриптового языка

kto_tama ★★★★★
()

Кстати, а ведь JetBrains готовит PyCharm, вроде 1.0 релиз есть, а новостей нет. гхм.

volh ★★
()

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

Полноценный комплит на языках типа питон невозможен в принцепе потому что:

def som_func(predecate):
  if predecate():
    return true
  return "hello"

some_func(func).?

и пусть func - произвольная функция

]

Очевидно, что в таком случае НАКАКАЯ иде ТЕОРЕТИЧЕСКИ на определит тип не выполнив программу, которая может и зависнуть. На самом деле динамеческая типизация не нужна - нужен качественный type inference и DSLи

theos ★★★
()
Ответ на: комментарий от golodranez

>QtCreator умеет такое.

Нет, не умеет. Для С++ такого вообще за обозримое время и обозримые деньги скорее всего не написать...

theos ★★★
()
Ответ на: комментарий от theos

Кстати, QtCreator вообще не компилятор что бы уметь что-то компилировать как бы то нибыло ;)

theos ★★★
()
Ответ на: комментарий от theos

>Нет, не умеет. Для С++ такого вообще за обозримое время и обозримые деньги скорее всего не написать...

Ты попробуй, а потом говори. То что просит топик стартер QtCreator выполняет на ура, не для питона конечно:)) И компиляторы тут не причём.

golodranez ★★★★
()
Ответ на: комментарий от EinsamerWolf

там после x. попробуйте автокомплит, и скажите подтянет ли. Eclipse PyDev напр. не подтягивает.

In [1]: class A: 
   ...:     def method1(self): 
   ...:         return "A: method1"
   ...: 

In [2]: def method2(self): 
   ...:     return "DEF: method2"
   ...: 

In [3]: A.method2 = method2

In [4]: x= A()

In [5]: print(x.)
x.__class__   x.__doc__     x.__module__  x.method1     x.method2     

In [5]: print(x.)

Это ipython.

a3
()
Ответ на: комментарий от a3

> Это ipython.

Если что - ipython выполняет программу, поэтому может сделать идеальный автокомплит.

tailgunner ★★★★★
()
Ответ на: комментарий от a3

Чесно говоря не понимаю сдесь пару нюансов:

1. Сюдя по всему, вы использовали консоль. Каким образом вы заюзали автокомпит. Если нет, тот как вывелось вот это:

x.__class__ x.__doc__ x.__module__ x.method1 x.method2

а то у меня дает ошибку, если так прям и написать print(x.) (как в вашем примере):

In [6]: print (x.)
------------------------------------------------------------
   File "<ipython console>", line 1
     print (x.)
              ^
SyntaxError: invalid syntax


In [7]: 

2. Настроил ironpython в Eclipse PyDev (под вендой, в линухе почему-то упорно не хочет), все равно видет только метод method1.

EinsamerWolf
() автор топика
Ответ на: комментарий от EinsamerWolf

а то у меня дает ошибку, если так прям и написать print(x.) (как в вашем примере):

Так это, там где нужен автокомплит надо Tab нажимать, а не отправлять писанину в интерпретатор :)

a3
()
Ответ на: комментарий от a3

Да, действительно работает. Но как написал tailgunner, это потому-что программа выполняеться на лету, поэтому автокомплит работает. Я напр, такое же смог сделать и с python3 интерпритатором, но писать через IDE (ironpython, jpython, python) то не работает.

EinsamerWolf
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.