Re: "альтернативные" языки
От: Shisaa Украина  
Дата: 21.02.07 19:05
Оценка: :)
Здравствуйте, Timur I., Вы писали:

TI>Здравствуйте!

TI>Как считаете, стоит ли тратить время на изучения "альтернативных" языков и технологий ? Под альтернативными я понимаю не C++/Java/Php/Perl/C# Или это будет пустая трата времени и сил ?

Можешь глянуть также Форт. Нестандартный язык. Не похожий ни на один из тех что я изучал ранее.
Очень помог мне посмотреть с "другой стороны" на программирование.
На сайте в списке литературы есть книжица:
"Способ мышления — ФОРТ. Язык и философия для решения задач." (c) Лео Броуди.
Даже если не будешь использовать сам Форт, то советую ее прочитать, помогает правильно мыслить при написании программ.
Re[23]: "альтернативные" языки
От: IT Россия linq2db.com
Дата: 21.02.07 19:09
Оценка: +1
Здравствуйте, EvilChild, Вы писали:

EC>Т.е. когда мы возвращаем экземпляр анонимного типа, компилятор молчаливо создаёт в метаданных новый тип и это дело можно спокойно юзать в публичных интерфейсах сборки? Имена наверное стрёмные? Как у перечислителей, что C# компилятор создаёт? А если мы из 2х методов возвращаем структурно эквивалентные типы он их сведёт к одному в метаданных?


Эти типы представляют из себя буквально то, что я написал. Т.е. это просто generic типы, которых тупо набито в библиотеки поддержки компилятора примерно до 20 штук. Соотвественно, из других .NET языков они так и будут видны. Например, в Н:

Foo() : string * int
{
  ("", 0)
}

Bar() : void
{
  def (x, y) = Foo();
}

в C# можно получить как:

void Bar()
{
  Tuple<string,int> tp = Foo();
  string x = tp.field0;
  int    y = tp.field1;
}

В самом Н для них сделана специальная, очень удобная поддержка, которая, естественно, не доступна из C#. Но, тем не менее, использовать сами типы из других языков вполне возможно.
Если нам не помогут, то мы тоже никого не пощадим.
Re[24]: "альтернативные" языки
От: EvilChild Ниоткуда  
Дата: 21.02.07 19:20
Оценка:
Здравствуйте, IT, Вы писали:

IT>Эти типы представляют из себя буквально то, что я написал. Т.е. это просто generic типы, которых тупо набито в библиотеки поддержки компилятора примерно до 20 штук. Соотвественно, из других .NET языков они так и будут видны. Например, в Н:

Вижу, это я протупил. Тогда действительно странно почему разработчикам C# это не сделать.
Я правильно понимаю, что если мы воспользовались этой фичей, то мы попадаем на деплоймент библиотеки поддержки?
now playing: Future Prophecies — Miniamba (featuring Mari Boine)
Re[25]: "альтернативные" языки
От: IT Россия linq2db.com
Дата: 21.02.07 19:44
Оценка: +1 :)
Здравствуйте, EvilChild, Вы писали:

EC>Я правильно понимаю, что если мы воспользовались этой фичей, то мы попадаем на деплоймент библиотеки поддержки?


Правильно. Хотя я и не считаю это большим попадаловом
Если нам не помогут, то мы тоже никого не пощадим.
Re[2]: "альтернативные" языки
От: WolfHound  
Дата: 21.02.07 20:35
Оценка:
Здравствуйте, Shisaa, Вы писали:

S>Даже если не будешь использовать сам Форт, то советую ее прочитать, помогает правильно мыслить при написании программ.

Раскрыт сикрет мастера Йоды: "Программист форте на старый он."
... << RSDN@Home 1.2.0 alpha rev. 673>>
Пусть это будет просто:
просто, как только можно,
но не проще.
(C) А. Эйнштейн
Re[21]: "альтернативные" языки
От: VladD2 Российская Империя www.nemerle.org
Дата: 22.02.07 01:13
Оценка:
Здравствуйте, EvilChild, Вы писали:

EC>Здравствуйте, VladD2, Вы писали:


VD>>ну, и совместимасть по совпадению типа и имени поля.

EC>По типу было бы достаточно — структурная эквивалентность. Было бы действительно полезно.

Это был бы еще один косяк. Делая "а" (вводя имена у полей), надо делать и "б" (учитывать их при сопоставлении).

