Главное меню
Мы солидарны с Украиной. Узнайте здесь, как можно поддержать Украину.

Java vs C#

Автор Karakurt, октября 8, 2010, 10:01

0 Пользователи и 1 гость просматривают эту тему.

Алексей Гринь

肏! Τίς πέπορδε;

RawonaM

Цитата: Алексей Гринь от декабря 23, 2010, 15:54
Цитировать
ЦитироватьХех В Visual Studio я только пишу "Di", как мне среда предлагает слово Dictionary.
Мне тоже предлагает. Но написано-то все-равно длинно остается.
И чаво?
И длинно читать. Сложнее на вид воспринимается, дольше понимать. И писать длинно, если интерактивно. Туда ВС не встроишь.
Чего спорить с явными преимуществами? Питон не тягается с с-шарпом по скорости выполнения, за это экономит время программисту.

Цитата: Алексей Гринь от декабря 23, 2010, 15:53
ЦитироватьТьфу, я имел в виду опциональные параметры нельзя. Бесит :(
Ввели в .NET 4, моно давно поддерживает, ещё в с начала 2010 г., вроде.
Знаю, что ввели, но мы работаем на 3.5. Все это поэтапное добавление бесит. Нельзя сразу сделать нормальный язык? Неужто не ясно, что перегружать функцию ради опциональных параметров — бред.

myst

Цитата: RawonaM от декабря 23, 2010, 15:53
Ну вот, теперь надо думать, присваешь ты переменной или свойству, если свойству, то там имплицитно может быть еще 150 действий быть.
Как ты это можешь перепутать?

RawonaM

Цитата: myst от декабря 23, 2010, 15:58
ЦитироватьНу вот, теперь надо думать, присваешь ты переменной или свойству, если свойству, то там имплицитно может быть еще 150 действий быть.
Как ты это можешь перепутать?
Хм... А ты ясновидящий? Что тут написано: Test.b = 2; ? Проперти или мембер? :)

myst

Цитата: RawonaM от декабря 23, 2010, 15:57
И длинно читать. Сложнее на вид воспринимается, дольше понимать.
:o Ты хочешь сказать, что птичий язык аббревиатур читать легче?

Цитата: RawonaM от декабря 23, 2010, 15:57
Чего спорить с явными преимуществами? Питон не тягается с с-шарпом по скорости выполнения, за это экономит время программисту.
Write-only софт не нужен.

myst

Цитата: RawonaM от декабря 23, 2010, 15:59
Хм... А ты ясновидящий? Что тут написано: Test.b = 2; ? Проперти или мембер? :)
Кто такой мембер? Ты же переменную со свойством собрался спутать? :what:

Алексей Гринь

Цитата: RawonaM от декабря 23, 2010, 15:53
ЦитироватьЧто значит просто присваиваешь? И то и другое — операция. У операции есть последствия, и их следует знать, прежде чем её применять. Это отмазкой копальхит. :)
Ну вот, теперь надо думать, присваешь ты переменной или свойству, если свойству, то там имплицитно может быть еще 150 действий быть.
p.s. Дело в том, что в дотнете не используют публичные поля вообще. Это моветон. Т.е. если ты вызываешь нечто, похожее на поле, извне определения класса, то это определённо свойство. Внутри определения класса конечно ты должен знать что и как быстро вызывается. Свойства по гайдлайну должны быть очень быстрыми, не больше пары строк. Так же и в яве в setProp (который, например, наследован от родителя и по спецификации ожидается быстрота) кто-то может поставить длинное вычисление в пять минут.
肏! Τίς πέπορδε;

myst

Цитата: Алексей Гринь от декабря 23, 2010, 16:03
p.s. Дело в том, что в дотнете не используют публичные поля вообще. Это моветон.
В Жабе та же фигня, только нормального синтаксиса нет.

RawonaM

Цитата: myst от декабря 23, 2010, 16:02
ЦитироватьХм... А ты ясновидящий? Что тут написано: Test.b = 2; ? Проперти или мембер? :)
Кто такой мембер? Ты же переменную со свойством собрался спутать? :what:
А какая разница, мембер или переменная? Ну на тебе переменную:
class bla
{
...
void T()
{
...
b = 2;
}
}

