Модераторы: LSD

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Python vs .NET 
V
    Опции темы
Lazin
Дата 24.5.2008, 22:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 3820
Регистрация: 11.12.2006
Где: paranoid oil empi re

Репутация: 4
Всего: 154



Цитата(Любитель @  24.5.2008,  22:47 Найти цитируемый пост)
PyQt защищаем. От ВинФормз

это-же ортогональные вещи, как их сравнивать? 
вот кстати интересная статья на тему smile

Добавлено через 40 секунд
Цитата(Fortop @  24.5.2008,  22:49 Найти цитируемый пост)
Ок smile договорились smile Тогда тебе нужны Java или .NET

приехали smile 
PM MAIL Skype GTalk   Вверх
Любитель
Дата 24.5.2008, 23:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Программист-романтик
****


Профиль
Группа: Комодератор
Сообщений: 3645
Регистрация: 21.5.2005
Где: Воронеж

Репутация: 5
Всего: 92



Цитата(Lazin @  24.5.2008,  22:53 Найти цитируемый пост)
это-же ортогональные вещи, как их сравнивать? 

Это две гуёвые либы (одна для питона, другая для дотНета). Вроде сабж - Питон vs .Net smile Почему ортогональные?


--------------------
PM MAIL ICQ Skype   Вверх
Lazin
Дата 24.5.2008, 23:30 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 3820
Регистрация: 11.12.2006
Где: paranoid oil empi re

Репутация: 4
Всего: 154



WF - это неотемлемая часть фреймверка, который называется .NET
Qt - сторонняя библиотека, которая имеет весьма слабое отношение к питону
PM MAIL Skype GTalk   Вверх
nerezus
Дата 24.5.2008, 23:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Вселенский отказник
****


Профиль
Группа: Участник
Сообщений: 3330
Регистрация: 15.6.2005

Репутация: 13
Всего: 43



Цитата

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

Цитата

Ок  договорились  Тогда тебе нужны Java или .NET
 А почему не тот же питон? )

Цитата

Держи, и проверяй.
 
Код

array(3) {
  [0]=>
  int(0)
  [1]=>
  int(1)
  [2]=>
  int(2)
}
 Ч.Т.Д.

Цитата

WF - это неотемлемая часть фреймверка, который называется .NET
Qt - сторонняя библиотека, которая имеет весьма слабое отношение к питону
 Ну так не Qt, а PyQT.


--------------------
Сообщество художников Artsociety.ru
PM MAIL WWW   Вверх
Любитель
Дата 25.5.2008, 00:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Программист-романтик
****


Профиль
Группа: Комодератор
Сообщений: 3645
Регистрация: 21.5.2005
Где: Воронеж

Репутация: 5
Всего: 92



Цитата(Lazin @  24.5.2008,  23:30 Найти цитируемый пост)
WF - это неотемлемая часть фреймверка, который называется .NET
Qt - сторонняя библиотека, которая имеет весьма слабое отношение к питону

Речь про PyQt - один из типичных вариантов (ИМХО - лучший вариант) гуев для питона.



--------------------
PM MAIL ICQ Skype   Вверх
Kefir
Дата 25.5.2008, 01:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


«Hakuna Matata»
***


Профиль
Группа: Комодератор
Сообщений: 1878
Регистрация: 25.1.2003
Где: Tampere, Suomi

Репутация: 4
Всего: 87



Цитата(Любитель @  24.5.2008,  22:42 Найти цитируемый пост)
Налезать друг на друга - точно не позволит smile А дальше - смотря что больше нравится. Либо ограничение ресайза, либо ресайз кнопок по высоте и т. д. 

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

Цитата(Любитель @  24.5.2008,  22:47 Найти цитируемый пост)
Lazin, дык мы типа это... PyQt защищаем. От ВинФормз smile 

нет уж, это я винформс пытаюсь оградить от QTшников  smile 
PM MAIL WWW Skype   Вверх
Любитель
Дата 25.5.2008, 01:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Программист-романтик
****


Профиль
Группа: Комодератор
Сообщений: 3645
Регистрация: 21.5.2005
Где: Воронеж

Репутация: 5
Всего: 92



Цитата(Kefir @  25.5.2008,  01:06 Найти цитируемый пост)
хосспади, от привязались. смутно помню, что где-то была какая-то пимпочка а-ля авто прокрутка.