Проблема в том, что без изменения рантайма (по словам Хейслсберга) сопсоставление сдаелать нельзя. А менять рантайм они что-то боятся. В общем, прогнали лажу, на мой взгляд.

VD>>Короче огнаниченная утиная типизация.

EC>Утиная типизация вроде как предполагает позднее связывание,

Нет. Она предпологает сопоставление по именам. Объект (или тип) должен всего лишь крякать как утка, плавать как утка и летать как утка.

EC>если не брать в расчёт C++ templates,

EC>а здесь всё статически можно проверить или я что-то путаю?

Путаешь. Шаблоны С++ работают на уровне АСТ на котором типизации еще просто нет. С их помощью генерирвется АСТ которое уже в готовом виде типизируется. Учитывая отсуствие поддержки компонентности это в С++ прокатывает. В дотнете это не прокатывает, так как типы должны храниться в бинарном виде (типизированными по определению). Так что решение из С++ тут никак не катит. Но можно просто подменять типы имеющие одну и ту же структуру в рантайме. Скажем загружается сборка использующая анонимный тип { string Name; DateTime Age } который уже был загружен другой сборкой... рантайм определяет это и подменяет ссылку на тип той что была порождена первой сборкой.

Собственно это и есть изменение которое нужно сделать в рантайме. Если предполжить, что код рантайма хорошо струтурирован и спокойно подвергается расширения, то это работа на день (максимум неделю). Так что зачем в МС прогоняют лажу я понять не могу.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[20]: "альтернативные" языки
От: VladD2 Российская Империя www.nemerle.org
Дата: 22.02.07 01:13
Оценка:
Здравствуйте, IT, Вы писали:

IT>Главное, что проблема стоит выеденного яйца. Вариант туплов в Н не требует никакой рантайм поддержки и не имеет таких проблем.


Проблема в том, что они выбрали другой дизайн, но не смогли его довести до ума при воплощении в жизнь.

А сам дизайн, в общем-то, выглядит даже лучше чем кортежи из из ФЯ... на мой взгляд.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[25]: "альтернативные" языки
От: VladD2 Российская Империя www.nemerle.org
Дата: 22.02.07 01:13
Оценка: +1
Здравствуйте, EvilChild, Вы писали:

EC>Вижу, это я протупил. Тогда действительно странно почему разработчикам C# это не сделать.


Потому что дизайнеры C# 3.0 решили сделать именованные поля у неименованных типов. Мол это привычнее обывателям и больше защищает от ошибок (ведь в кортеже можно легко перепутать значения местами, если они имеют один тип). Но такой тип уже дженериком не опишишь. Компилятору приходится каждый раз порождать новый (скрытый) класс. Ну, а так как разные библиотеки порождают разные (физически) классы, то они не совместимы. Далее думаю ясно.

EC>Я правильно понимаю, что если мы воспользовались этой фичей, то мы попадаем на деплоймент библиотеки поддержки?


Правильно. Только C# 3.0 тоже вынужден ввести новую библиотеку которую прийдется поставлять отдельно. Так что это не проблема для разработчиков этого языка.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re: "альтернативные" языки
От: Java2  
Дата: 25.02.07 16:34
Оценка: :)))
Здравствуйте, Timur I., Вы писали:

TI>Здравствуйте!

TI>Как считаете, стоит ли тратить время на изучения "альтернативных" языков и технологий ? Под альтернативными я понимаю не C++/Java/Php/Perl/C# Или это будет пустая трата времени и сил ?


Друг, здесь мнений много, но послушай и моё. С помощью таких вещей как Java или C# уже можно зарабатывать миллионы долларов.
Мой тебе совет: заработай их, а потом решай, нужно тебе что-то или нет, т.е. отталкивайся от цели к средствам, а не от средств в поисках цели. Жинь коротка, а дни лукавы и обманчивы, стоит ли её тратить на все языки мира или лучше это время подарить своей семье?
Re[2]: "альтернативные" языки
От: konsoletyper Россия https://github.com/konsoletyper
Дата: 25.02.07 18:19
Оценка: +1
Здравствуйте, Java2, Вы писали:

TI>>Как считаете, стоит ли тратить время на изучения "альтернативных" языков и технологий ? Под альтернативными я понимаю не C++/Java/Php/Perl/C# Или это будет пустая трата времени и сил ?


J>Друг, здесь мнений много, но послушай и моё. С помощью таких вещей как Java или C# уже можно зарабатывать миллионы долларов.


