Вверх ↑
Этот топик читают: Гость
Ответов: 1528
Рейтинг: 57
#16: 2013-12-10 22:04:02 ЛС | профиль | цитата
Предлагаю разрабатывать среду на Python, это не так ударит по времени разработки (не так сильно как разработка на C# или Java, не говоря уже о C++), плюс будет возможность использовать QT для интерфейса.
К тому же через Jython, среду разработки будет возможно переписать для Android, кстати говоря переписать это на том же языке Python.
А в дальнейшем можно сделать отдельную реализацию оригинальной Python+QT версии на Java со своими плюшками. Снова через Jython, переписав интерфейс на том же языке Python на JavaFX2.

Вот несколько образцово показательных примеров мощи данного языка:

1) парсинг конфига синхронизации времени ntp.conf в linux
Данная строка кода открывает и читает файл в цикле по 1 строке.
Условие if проверяет что строка не начинается с символа комментария "#", и что строка не является переводом на следующую строку
Т.е. строка парсит все параметры конфига, фильтруя пустые и закомментированные строки.

#cpp
ntp = [line.strip() for line in open(ntp_conf, 'r+') if not line.startswith('#') and '\r\n' != line != '\n']
или вот
2) парсинг директории с mp3 файлами с фильтрацией
list_dir - массив всех имён файлов в директории
all_playlist - массив имён песен из текущих плейлистов

фильтрация состоит из проверочной функции(lambda) возвращающей True\False и массива проверяемых фильтруемых значений.
в данной строке кода:
массив list_dir фильтруется так, чтобы в mp3_files попали только имена файлов содержащие последними символами в имени ".mp3"
и не попали файлы со словами в имени '00R' or '00P' or 'TISHINA' or 'FANTOM'
либо не попали файлы содержащиеся в текущих плейлистах all_playlist

#cpp
mp3_files = filter(lambda x: x.endswith('.mp3') and not ('00R' or '00P' or 'TISHINA' or 'FANTOM') in x and not x in all_playlist, list_dir)

Далее, найдёт "аб" в строке "абвг"
#cpp
if "аб" in "абвг"

найдёт 11 в массиве
#cpp
if "11" in ["111","11","22","12"]

Как видно возможности широчайшие, если конечно вы цените своё время. И не зацикливаетесь на скорости приложения.
Для тех кто память по затраченным килобайтам считает, питон не такой прожорливый по памяти как C# или Java, вполне реально что приложение может есть не более 10-20 мб ОЗУ, за вычетом QT конечно, с ним сложно предсказать.

ну и плюс, поддерживается ручное управление памятью через оператор "del объект"
карма: 0

0
Ответов: 498
Рейтинг: 39
#17: 2013-12-10 22:47:20 ЛС | профиль | цитата
hitman249 писал(а):
поддерживается ручное управление памятью через оператор "del объект"

С каких пор?
hitman249 писал(а):
если конечно вы цените своё время.

Быстрее на том что уже знаешь.
В примерах читабельность зашкаливает, лучше написать несколько строк, чем 1 непонятную.
карма: 0

0
Ответов: 1821
Рейтинг: 168
#18: 2013-12-10 22:57:51 ЛС | профиль | цитата
hitman249, а структуры? Как обстоят дела со структурами?
карма: 5

0
Ответов: 1528
Рейтинг: 57
#19: 2013-12-11 07:23:54 ЛС | профиль | цитата
Muz-Tv,
Muz-Tv писал(а):
С каких пор?
не знаю с каких, этот оператор уже очень давно есть, даже в PHP есть свой "unset(объект)"

Muz-Tv писал(а):
Быстрее на том что уже знаешь.

не вводите людей в заблуждение, это не так
мелкую программу да, крупный проект нет, и всегда будет чаще нет, чем да

ну и вы плохо знаете питон чтобы делать такие выводы, у питона мощный вывод ошибок, что намного упрощает разработку.



а что с читабельностью не так? отлично всё читается
if-ы во всех языках так смотрятся, тоже самое и for-ы
к тому же тут всё без подсветки, а в нормальных IDE например PyCharm или IntelliJ IDEA, всё выглядит чётко и понятно.

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

sаmakacd, там этих структур куча, есть аналог массивов PHP (ключ=значение), есть похожий аналог явовского List со своим методом .append()
их даже вместе слепить не составило труда(Языки). Можно использовать библиотеки явы как родные питоновские вот оцени