В ВинФормз нормальных лейоут-менеджером нет. Всё делается в стиле VCL (ИМХО такой стиль родился там). В WPF - я думал (уж не знаю почему), что должны быть нормальные лейоуты. Не знаю - не смотрел. Привязываться никто не собирался - вопрос был твой (про поведение куте) ;)


--------------------
PM MAIL ICQ Skype   Вверх
Fortop
Дата 25.5.2008, 05:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2200
Регистрация: 13.11.2007
Где: Донецк

Репутация: нет
Всего: 42



Цитата(nerezus @  24.5.2008,  23:40 Найти цитируемый пост)
 А почему не тот же питон? )

Потому что тебе были нужны полноценные приложения, а не скрипты smile

Цитата(nerezus @  24.5.2008,  23:40 Найти цитируемый пост)

Код

array(3) {
  [0]=>
  int(0)
  [1]=>
  int(1)
  [2]=>
  int(2)
}

Ч.Т.Д.

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


--------------------
Мир это Я.
Живее всех живых.
PM MAIL   Вверх
nerezus
Дата 25.5.2008, 08:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Вселенский отказник
****


Профиль
Группа: Участник
Сообщений: 3330
Регистрация: 15.6.2005

Репутация: 13
Всего: 43



Цитата

Это у тебя оба вызова распечатали?  
 Нет, только когда функция отдает массив. Я именно про это и говорил.
Вот:
Цитата(nerezus)

Код

function s() {
  return array(0, 1, 2);
}
echo s()[0];

s() - это массив, но мы не можем с него взять элемент. А почему?


Цитата

Потому что тебе были нужны полноценные приложения, а не скрипты 
 [skipped]-копать )
А теперь ты может все-таки ответишь, чем эта IDE не полноценное приложение?
скриншот IDE(среда разработки, если что):

user posted image

Цитата

А про перегрузку операторов все же рекомендую почитать  плаваешь в этом вопросе слегка.
 Гыгы ) Где ты тут видел перегруженные операторы?
Если ты не заметил, то в прошлом примере я тебе специально привел код на жабе, где перегрузка впринципе невозможна.


--------------------
Сообщество художников Artsociety.ru
PM MAIL WWW   Вверх
Fortop
Дата 25.5.2008, 13:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2200
Регистрация: 13.11.2007
Где: Донецк

Репутация: нет
Всего: 42



Цитата(nerezus @  25.5.2008,  08:02 Найти цитируемый пост)
Нет, только когда функция отдает массив. Я именно про это и говорил.
Вот:

Ты серьезно, не отличаешь результат от действия?

Цитата(nerezus @  25.5.2008,  08:02 Найти цитируемый пост)
Гыгы ) Где ты тут видел перегруженные операторы?
Если ты не заметил, то в прошлом примере я тебе специально привел код на жабе, где перегрузка впринципе невозможна

Начнем с того что echo это даже не фукнция, а языковой конструкт.
Да бог с ним. 
Про типизацию в Java, которую ты тупо опустил, и которая и разрешает тебе заниматься извращениями только там, где можно....
Мы то же промолчим.

Но неужели ты наивно полагаешь, что для того чтобы оператор мог быть применен к чему-либо, операнд не должен быть поддерживаемого им типа?

И как еще называется сие таинство, когда один и тот же оператор позволяет совершать действия с разными типами данных?

Нет, я конечно понимаю, что великий Python, просто не дает возможности задуматься о том, как это действительно происходит. Но все же.
Может подумать?

Массив не появляется из ниоткуда, он является результатом вызова функции. Сам результат функции у тебя не предопределен, в отличии от той же Java. Задача PHP быстрый старт, короткая работа и финиш. Именно то, что нужно для веб. Именно поэтому синтаксический анализатор в PHP упрощен - функция просто отдает результат, а оператор не перегружен и [] работает только с структурами данных.


--------------------
Мир это Я.
Живее всех живых.
PM MAIL   Вверх
nerezus
Дата 25.5.2008, 13:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Вселенский отказник
****


Профиль
Группа: Участник
Сообщений: 3330
Регистрация: 15.6.2005

Репутация: 13
Всего: 43



Цитата

Ты серьезно, не отличаешь результат от действия?
 Ты уверен, что я?
функция - это s.
s() - уже результат.

Цитата