Миллионы долларов проще заработать при помощи нефти/банков/героина, etc. А вот с Java/C# заработать миллионы крайне трудно. Если только самому не основать мегакорпорацию, в которой мартышки будут за ломоть хлеба писать на Java/C#

J>Мой тебе совет: заработай их, а потом решай, нужно тебе что-то или нет, т.е. отталкивайся от цели к средствам, а не от средств в поисках цели. Жинь коротка, а дни лукавы и обманчивы, стоит ли её тратить на все языки мира или лучше это время подарить своей семье?




Иногда нужно уделить своё время самосовершенствованию. Хотя бы для того, чтобы в будущем заработать больше денег за меньшее время, и подарить сэкономленное время (и деньги) семье. В этом вопросе поможет только здравый смысл. Главное — не ударяться в крайности.

Нельзя "лучше изучить" Java/C#. Можно только стать лучшим специалистом. А для этого, в том числе, нужно и расширить кругозор. Причём это касается не только языков, и даже не только программирования.
... << RSDN@Home 1.2.0 alpha rev. 672>>
Re[2]: "альтернативные" языки
От: Правдоруб  
Дата: 26.02.07 00:16
Оценка: :))
Здравствуйте, Java2, Вы писали:

J>Здравствуйте, Timur I., Вы писали:


TI>>Здравствуйте!

TI>>Как считаете, стоит ли тратить время на изучения "альтернативных" языков и технологий ? Под альтернативными я понимаю не C++/Java/Php/Perl/C# Или это будет пустая трата времени и сил ?

J>Друг, здесь мнений много, но послушай и моё. С помощью таких вещей как Java или C# уже можно зарабатывать миллионы долларов.


Ты про Sun и MS?
Re[3]: "альтернативные" языки
От: Java2  
Дата: 26.02.07 09:18
Оценка:
Здравствуйте, konsoletyper, Вы писали:

K>Здравствуйте, Java2, Вы писали:


TI>>>Как считаете, стоит ли тратить время на изучения "альтернативных" языков и технологий ? Под альтернативными я понимаю не C++/Java/Php/Perl/C# Или это будет пустая трата времени и сил ?


J>>Друг, здесь мнений много, но послушай и моё. С помощью таких вещей как Java или C# уже можно зарабатывать миллионы долларов.


K>Миллионы долларов проще заработать при помощи нефти/банков/героина, etc. А вот с Java/C# заработать миллионы крайне трудно. Если только самому не основать мегакорпорацию, в которой мартышки будут за ломоть хлеба писать на Java/C#


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


J>>Мой тебе совет: заработай их, а потом решай, нужно тебе что-то или нет, т.е. отталкивайся от цели к средствам, а не от средств в поисках цели. Жинь коротка, а дни лукавы и обманчивы, стоит ли её тратить на все языки мира или лучше это время подарить своей семье?


K>


K>Иногда нужно уделить своё время самосовершенствованию. Хотя бы для того, чтобы в будущем заработать больше денег за меньшее время, и подарить сэкономленное время (и деньги) семье. В этом вопросе поможет только здравый смысл. Главное — не ударяться в крайности.


K>Нельзя "лучше изучить" Java/C#. Можно только стать лучшим специалистом. А для этого, в том числе, нужно и расширить кругозор. Причём это касается не только языков, и даже не только программирования.
Re[20]: "альтернативные" языки
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 27.02.07 12:07
Оценка:
Здравствуйте, VladD2, Вы писали:

VD>Возврат значения из метода. Сделал ты красивый запрос через LINQ и хочешь поместить его в фукнцию. Ан та тебе — нельзя. Ведь запрос твой возвращает анонимный тип.


Запрос совсем не обязан возвращать именно анонимный тип. Для публичных контрактов вполне можно кортеж и явно описать. Единственное, где были бы полезны анонимные типы снаружи метода — в пределах одного класса. И тут, наверное, можно было бы реализовать подобное и без правки рантайма.
... << RSDN@Home 1.2.0 alpha rev. 675>>
AVK Blog
Re[21]: "альтернативные" языки
От: VladD2 Российская Империя www.nemerle.org
Дата: 27.02.07 13:26
Оценка:
Здравствуйте, AndrewVK, Вы писали:

AVK>Запрос совсем не обязан возвращать именно анонимный тип.


Ни кто и не спорит. Вопрос только в том, что описать тип кортежа можно по месту в описании фукнции. А описать отдельный класс это геборой. Да и не будут совместимы иэти типы (анонимный и такой же, но явный). В общем, это криво.