Переменная или свойство?

RawonaM

Цитата: myst от декабря 23, 2010, 16:00
ЦитироватьЧего спорить с явными преимуществами? Питон не тягается с с-шарпом по скорости выполнения, за это экономит время программисту.
Write-only софт не нужен.
Зачем врайт-онли? Короче, ниче вы не понимаете :)
На питоне я не буду гуи строить, но если мне надо че-то простенькое с текстом сделать, я уж лучше питоном воспользуюсь.

RawonaM

Цитата: Алексей Гринь от декабря 23, 2010, 16:03
p.s. Дело в том, что в дотнете не используют публичные поля вообще. Это моветон. Т.е. если ты вызываешь нечто, похожее на поле, извне определения класса, то это определённо свойство.
Это кстати тупость. Ужасно бесит код типа:

class C
{
private int _a;
public int a
{
set { _a = value; }
get { return _a; }
}
}


И в чем глубокий смысло? Где инкапсуляция и прочие прелести?

myst

Цитата: RawonaM от декабря 23, 2010, 16:06
class bla
{
...
void T()
{
...
b = 2;
}
}

Переменная или свойство?
В твоём примере это может быть всё что угодно: идентификатор типа, метода, пространства имён,...

myst

Цитата: RawonaM от декабря 23, 2010, 16:08
Зачем врайт-онли? Короче, ниче вы не понимаете :)
Я уже столько наелся птичьего кода. У меня аллергия. :)

Цитата: RawonaM от декабря 23, 2010, 16:08
На питоне я не буду гуи строить, но если мне надо че-то простенькое с текстом сделать, я уж лучше питоном воспользуюсь.
А что он умеет такого делать с текстом?

myst

Цитата: RawonaM от декабря 23, 2010, 16:12
class C
{
private int _a;
public int a
{
set { _a = value; }
get { return _a; }
}
}
Как, разве это до сих пор обязательно?

RawonaM

Цитата: myst от декабря 23, 2010, 16:14
В твоём примере это может быть всё что угодно: идентификатор типа, метода, пространства имён,...
Чёё?!

Цитата: myst от декабря 23, 2010, 16:16
ЦитироватьНа питоне я не буду гуи строить, но если мне надо че-то простенькое с текстом сделать, я уж лучше питоном воспользуюсь.
А что он умеет такого делать с текстом?
Все что в с-шарпе делается мульёнами строк. Еще мне нравится сетовая математическая нотация: [w for w in mydict if "ax" in w]. Делает жизнь прекраснее :)

RawonaM


myst


Алексей Гринь

Цитата: RawonaM от декабря 23, 2010, 15:57
Цитировать
Цитировать
ЦитироватьХех В Visual Studio я только пишу "Di", как мне среда предлагает слово Dictionary.
Мне тоже предлагает. Но написано-то все-равно длинно остается.
И чаво?
И длинно читать. Сложнее на вид воспринимается, дольше понимать. И писать длинно, если интерактивно. Туда ВС не встроишь.
Чего спорить с явными преимуществами? Питон не тягается с с-шарпом по скорости выполнения, за это экономит время программисту.
Согласно исследованием, глаз при чтении передвигается скачками от 1 до 20 знаков, хотя в среднем это около 10 знаков, а время затрачивается на каждый блок от 100 мс до 500 мс, в среднем 200 мс. Думаю, разница в сотню миллисекунд компенсируется временем на расшифровку аббревиатур типа dic_ht_sr_pr и листание обратно к первому определению, чтобы понять, что это вообще.
肏! Τίς πέπορδε;

Алексей Гринь

Цитата: Алексей Гринь от декабря 23, 2010, 15:56
Знаю, что ввели, но мы работаем на 3.5. Все это поэтапное добавление бесит. Нельзя сразу сделать нормальный язык?
Всё и сразу? А что питон не могли сделать сразу таким, какой он в версии 3000? Неужто хитрые планы ван Россума по выдою из хомячков денег? Нет, коммерческий софт развивается по тем же схемам, что и опенсорс. Нет предела совершенству - какую-то версию в какой-то момент надо уже выпускать, т.к. совершенствоваться можно долго и по сути бесконечно, а продукт нужно выставлять на обозрение уже сейчас.
肏! Τίς πέπορδε;