И как еще называется сие таинство, когда один и тот же оператор позволяет совершать действия с разными типами данных?
 Перегрузка. Но при чем тут это? Ни в пхп ни в джаве ее нет, и я привел пример именно на джаве по этой причине.
Есть она в других языках, но нам пока мы обсуждаем пхп, на это должно быть монопенисуально.


Цитата

Но неужели ты наивно полагаешь, что для того чтобы оператор мог быть применен к чему-либо, операнд не должен быть поддерживаемого им типа?
 Должен.
Но массивы в пхп поддерживают []. Если ты не веришь, что s() имеет тип массива - сделай var_dump(s()).
И именно к s()(что есть array) я применяю[].
Реально, сделай var_dump() и проверь.


Цитата

Потому что тебе были нужны полноценные приложения, а не скрипты 
 Я 2 раза показал пример скрипта. Что в этой программе неполноценного?


--------------------
Сообщество художников Artsociety.ru
PM MAIL WWW   Вверх
Fortop
Дата 25.5.2008, 14:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2200
Регистрация: 13.11.2007
Где: Донецк

Репутация: нет
Всего: 42



nerezus, ты меня удивляешь :( очень неприятно удивляешь.

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

Цитата(nerezus @  25.5.2008,  13:23 Найти цитируемый пост)
Я 2 раза показал пример скрипта. Что в этой программе неполноценного?

Свое определение "скрипта" я приводил несколькими страницами ранее. Ты уверен, что IDE это скрипт?

Цитата(nerezus @  25.5.2008,  13:23 Найти цитируемый пост)
Но массивы в пхп поддерживают []. Если ты не веришь, что s() имеет тип массива - сделай var_dump(s()).
И именно к s()(что есть array) я применяю[].
Реально, сделай var_dump() и проверь.

Функции в PHP не типизированы. Ты этого не знал?

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

function s() {
  return array(0, 1, 2);
}


Поработай с вот такой
Код

function realfunction($param) {
  return $param;
}

И сообщи какого она типа. Массив, целоцисленная или вообще объект.

Цитата(nerezus @  25.5.2008,  13:23 Найти цитируемый пост)
Ты уверен, что я?
функция - это s.
s() - уже результат.

Да, теперь уже уверен.

Объясняю на пальцах.

s - функция, 
s() - операция вызова/обращения к функции.
и лишь то, что она вернет - является результатом.

Оператор [] в PHP не перегружен для работы напрямую с вызовами функций.


Цитата(nerezus @  25.5.2008,  13:23 Найти цитируемый пост)
Перегрузка. Но при чем тут это? Ни в пхп ни в джаве ее нет, и я привел пример именно на джаве по этой причине.
Есть она в других языках, но нам пока мы обсуждаем пхп, на это должно быть монопенисуально.

Гм, ты уверен, что перегрузка, это только то, что делаешь лично ты? А разработчики языков не могли заранее перегрузить некоторые операторы?


--------------------
Мир это Я.
Живее всех живых.
PM MAIL   Вверх
nerezus
Дата 25.5.2008, 15:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Вселенский отказник
****


Профиль
Группа: Участник
Сообщений: 3330
Регистрация: 15.6.2005

Репутация: 13
Всего: 43



Цитата

Ты уверен, что IDE это скрипт?
 Уверен. Исходник можешь посмотреть - его стартовый файл я открыл на той же картинке.
Цитата

Свое определение "скрипта"
 А может сосед у меня скриптом жопу называет? И кстати имеет право, но его жопа от этого не становится скриптом.
Что такое скрипт можно прочитать тут: http://en.wikipedia.org/wiki/Scripting_language

Цитата

A scripting language, script language or extension language, is a programming language that controls a software application. "Scripts" are often treated as distinct from "programs", which execute independently from any other application. At the same time they are distinct from the core code of the application, which is usually written in a different language, and by being accessible to the end user they enable the behavior of the application to be adapted to the user's needs. Scripts are often, but not always, interpreted from the source code or "semi-compiled" to bytecode which is interpreted, unlike the applications they are associated with, which are traditionally compiled to native machine code for the system on which they run. Scripting languages are nearly always embedded in the application with which they are associated.

Вполне подходит под определение ;)

Цитата

Функции в PHP не типизированы. Ты этого не знал?
 Знал, но как это относися к делу?

Цитата