AVK> Для публичных контрактов вполне можно кортеж и явно описать.


Дык нельзя. Нет такой возможности. Можно только классы описывать. А это несколько не то.

AVK> Единственное, где были бы полезны анонимные типы снаружи метода — в пределах одного класса. И тут, наверное, можно было бы реализовать подобное и без правки рантайма.


Анонимные типы были бы полезны везде. Текущее решение — это банальная недоработка.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[3]: "альтернативные" языки
От: nikov США http://www.linkedin.com/in/nikov
Дата: 27.02.07 15:20
Оценка:
Здравствуйте, Alexander_S_U, Вы писали:

A_S>Какие языки из "альтернативных" для общего развития посоветуете?


Однозначно, стоит познакомиться с Nemerle.
Re[3]: "альтернативные" языки
От: Disappear  
Дата: 27.02.07 15:25
Оценка:
Здравствуйте, Alexander_S_U, Вы писали:

A_S>Здравствуйте, Lloyd, Вы писали:


L>>Здравствуйте, Timur I., Вы писали:


TI>>>Здравствуйте!

TI>>>Как считаете, стоит ли тратить время на изучения "альтернативных" языков и технологий ? Под альтернативными я понимаю не C++/Java/Php/Perl/C# Или это будет пустая трата времени и сил ?

L>>Имхо, стоит.


A_S>Какие языки из "альтернативных" для общего развития посоветуете?


"D"
http://www.digitalmars.com/d/
Re[22]: "альтернативные" языки
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 27.02.07 15:31
Оценка:
Здравствуйте, VladD2, Вы писали:

AVK>>Запрос совсем не обязан возвращать именно анонимный тип.


VD>Ни кто и не спорит. Вопрос только в том, что описать тип кортежа можно по месту в описании фукнции.


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

VD> А описать отдельный класс это геборой. Да и не будут совместимы иэти типы (анонимный и такой же, но явный).


А зачем нужен анонимный, если уже есть явный?

AVK>> Для публичных контрактов вполне можно кортеж и явно описать.


VD>Дык нельзя. Нет такой возможности. Можно только классы описывать.


А линковский кортеж это и есть банальный класс и ничто иное. И в этом, кстати, одно из его полезных свойств, потому что другие реализации кортежей порождают код вроде x = tuple(0) или x = tuple.First вместо линковского x = tuple.X.
... << RSDN@Home 1.2.0 alpha rev. 675>>
AVK Blog
Re[20]: "альтернативные" языки
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 27.02.07 15:31
Оценка:
Здравствуйте, IT, Вы писали:

IT>Главное, что проблема стоит выеденного яйца. Вариант туплов в Н не требует никакой рантайм поддержки и не имеет таких проблем.


И как они обеспечили совместимость туплов между сборками. И что насчет именованных элементов кортежа? Нет, ну то есть я понимаю что все это сделать при желании можно, интересно как это выглядит в реальности.
... << RSDN@Home 1.2.0 alpha rev. 675>>
AVK Blog
Re[21]: "альтернативные" языки
От: IT Россия linq2db.com
Дата: 27.02.07 15:41
Оценка:
Здравствуйте, AndrewVK, Вы писали:

AVK>И как они обеспечили совместимость туплов между сборками. И что насчет именованных элементов кортежа? Нет, ну то есть я понимаю что все это сделать при желании можно, интересно как это выглядит в реальности.


Я уже давал объяснение, начиная с этой ветки http://www.rsdn.ru/Forum/?mid=2362930&amp;flat=0
Автор: IT
Дата: 21.02.07

Единственное изменение — на днях я подправил имена публичных полей, что бы они соответствовали общепринятой нотации.
Если нам не помогут, то мы тоже никого не пощадим.
Re[21]: "альтернативные" языки
От: nikov США http://www.linkedin.com/in/nikov
Дата: 27.02.07 15:44
Оценка:
Здравствуйте, AndrewVK, Вы писали:

AVK>Здравствуйте, IT, Вы писали:


IT>>Главное, что проблема стоит выеденного яйца. Вариант туплов в Н не требует никакой рантайм поддержки и не имеет таких проблем.


AVK>И как они обеспечили совместимость туплов между сборками. И что насчет именованных элементов кортежа? Нет, ну то есть я понимаю что все это сделать при желании можно, интересно как это выглядит в реальности.


См. здесь внизу страницы.
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.