отдельно хочу отметить, IntelliJ IDEA через плагин умеет понимать питон и корректно скрещивать ява код в коде питона с подсветкой, автокомплитом и прочим.

Примеры питон-кода:
Списки:
#cpp
stack = [3, 4, 5]
stack.append(6)
или
#cpp
mat = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
mat.append([[10],[11],[12]])
или даже так
#cpp
mat = 1,2,3,4,'слово',True
mat[4] #'слово'
Ну и итерировать список(массив) с генерацией индекса можно так
#cpp
>>> for i, v in enumerate(['tic', 'tac', 'toe']):
... print i, v
...
0 tic
1 tac
2 toe

Кортежи:
#cpp
cort = ((1,2),(3,4))
Кортежи можно вот так забавно итерировать
#cpp
for x,y in cort:
print str(x) + '-' + str(y) # 1-2

А теперь интересней, аналог PHP, словарь:
#cpp
>>> tel = {'jack': 4098, 'sape': 4139}
>>> tel['guido'] = 4127
>>> tel
{'sape': 4139, 'guido': 4127, 'jack': 4098}
>>> tel['jack']
4098

Конвертирование кортежа в словарь
#cpp
slovar = dict([('sape', 4139), ('guido', 4127), ('jack', 4098)])
slovar # {'sape': 4139, 'jack': 4098, 'guido': 4127}

Присвоение нескольким переменным кортеж:
#cpp
x,y = (1,2)
print x # 1
print y # 2
карма: 0

0
Гость
Ответов: 17029
Рейтинг: 0
#20: 2013-12-11 09:25:34 правка | ЛС | профиль | цитата


Редактировалось 2 раз(а), последний 2017-06-14 22:24:26
карма: 0

0
Ответов: 1528
Рейтинг: 57
#21: 2013-12-11 10:20:13 ЛС | профиль | цитата
109-184-139-81.dynamic.mt, ну и пиши на своих C# тогда. раз такое дело.
я не академик к словам цепляться.



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

думаю для кого-то информация будет полезна
карма: 0

0
Разработчик
Ответов: 4698
Рейтинг: 426
#22: 2013-12-12 01:22:08 ЛС | профиль | цитата
[offtop]hitman249, ты все уговариваешь на яву/питон среду переписать? [/offtop]
ИМХО, CirDos, для серьезного приложения, вроде конструктора, где быстродействие играет не последнюю роль, языки вроде явы или питона не подойдут, тут нужны компилируемые языки. Насчет C# не знаю, слышал, у них в перемешку с нативным кодом байт-коды, так что утверждать не стану. Однако с применением .NET пишут даже игры, так что для среды должно сойти.
карма: 10
0
Ответов: 704
Рейтинг: 44
#23: 2013-12-12 01:36:17 ЛС | профиль | цитата
hitman249 писал(а):
ну и пиши на своих C#

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

0
Ответов: 1528
Рейтинг: 57
#24: 2013-12-12 07:08:41 ЛС | профиль | цитата
Assasin,
1) о каком быстродействии идёт речь? есть какие-то проблемы с быстродействием?
2) про игры заключил так заключил игр на java в тысячи раз больше(android), на питоне есть RPG-шки, Battelfild 4 тот же. только вот написание игр на этих языках ни разу не говорит о их реальном быстродействии.


Assasin писал(а):
ты все уговариваешь на яву/питон среду переписать?

специально ведь написал!
hitman249 писал(а):
будто я кого-то принуждаю кодить на каком-то конкретном языке.
воспринимайте это как отчет по анализу возможностей различных языков.



Kazbek17 писал(а):
А почему вас вводит заблуждение C#? и почему, выше вами написано, нельзя сделать такие же методы? может он вам туго дается?, не в обиду.
в основном чисто политическое, не хочу использовать продукт тролля который даже в ubuntu свои мифические патенты нашёл.
да и скорее всего в будущем этот язык умрёт, также как майкрософт закопала silverlight.
исходников языка на сколько мне известно нет, а майкрософт опенсорсным почти ничего не делает, а даже если и сделает, никто не будет нормально доводить язык который win-only.

положившись на C# на долгострочную перспективу вы берёте на себя огромные непредсказуемые риски.


Итог

