Какой язык более высокоуровневый - C# или VB?
От: _Mihail Россия  
Дата: 16.04.07 04:24
Оценка: :))) :))) :))) :)))
Недавно хотел переходить на C#, но почитав топики типа C# vs VB пришел к выводу, что C# по крайней мере для моих скромных задач (Windows-приложение "для домашнего пользователя") будет пониже уровнем чем VB. Вот, интересует, с теоретической точки зрения, какой язык более высокоуровневый? И в чем вообще измеряется эта высокоуровневость?
Еще как-то спорил с человеком, который убеждал, что C++ выше по уровню чем VB и при этом Лисп выше по уровню чем VB, такое возможно или он просто недолюбливал VB?
Re: Какой язык более высокоуровневый - C# или VB?
От: Геннадий Васильев Россия http://www.livejournal.com/users/gesha_x
Дата: 16.04.07 06:06
Оценка: :))
Здравствуйте, _Mihail, Вы писали:

_M>Недавно хотел переходить на C#, но почитав топики типа C# vs VB пришел к выводу, что C# по крайней мере для моих скромных задач (Windows-приложение "для домашнего пользователя") будет пониже уровнем чем VB. Вот, интересует, с теоретической точки зрения, какой язык более высокоуровневый? И в чем вообще измеряется эта высокоуровневость?


В длине, вестимо!

_M>Еще как-то спорил с человеком, который убеждал, что C++ выше по уровню чем VB и при этом Лисп выше по уровню чем VB, такое возможно или он просто недолюбливал VB?


У него просто линейка не той системы!
Я знаю только две бесконечные вещи — Вселенную и человеческую глупость, и я не совсем уверен насчёт Вселенной. (c) А. Эйнштейн
P.S.: Винодельческие провинции — это есть рулез!
Re: А если чуть серьёзнее...
От: Геннадий Васильев Россия http://www.livejournal.com/users/gesha_x
Дата: 16.04.07 06:10
Оценка: +1
Здравствуйте, _Mihail,

...то уровень абстракции можно "мерять" только по отношению к чему-то конкретному. К командам процессора, например. Или по отношению к другим абстракциям, которые объявляются в этом случае "низкоуровневыми".

А просто "уровень абстракции" — пустозвонство.
Я знаю только две бесконечные вещи — Вселенную и человеческую глупость, и я не совсем уверен насчёт Вселенной. (c) А. Эйнштейн
P.S.: Винодельческие провинции — это есть рулез!
Re[2]: А если чуть серьёзнее...
От: _Mihail Россия  
Дата: 16.04.07 06:21
Оценка:
Здравствуйте, Геннадий Васильев, Вы писали:

ГВ>...то уровень абстракции можно "мерять" только по отношению к чему-то конкретному. К командам процессора, например. Или по отношению к другим абстракциям, которые объявляются в этом случае "низкоуровневыми".


ГВ>А просто "уровень абстракции" — пустозвонство.


Ну, то что всё относительно, это понятно. Но должна же быть какая-то усредненная, общепризнанная точка отсчета, по которой все эту высокоуровневость меряют. Например, сложно найти такой пример, когда ассемблер, окажется выше по уровню, чем C#. Ну а определить кто выше — VB или С#, это фактически тоже самое, только в меньшем масштабе...
Re[3]: А если чуть серьёзнее...
От: Геннадий Васильев Россия http://www.livejournal.com/users/gesha_x
Дата: 16.04.07 07:17
Оценка: 11 (2)
Здравствуйте, _Mihail, Вы писали:

ГВ>>...то уровень абстракции можно "мерять" только по отношению к чему-то конкретному. К командам процессора, например. Или по отношению к другим абстракциям, которые объявляются в этом случае "низкоуровневыми".


ГВ>>А просто "уровень абстракции" — пустозвонство.


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


Обычно пользуются отсчётом от уровня железа. Низкоуровневые — это ассемблеры, а у высокоуровневых своя классификация (императивные, функциональные, логические и т.п.) Ну, можно выделить ещё "совсем высокоуровневые", то есть, приближённые к языку какой-то предметной области.