И сообщи какого она типа. Массив, целоцисленная или вообще объект.
 Динамического.
Поэтому [] должно было бы бросить ошибку когда тип не массив. А оно бросает всегда. Даже когда массив.

Цитата

Про типизацию в Java, которую ты тупо опустил, и которая и разрешает тебе заниматься извращениями только там, где можно....
 Я не занимался извращениями. Я просто взял элемент с массива.
Ну да, все они говноязыки: C, C++, C#, Java, Python и десятки прочих.
А PHP истинно правильный язык! Если что-то не работает, то это так и должно быть, а если это "что-то" работает везде - то тогда все остальные извращенцы.

Ты это хочешь сказать?

Вот тебе:
Код

def s():
    return [5, 6, 665]
s()[1]


Код

public class Test {
    
    public static int[] getInts() {
        int[] ints = new int[3];
        ints[0] = 5;
        ints[1] = 6;
        ints[2] = 665;
        return ints;
    }
    
    public static void main(String[] args) {
        System.out.println(getInts()[1]);
    }
}



Код

#include <stdio.h>

int a[] = {5, 6, 666};

int* s() {
    return a;
}

int main() {
    printf("%d\n", s()[1]);
    return 0;
}


Код

class Program
{
    static int[] s()
    {
        int[] ints = new int[3];
        ints[0] = 5;
        ints[1] = 6;
        ints[2] = 665;
        return ints;
    }

    static void Main(string[] args)
    {
        System.Console.WriteLine(s()[1]);
    }
}


Добавлено через 3 минуты и 50 секунд
В том же C типизация слабая. Как и в пхп.
В том же питоне типизация динамическая. Как и в пхп.

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


--------------------
Сообщество художников Artsociety.ru
PM MAIL WWW   Вверх
source777
Дата 25.5.2008, 15:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1878
Регистрация: 12.3.2007

Репутация: нет
Всего: 56



Цитата(archimed7592 @ 24.5.2008,  19:24)
Цитата(Kefir @  24.5.2008,  18:23 Найти цитируемый пост)
в общем солюшын тут.