Алексей Гринь

Цитата: RawonaM от декабря 23, 2010, 15:57
Неужто не ясно, что перегружать функцию ради опциональных параметров — бред.
Забавно, что Хейлсберг как-то называл опциональные параметры перегрузкой для бедных. И надо ж тебе поди ж ты, сишарп оказался бедным языком :)
肏! Τίς πέπορδε;

Алексей Гринь

Хочется инкапсуляции? На геттеры и сеттеры можно разные модификаторы вешать. Привожу пример из жизни C# 3:

Цитироватьpublic SceneManager SceneManager { get; protected set; }

Эта одна строка является аналогом явового:

Цитироватьprivate SceneManager sceneMgr;
protected void setSceneManager(SceneManager sceneMgr) { this.sceneMgr = sceneMgr; }
public SceneManager getSceneManager() { return this.sceneMgr; }

Это определено в интерфейсе. Т.е. с точки зрения интерфейса мы менеджер сцены можем только читать. Но потомки-реализации интерфейса могут это свойство и менять. Простые поля, например, нельзя определять в интерфейсе (в яве, вроде, тоже). Зато свойства можно, т.к. это те же методы внутри.
Поэтому их можно сделать также виртуальным или абстрактным.

Цитата: myst от декабря 23, 2010, 16:17
ЦитироватьА что он умеет такого делать с текстом?
Все что в с-шарпе делается мульёнами строк. Еще мне нравится сетовая математическая нотация: [w for w in mydict if "ax" in w].
Всё это давно возможно и в C# посредством linq, например.
肏! Τίς πέπορδε;

Алексей Гринь

Цитата: RawonaM от декабря 23, 2010, 16:06
class bla
{
...
void T()
{
...
b = 2;
}
}

Переменная или свойство?
Свойств, пишущихся с маленькой буквы, не бывает :) (иначе это плохая практика) Здесь b это определённо или поле класса, или переменная, определённая в функции. Но это не проблема C# per se. Чтобы различать, я предпочитаю делать явное this.b для полей.
肏! Τίς πέπορδε;

myst

На самом деле пример совершенно надуманный, так как автор по-любому знает, что пишет, а читатель, если к этому моменту ещё не знает, то должен посмотреть определение, иначе дальнейший код ему будет непонятен. То есть как ни крути, проблемы нет.

RawonaM

Цитата: myst от декабря 23, 2010, 22:12
На самом деле пример совершенно надуманный, так как автор по-любому знает, что пишет, а читатель, если к этому моменту ещё не знает, то должен посмотреть определение, иначе дальнейший код ему будет непонятен. То есть как ни крути, проблемы нет.
Автор может не помнить, если писал этот код пять лет назад, так же как и читатель не может ходить и смотреть сеттеры всех пропертиз. А проблем вообще никогда никаких нет, вопрос потраченного времени.

Цитата: myst от декабря 23, 2010, 17:14
ЦитироватьНе понял...
int a{get;set;}
И нах это надо, если можно просто int a?

RawonaM

Цитата: Алексей Гринь от декабря 23, 2010, 20:26
Свойств, пишущихся с маленькой буквы, не бывает :) (иначе это плохая практика) Здесь b это определённо или поле класса, или переменная, определённая в функции. Но это не проблема C# per se. Чтобы различать, я предпочитаю делать явное this.b для полей.
У всех свои предпочтения и язык дает возможность разных вариантам, что создает потенциальное злоупотребление и недопонимание.

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

Быстрый ответ

Обратите внимание: данное сообщение не будет отображаться, пока модератор не одобрит его.

Имя:
Имейл:
Проверка:
Оставьте это поле пустым:
Наберите символы, которые изображены на картинке
Прослушать / Запросить другое изображение

Наберите символы, которые изображены на картинке:

√36:
ALT+S — отправить
ALT+P — предварительный просмотр