_M>Например, сложно найти такой пример, когда ассемблер, окажется выше по уровню, чем C#. Ну а определить кто выше — VB или С#, это фактически тоже самое, только в меньшем масштабе...


А смысл-то какой в этой уровнеметрии? ИМХО, кроме как для споров в курилках её никуда не приткнёшь.

PS.: Впрочем, за всю Одессу не скажу, может быть, кто-то что-то и придумал.
Я знаю только две бесконечные вещи — Вселенную и человеческую глупость, и я не совсем уверен насчёт Вселенной. (c) А. Эйнштейн
P.S.: Винодельческие провинции — это есть рулез!
Re: Какой язык более высокоуровневый - C# или VB?
От: Пятачок Россия  
Дата: 16.04.07 07:25
Оценка: 12 (3)
Высокоуровневый означает, что программист меньше заботится о конкретных алгоритмах, использующихся в логике приложения, и больше — о самой логике. В идеале имеем декларативное описание того, что нам хочется видеть, а на выходе получаем готовую систему.
В случае с VB и C#, VB позволяет делать меньше телодвижений при написании ПО, хотя и делает это за счет снижения уровня контроля процесса, поэтому его в приниципе можно считать более высокоуровневым.
Re[2]: Какой язык более высокоуровневый - C# или VB?
От: _Mihail Россия  
Дата: 16.04.07 07:34
Оценка:
Здравствуйте, Пятачок, Вы писали:

П>В случае с VB и C#, VB позволяет делать меньше телодвижений при написании ПО, хотя и делает это за счет снижения уровня контроля процесса, поэтому его в приниципе можно считать более высокоуровневым.


Вот и я тоже так думаю.
Re[3]: А если чуть серьёзнее...
От: Андрей Коростелев Голландия http://www.korostelev.net/
Дата: 16.04.07 07:44
Оценка:
Здравствуйте, _Mihail, Вы писали:

_M>Здравствуйте, Геннадий Васильев, Вы писали:


ГВ>>А просто "уровень абстракции" — пустозвонство.


_M>Ну, то что всё относительно, это понятно. Но должна же быть какая-то усредненная, общепризнанная точка отсчета, по которой все эту высокоуровневость меряют. Например, сложно найти такой пример, когда ассемблер, окажется выше по уровню, чем C#. Ну а определить кто выше — VB или С#, это фактически тоже самое, только в меньшем масштабе...


Как general-purpose язык, VB будет повыше уровнем, чем C#. Только давай посмотрим, какой из этого можно сделать вывод.

Ты прав в том, что уровень абстракции действительно имеет значение. Чем меньшим кол-вом операций уровня языка решается задача, тем лучше. Заметь, я выделил слово "решается". Но может и не решиться, или решиться, но очень через "ж". В таком случае два выхода: либо перейти на язык с более низким уровнем абстракции, либо вместо general-purpose языка использовать DSL.

То есть я бы посоветовал тебе сначала точнее определиться с кругом задач, которые ты хочень решать, а потом уже подбирать языковые средства.
-- Андрей
Re[2]: Какой язык более высокоуровневый - C# или VB?
От: prVovik Россия  
Дата: 16.04.07 08:54
Оценка:
Здравствуйте, Пятачок, Вы писали:

П>В случае с VB и C#, VB позволяет делать меньше телодвижений при написании ПО


А можно конкретные примеры снижения телодвижений.
лэт ми спик фром май харт
Re[3]: Какой язык более высокоуровневый - C# или VB?
От: _Mihail Россия  
Дата: 16.04.07 09:12
Оценка:
Здравствуйте, prVovik, Вы писали:

V>А можно конкретные примеры снижения телодвижений.


Меня лично больше всего испугали замечания по поводу какой-то усложненной работы с Optional-параметрами в C#. Строчить десятки перегрузок как в .Net Framework или вытворять всякие трюки с проверками параметров, как в VB6 — нет никакого желания.