уже надоело гнуть одно и тоже, что у вас всех с быстродействием случилось? среда даже на телефоне вряд ли будет тормозить.
что вы в ней нашли такого ресурсозатратного??
если в калькулятор добавить в 30 раз больше кнопок он от этого не станет есть ресурсов как Word.
Сама среда никаких вычислений практически не делает, а хиасмовый кодогенератор в Pyton-е вообще можно писать на чём угодно(язык)

Мне не понятна суть Ваша. Вы жертвуете не преувеличу сказать годами, чтобы на плюсах написать что-то не внятное и среднескоростное. Причем настолько, что если бы вы не знали изначально на чём это написано никто бы из вас и не понял что там в бэкенде: с++, питон или может быть даже ява?


Как бы всё, диалог на эту тему прошу закончить.
На чем хотите на том и пишите, я же писал.
карма: 0

0
Ответов: 498
Рейтинг: 39
#25: 2013-12-12 10:18:34 ЛС | профиль | цитата
CriDos делает на Lazarus причём тут C#.
------------ Дoбавленo в 10.18:
.NET уже давно компилирует в нативный код при 1 запуске.
карма: 0

0
Ответов: 1528
Рейтинг: 57
#26: 2013-12-13 13:42:57 ЛС | профиль | цитата
[offtop]м, про массивы и двоеточия забыл упомянуть кое-что

#cpp
>>> test = '1234567890'

>>> t = test[:6]
>>> t
'123456'

>>> t = test[6:]
>>> t
'7890'

#test.find() возвращает номер ячейки массива. отсчёт с 1
>>> t = test[:test.find('90')]
>>> t
'12345678'

>>> t = test[test.find('45'):]
>>> t
'4567890'

>>> t = test[:test.find('45')]
>>> t
'123'
[/offtop]
карма: 0

0
Ответов: 316
Рейтинг: 21
#27: 2013-12-13 14:29:44 ЛС | профиль | цитата
hitman249, Зачем флудить в теме, если есть желание что-то сделать - делай.
На той технологии которой тебе нравится.
Если б все так делали как говорят то уже наверно Hiasma с 3 было написано.
карма: 1

2
Голосовали:foksov, hitman249
Ответов: 5227
Рейтинг: 587
#28: 2013-12-13 15:03:16 ЛС | профиль | цитата
hitman249, какая то извращённая реализация синтаксиса, приходит на ум что современные яву предпочитают тем самым отсеивать кодеров. Впрочем это моё субъективное мнение.
карма: 4
Мой форум - http://hiasm.bbtalk.me/ схемы, компоненты...
2
Голосовали:foksov, hitman249
Ответов: 1528
Рейтинг: 57
#29: 2013-12-13 16:10:49 ЛС | профиль | цитата
andrestudio, я честно не знаю, вы на чём то кроме VBS писали?
или это Ваше чисто субъективное мнение основанное на стиле?

как и в C++ вы не обязаны на нём использовать все "финты",
само собой достаточно использовать только то что требуется в данном случае.
можно всё переписать так.
Как правило так будет выглядеть во всех остальных языках.

#cpp
test = '1234567890'

def getStart(find, string):
str = string.split(find)
return str[0]

def getEnd(find, string):
str = string.split(find)
return str[1]

def getStartIndex(num, string):
str = ''
i = 0
for char in string:
i = i + 1
if i < num+1:
str = str + char
else:
break

return str

def getEndIndex(num, string):
str = ''
str_len = len(string)
i = num-1
while True:
i = i + 1
if i < str_len:
str = str + string[i]
else:
break

return str

print getStart('67',test) # 12345
print getEnd('67',test) # 890
print getStartIndex(4, test) # 1234
print getEndIndex(4, test) # 567890
Т.е. вы совершенно свободно можете с привычным Вам удобством как и прежде рисовать такие портянки
------------ Дoбавленo в 16.10:
кому как но мой первый вариант лучше, хоть он вас и пугает
карма: 0

0
Ответов: 5227
Рейтинг: 587
#30: 2013-12-13 18:41:50 ЛС | профиль | цитата
hitman249, не надо лукавить test.find() это просто метод как ты не крути (в любом яву накрути свои и пользуйся), давай пример с многомерными массивами, перегруженными функциями и процедурами, не помешает поглядеть как там структурные типы выглядят.


карма: 4
Мой форум - http://hiasm.bbtalk.me/ схемы, компоненты...
0
Сообщение
...
Прикрепленные файлы
(файлы не залиты)