user posted image
Классный у вас лэйаут-менеджер smile.
(это тебе так, к сведению)
И ещё пара тестов ваших лэйаутов на вшивость:
1. какие тебе усилия понадобятся, чтобы сгенерить такую штуку динамически(допустим, что ты не знаешь заранее сколько будет строк, сколько столбцев.
2. что будет с tabOrder'ом если ты, скажем, динамически впихнёшь строку в лэйаут и не позаботишься о нём?

тут не лэйаут-менеджер, а Kefir виноват, что минимальные размеры окна не задал...

А так с динамической компоновкой в .NET никаких проблем, особенно в WPF:
Вот вам XAML разметка, создающее окно со столбиком из надписей, полей ввода и кнопок и двумя кнопками внизу. При уменьшении размеров окна появляется вертикальная полоса прокрутки и горизонтальный ресайз, вплоть до того момента пока размеры окна не достигнут минимально допустимых... Так что модель компоновки QT абсолютно ничем не лучше, более того MS её подчистую слизала с QT и внесла собственные дополнения и улучшения...
Код

<Window x:Class="WpfApplication1.Window1"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    Title="Window1" Height="250" Width="400" MinHeight="150" MinWidth="250" Loaded="Window_Loaded">
    <Grid Name="mainGrid">
        <Grid.RowDefinitions>
            <RowDefinition Height="*" />
            <RowDefinition Height="45" MinHeight="45" />
        </Grid.RowDefinitions>
        <StackPanel Grid.Row="2" Margin="3" Name="stackPanel1" Orientation="Horizontal" HorizontalAlignment="Right">
            <Button Name="bOK" Margin="3,10,3,3" Width="70">OK</Button>
            <Button Name="bCancel" Margin="3,10,3,3" Width="70">Cancel</Button>
        </StackPanel>
        <ScrollViewer CanContentScroll="True" Name="scrollViewer1" VerticalScrollBarVisibility="Auto" VerticalAlignment="Top" >
            <Grid Name="grid1" Margin="3,3,10,3">
                <Grid.ColumnDefinitions>
                    <ColumnDefinition Width="Auto" />
                    <ColumnDefinition Width="*" />
                    <ColumnDefinition Width="Auto" MinWidth="70" />
                </Grid.ColumnDefinitions>
                <Grid.RowDefinitions>
                    <RowDefinition Height="Auto" />
                    <RowDefinition Height="Auto" />
                    <RowDefinition Height="Auto" />
                    <RowDefinition Height="Auto" />
                    <RowDefinition Height="*" />
                </Grid.RowDefinitions>
                <Label Grid.Column="0" Grid.Row="0" HorizontalAlignment="Left" Margin="10, 3">Label</Label>
                <TextBox Grid.Column="1" Grid.Row="0" Name="textBox1" Margin="3" />
                <Button Grid.Column="2" Grid.Row="0" Name="button1" Margin="3">...</Button>               
                <Label Grid.Column="0" Grid.Row="1" HorizontalAlignment="Left" Margin="10, 3">Label</Label>
                <TextBox Grid.Column="1" Grid.Row="1" Name="textBox2" Margin="3" />
                <Button Grid.Column="2" Grid.Row="1" Name="button2" Margin="3">...</Button>
                <Label Grid.Column="0" Grid.Row="2" HorizontalAlignment="Left" Margin="10, 3">Label</Label>
                <TextBox Grid.Column="1" Grid.Row="2" Name="textBox3" Margin="3" />
                <Button Grid.Column="2" Grid.Row="2" Name="button3" Margin="3">...</Button>
                <Label Grid.Column="0" Grid.Row="3" HorizontalAlignment="Left" Margin="10, 3">Label</Label>
                <TextBox Grid.Column="1" Grid.Row="3" Name="textBox4" Margin="3" />
                <Button Grid.Column="2" Grid.Row="3" Name="button4" Margin="3">...</Button>
            </Grid>
        </ScrollViewer>
    </Grid>
</Window>



P.S. При желании всё то же самое можно сделать кодом, который будет концептуально похож на приводимые выше для QT - то же создание контейнеров, то же размещение элементов управления по ним... Однако наметилось разделение труда: интерфейс рисуют дизайнеры, а программисты пишут код и это правильно, ибо не гоже программистам такими мелочами себя отвлекать как рисование интерфейсов будь то кодом, будь то программой-дизайнером... Поэтому я лично в шоке, что вы тему выбора платформы для программиста свели к теме - где проще кнопочки по формам расставлять...

P.P.S. По первоначальной теме: я лично не понимаю почему автору надо выбрать что-то одно? Надо программировать с использованием языка/платформы, а не под конкретный язык/платформу...

Это сообщение отредактировал(а) source777 - 25.5.2008, 15:57


--------------------
Если бы программистам платили за то, чтобы убирать код из программы вместо того, чтобы добавлять его, программы были бы намного лучше © Николас Негропонте
PM MAIL   Вверх
nerezus
Дата 25.5.2008, 15:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Вселенский отказник
****


Профиль
Группа: Участник
Сообщений: 3330
Регистрация: 15.6.2005

Репутация: 13
Всего: 43



Цитата

Гм, ты уверен, что перегрузка, это только то, что делаешь лично ты? А разработчики языков не могли заранее перегрузить некоторые операторы?
 Какие? У массива [] есть по дефолту.
В пхп и питоне во время исполнения это проверяется.
В сишарпе, жабе, C, C++ - на этапе компиляции.

На примере C: там вообще [] - не оператор по сути, а средство для рассчета адреса. Но оно работает! Потому что по логике должно.
Это начало 70х годов, естественно никаких терминов вроде перегрузки тогда не было.

Теперь вопрос для пхп:
Ты говоришь, что мы не знаем заранее, какого типа результат и поэтому не можем по нему сделать[].
Тогда почему работает код(мы ведь не знаем тип a, а вдруг оно не массив?):
Код

a = s();
echo a[1];


Добавлено через 2 минуты и 14 секунд
Цитата

 что минимальные размеры окна не задал...
 А разве оно не должно заранее определяться какминимальный размер его элементов(рекурсивно)? По логике должно.


--------------------
Сообщество художников Artsociety.ru
PM MAIL WWW   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила ведения Религиозных войн
Smartov
1. Уважайте собеседника
2. Собеседник != враг
3. Старайтесь воздерживаться от тем вида "Windows Rulez" или "Linux Rulez"

С уважением, Smartov.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Религиозные войны | Следующая тема »


 




[ Время генерации скрипта: 0.1346 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.