Ещё непонятности с привязкой событий к методам. Привязка, как я понял, происходит где-то в генеренном коде и говорят, что если метод убрать, она там остается и надо вручную туда лесть и чистить. Ну и т.п. — обработка событий вообще в C# мне кажется на много непонятнее сделана, чем в VB — в VB handler'ы можно выбрать из чекбоксов и не нужно ничего динамически привязывать. Но, конечно, я мельком смотрел, мог чего и не увидеть.

Прошу ногами не бить, если чего напутал, в C# не разбираюсь практически совсем .
Re[4]: Какой язык более высокоуровневый - C# или VB?
От: rameel https://github.com/rsdn/CodeJam
Дата: 16.04.07 10:02
Оценка:
Здравствуйте, _Mihail, Вы писали:

_M>Ещё непонятности с привязкой событий к методам. Привязка, как я понял, происходит где-то в генеренном коде и говорят, что если метод убрать, она там остается и надо вручную туда лесть и чистить.


Объясните, а то моя твоя не понимать

_M>Ну и т.п. — обработка событий вообще в C# мне кажется на много непонятнее сделана, чем в VB — в VB handler'ы можно выбрать из чекбоксов и не нужно ничего динамически привязывать.


Я не понял, ты среды разработки меряешь по "высокоуровности" или языки. При чем тут обработка событий, реализованная тем или иным способом в языке и чекбоксы.

_M>Прошу ногами не бить, если чего напутал, в C# не разбираюсь практически совсем .


... << RSDN@Home 1.2.0 alpha rev. 677>>
Re[4]: Какой язык более высокоуровневый - C# или VB?
От: FDSC Россия consp11.github.io блог
Дата: 16.04.07 10:32
Оценка:
Здравствуйте, _Mihail, Вы писали:

_M>Меня лично больше всего испугали замечания по поводу какой-то усложненной работы с Optional-параметрами в C#. Строчить десятки перегрузок как в .Net Framework или вытворять всякие трюки с проверками параметров, как в VB6 — нет никакого желания.


На практике совершенно не напрягает. Честно говоря, даже наоборот лучше иногда.

_M>Ещё непонятности с привязкой событий к методам. Привязка, как я понял, происходит где-то в генеренном коде и говорят, что если метод убрать, она там остается и надо вручную туда лесть и чистить. Ну и т.п. — обработка событий вообще в C# мне кажется на много непонятнее сделана, чем в VB — в VB handler'ы можно выбрать из чекбоксов и не нужно ничего динамически привязывать. Но, конечно, я мельком смотрел, мог чего и не увидеть.



Эээээ... ЧЕГО-О-О-О-О???????????????????????????!!!!!!!!!!!!!!!!!!!!!!!!!!!!! Кого чистить???? Там есть в контекстном меню reset, если ты про среду разработки и события в форме
А что в C# нужно привязывать динамически, что в VB можно привязать через GUI системы программирования?

_M>Прошу ногами не бить, если чего напутал, в C# не разбираюсь практически совсем .


Хорошо, будем бить кувалдами
Re: Какой язык более высокоуровневый - C# или VB?
От: FDSC Россия consp11.github.io блог
Дата: 16.04.07 10:35
Оценка:
Здравствуйте, _Mihail, Вы писали:

_M>Недавно хотел переходить на C#, но почитав топики типа C# vs VB пришел к выводу, что C# по крайней мере для моих скромных задач (Windows-приложение "для домашнего пользователя") будет пониже уровнем чем VB. Вот, интересует, с теоретической точки зрения, какой язык более высокоуровневый? И в чем вообще измеряется эта высокоуровневость?

_M>Еще как-то спорил с человеком, который убеждал, что C++ выше по уровню чем VB и при этом Лисп выше по уровню чем VB, такое возможно или он просто недолюбливал VB?

Уровень VB и C# в .NET практически один и тот же, в частности, за счёт того, что они пользуются одной и той же библиотекой .NET framework
Вопрос только в синтаксисе и всё. Вот если ты будешь писать на MS IL, тогда другое дело, это уже будет ниже уровнем.
Re[3]: Какой язык более высокоуровневый - C# или VB?
От: Андрей Коростелев Голландия http://www.korostelev.net/
Дата: 16.04.07 10:43
Оценка: +2
Здравствуйте, prVovik, Вы писали:

V>Здравствуйте, Пятачок, Вы писали:


П>>В случае с VB и C#, VB позволяет делать меньше телодвижений при написании ПО


V>А можно конкретные примеры снижения телодвижений.


Это прямое следствие того, что С# — статически типизированный язык, в VB же, как в гибридном язаке, можно использовать более лакончиную динамику.
Тем не менее разница в количестве телодвижений не настолько значительна, чтобы рассматирвать ее как критерий выбора между этими языками.
-- Андрей
Re: Какой язык более высокоуровневый - C# или VB?
От: Sinclair Россия https://github.com/evilguest/
Дата: 16.04.07 11:03
Оценка: +4
Здравствуйте, _Mihail, Вы писали:

_M>Недавно хотел переходить на C#, но почитав топики типа C# vs VB пришел к выводу, что C# по крайней мере для моих скромных задач (Windows-приложение "для домашнего пользователя") будет пониже уровнем чем VB. Вот, интересует, с теоретической точки зрения, какой язык более высокоуровневый? И в чем вообще измеряется эта высокоуровневость?

_M>Еще как-то спорил с человеком, который убеждал, что C++ выше по уровню чем VB и при этом Лисп выше по уровню чем VB, такое возможно или он просто недолюбливал VB?
Высокоуровневость — штука весьма субъективная. В принципе, можно говорить о мощности языка в плане сложности конструкций, которые в нем поддерживаются напрямую, т.е. являются т.н. "first class citizens".
И даже в этом случае ответ будет неоднозначным. Вот, к примеру, если взять язык MSX BASIC, то он с одной стороны выше уровнем, чем С, т.к. в нем есть конструкция PRINT для вывода в консоль и конструкция LINE для рисования линии алгоритмом брезенхема, а в С их нет. С другой стороны, в С есть понятие "функции", а в бейсике его нету. Поэтому там, где в С можно спрятать сложность предметной области за одним вызовом, в бейсике будет шаманство с установкой значений переменных. А в С++ можно определить операторы таким образом, чтобы получить синтаксис рисования линии достаточно близким к бейсику, и при этом без потери общности — там, где в бейсике захардкожен банальный брезенхем, в плюсах может на лету подцепляться реализация из AntiGrain с субпиксельным сглаживанием.

Шаблонам С++ в классическом VB никаких аналогов нет; изображать мало-мальски сходную функциональность придется "на коленке", то есть С++ вроде бы повыше уровнем. Зато в VB программист изолирован от управления памятью, а в плюсах он должен за ней следить сам.

Если сравнивать C# и VB.NET, то высота уровня со всех точек зрения окажется практически одинаковой. Это, грубо говоря, один и тот же язык с немножко разным синтаксисом.
Список "фундаментальных" различий очень-очень мал. Вот Nemerle является языком более высокого уровня по отношению к обоим сравниваемым кандидатам.
1.2.0 alpha rev. 655
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
Re[2]: Какой язык более высокоуровневый - C# или VB?
От: Andrei N.Sobchuck Украина www.smalltalk.ru
Дата: 16.04.07 11:07
Оценка:
Здравствуйте, Sinclair, Вы писали:

S>И даже в этом случае ответ будет неоднозначным. Вот, к примеру, если взять язык MSX BASIC, то он с одной стороны выше уровнем, чем С, т.к. в нем есть конструкция PRINT для вывода в консоль и конструкция LINE для рисования линии алгоритмом брезенхема, а в С их нет. С другой стороны, в С есть понятие "функции", а в бейсике его нету. Поэтому там, где в С можно спрятать сложность предметной области за одним вызовом, в бейсике будет шаманство с установкой значений переменных. А в С++ можно определить операторы таким образом, чтобы получить синтаксис рисования линии достаточно близким к бейсику, и при этом без потери общности — там, где в бейсике захардкожен банальный брезенхем, в плюсах может на лету подцепляться реализация из AntiGrain с субпиксельным сглаживанием.


Как по мне, то плясать нужно от того, что в С есть указатели и адресная арифметика а Бейсике нет. Это как минимум.

А в общем то, получается, что чем выше уровнем язык, тем сложнее его использовать как универсальный язык
Я ненавижу Hibernate
Автор: Andrei N.Sobchuck
Дата: 08.01.08
!
Re[3]: Какой язык более высокоуровневый - C# или VB?
От: fmiracle  
Дата: 16.04.07 11:31
Оценка:
Здравствуйте, Andrei N.Sobchuck, Вы писали:

ANS>Как по мне, то плясать нужно от того, что в С есть указатели и адресная арифметика а Бейсике нет. Это как минимум.


ANS>А в общем то, получается, что чем выше уровнем язык, тем сложнее его использовать как универсальный язык


Может ассемблер и проще использовать как универсальный язык, нежели С, но как-то это непросто получится
Re[4]: Какой язык более высокоуровневый - C# или VB?
От: Andrei N.Sobchuck Украина www.smalltalk.ru
Дата: 16.04.07 11:47
Оценка:
Здравствуйте, fmiracle, Вы писали:

ANS>>А в общем то, получается, что чем выше уровнем язык, тем сложнее его использовать как универсальный язык


F>Может ассемблер и проще использовать как универсальный язык, нежели С, но как-то это непросто получится


Можеш попробовать написать драйвер на ассемблере и на FoxPro (достаточно высокоуровневый язык?). Я об этом — любое повышение уровня абстракции неизбежно скрывает мелкие детали. Я же не утверждаю, что это плохо, это просто факт.
Я ненавижу Hibernate
Автор: Andrei N.Sobchuck
Дата: 08.01.08
!
Re[2]: Какой язык более высокоуровневый - C# или VB?
От: _Mihail Россия  
Дата: 16.04.07 12:17
Оценка:
Здравствуйте, Sinclair, Вы писали:

S>А в С++ можно определить операторы таким образом, чтобы получить синтаксис рисования линии достаточно близким к бейсику, и при этом без потери общности — там, где в бейсике захардкожен банальный брезенхем, в плюсах может на лету подцепляться реализация из AntiGrain с субпиксельным сглаживанием.


Согласен, на С++ наверно можно реализовать функции, которые реализованы в VB, да ещё подогнать их под свои вкусы. Что там говорить — и VB и студия написаны на C++, можно и их написать, и тот же Nemerle. Только это уже фактически не C++ будет, а опять VB или Nemerle — как ни крути, а придется всё равно расплачиваться падением универсальности, за высокоуровость. Вобщем, прятаться за "потенциальные" возможности высокоуровности языка врятли получится. Поэтому мне кажется C++ в любом случае оказывается ниже по уровню, чем VB.
Re[3]: Какой язык более высокоуровневый - C# или VB?
От: Sinclair Россия https://github.com/evilguest/
Дата: 16.04.07 12:20
Оценка: 1 (1)
Здравствуйте, Andrei N.Sobchuck, Вы писали:

ANS>Как по мне, то плясать нужно от того, что в С есть указатели и адресная арифметика а Бейсике нет. Это как минимум.

Это не "как минимум", а очень-очень узкий взгляд на вещи.

К тому же ты что, собрался мерить уровень языка по отсутствию в нем чего-то? Ну тогда С++, к примеру, значительно ниже уровнем, чем С. Т.к. в С нет почти ничего из того, что есть в С++. Это какой-то нездоровый парадокс. И таких парадоксов — море. К примеру, с таким подходом лисп и форт — языки примерно одного уровня.


ANS>А в общем то, получается, что чем выше уровнем язык, тем сложнее его использовать как универсальный язык

Непонятно, с чего бы это. Вот как раз ассемблер x86, к примеру, очень сложно использовать как универсальный язык. Ну-ка, изобрази мне на нем что-нибудь несложное; к примеру — веб-сервер с формз аутентификацией и персонализацией. А вот очень-очень высокоуровневый язык типа Nemerle можно использовать для чего угодно.

В общем, ребяты, низкоуровневость не сводится к возможности написать драйвер. Драйвера к Singularity влет пишутся на любом языке дотнета, в том числе и VB.
1.2.0 alpha rev. 655
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.