Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - Офф-топ

Страница: 1 | 2 |

 

  Вопрос: Давайте помечтаем Добавлено: 07.08.04 22:47  

Автор вопроса:  Sharp | Web-сайт: sharpc.livejournal.com | ICQ: 216865379 

Ответить

  Ответы Всего ответов: 28  

Номер ответа: 16
Автор ответа:
 sne



Разработчик Offline Client

ICQ: 233286456 

Вопросов: 34
Ответов: 5445
 Web-сайт: hw.t-k.ru
 Профиль | | #16
Добавлено: 09.08.04 12:04
Хм... а вот мне бы очень хотелось той же гибкости оператора For, что и в Си... Местами бывает очень удобно ;)

Ответить

Номер ответа: 17
Автор ответа:
 Sharp


Лидер форума

ICQ: 216865379 

Вопросов: 106
Ответов: 9979
 Web-сайт: sharpc.livejournal.com
 Профиль | | #17
Добавлено: 10.08.04 06:19
Как насчет "перегрузки" оператора For, можно использовать более читабельный оператор
For i=0 To n

Next
а можно более мощный
For(i=0;i<=n;i=i+1)

Next
Не помешали бы, имхо, операторы инкремента и декремента, операторы сокращеных действий типа +=, *=, возможность использования вместо Or, Not и Mod ||, ! и % соответственно также придала бы Бейсику солидности (хотя и убрала читабельности). Sne, пожалуй, наиболее правильно понял мою мысль: какие нововведения в самом языке вы ждали, с сохранением обратной совместимости.

Ответить

Номер ответа: 18
Автор ответа:
 sne



Разработчик Offline Client

ICQ: 233286456 

Вопросов: 34
Ответов: 5445
 Web-сайт: hw.t-k.ru
 Профиль | | #18
Добавлено: 10.08.04 12:28
Забыл еще и &&, хотя, честно говоря, мне это не очень нравится... Словами прикольней :)

Ответить

Номер ответа: 19
Автор ответа:
 Sharp


Лидер форума

ICQ: 216865379 

Вопросов: 106
Ответов: 9979
 Web-сайт: sharpc.livejournal.com
 Профиль | | #19
Добавлено: 10.08.04 12:49
Мне тоже не нравится, но пример этого типа я упомянул. Но побитные логические операции ни в коем случае нельзя оставлять операторами - тупее ничего нельзя придумать. Только функциями, пусть даже инлайн.

Ответить

Номер ответа: 20
Автор ответа:
 sne



Разработчик Offline Client

ICQ: 233286456 

Вопросов: 34
Ответов: 5445
 Web-сайт: hw.t-k.ru
 Профиль | | #20
Добавлено: 10.08.04 13:39
Неплохо было бы еще сделать нормальной работу с указателями... Хотя при этом чтобы обратиться к массиву, прийдется предварительно посмотреть описание структуры SAFEARRAY... Но для байтовых массивов, указатели, самое милое дело...
А так же не помешали бы встроеные функции прямого копирования памяти, так заботливо убраные в VB, микрософтами...

Ответить

Номер ответа: 21
Автор ответа:
 Sharp


Лидер форума

ICQ: 216865379 

Вопросов: 106
Ответов: 9979
 Web-сайт: sharpc.livejournal.com
 Профиль | | #21
Добавлено: 11.08.04 04:59
Мне кажется, что сишный вариант типа &t и *p несколько нечитабелен. Не сразу можно понять, что обозначает *n*=*n**n**n; Наверно, если бы операторы выглядели примерно так: ptr(x) и var(p), было бы попонятнее. Тогда можно было бы убрать ByVal и ByRef и передавать, например, так:
MessageBox 0,ptr(strText),ptr(strCaption),MB_OK
Хотя, пожалуй, для строк следует все-таки сделать автоматическую передачу... Над этим еще можно подумать. Однако MemCopy, действительно, было бы очень полезной функцией. В случае с SAFEARRAY меня беспокоит пара вещей: с точки зрения безопасности (а все мы знаем, что Си этой точки зрения совсем не блещет) SAFEARRAY все-таки предпочтительнее, недаром ошибки переполнения буфера в VB - почти нонсенс, но оперирование с массивами с помощью укаазателей в случае SAFEARRAY приводит к некоторым трудностям. Поэтому, наверно, должны сочетаться низко- и высокоуровневые конструкции. Например, введение двух типов массивов: SafeArray Long a(N) и просто Long a(N), причем в первом случае N может быть и переменной, но во втором - только константой. Таким образом, первое объявление более гибкое и безопасное, зато второе более быстрое. И конкретный выбор ляжет на плечи разработчика. Так же, видимо, следует поступать и со строками - представлять их как тот же массив, только с некоторыми дополнительными перегруженными операторами. Еще мне очень понравилась в C-- возможность возврата нескольких значений. Синтаксически это могло бы выглядеть так:
Func Fn1(x) As Long,Long

End Func
и вызов
s,p=Fn1(x)
Стоило бы ввести и самые низкоуровневые инструкции на уровне языка, например, вычисляемый вызов типа Call ptr(MyProc),x,y что равносильно MyProc(x,y), но без проверки (или с минимальной проверкой) типов данных.

Ответить

Номер ответа: 22
Автор ответа:
 shuffle



Администратор

ICQ: 201502381 

Вопросов: 15
Ответов: 737
 Профиль | | #22 Добавлено: 12.08.04 10:48
Еще чтобы были такие фичи (как в VB.NET сейчас):
0. Для возврата значения функции использовался оператор Return.
1. Синтаксис свойств был таким:
Public Property [ReadOnly|WriteOnly] MyProperty()
Get
...
End Get
Set (value)
...
End Set
End Property
2. Поддержка многопоточности на уровне языка (впрочем, и субклассинга
и хуков всяких тоже).
3. И, конечно же, структурированная обработка ошибок.

Так а чего мечтать, давайте напишем такой :)

Ответить

Номер ответа: 23
Автор ответа:
 Павел



Администратор

ICQ: 326066673 

Вопросов: 368
Ответов: 5968
 Web-сайт: www.vbnet.ru
 Профиль | | #23
Добавлено: 12.08.04 16:34
В первую голову нормально типы данных надо назвать.. А-то в VB6
несуразица с целочисленными типами имеется...

2Alex: я что-то не могу себе представить многопоточность на уровне
языка :(

Вообще в плане синтаксисиа меня полностью устраивает VB 2005.

2Sharp: переполнение буфера это серьезно... Я рад, что в VB этой
проблемы не бывает...

Ответить

Номер ответа: 24
Автор ответа:
 shuffle



Администратор

ICQ: 201502381 

Вопросов: 15
Ответов: 737
 Профиль | | #24 Добавлено: 12.08.04 17:00
>2Alex: я что-то не могу себе представить многопоточность на уровне
>языка
Так ведь точно также, как это реализовано в .NET.

Ответить

Номер ответа: 25
Автор ответа:
 Павел



Администратор

ICQ: 326066673 

Вопросов: 368
Ответов: 5968
 Web-сайт: www.vbnet.ru
 Профиль | | #25
Добавлено: 12.08.04 19:22
Язык - он и есть язык... Это набор ключевых слов, правил синтаксиса и
т.д.
А многопоточность реализована на уровне CLR.

Ответить

Номер ответа: 26
Автор ответа:
 Sharp


Лидер форума

ICQ: 216865379 

Вопросов: 106
Ответов: 9979
 Web-сайт: sharpc.livejournal.com
 Профиль | | #26
Добавлено: 12.08.04 22:01
> Для возврата значения функции использовался оператор Return.
Не стоит забывать, что return (по крайней мере в Си) не только устанавливает возвращаемое значение, но и выходит из функции. Так что я оставил бы оба варианта.
Public Property [ReadOnly|WriteOnly] MyProperty()
Get
...
End Get
Set (value)
...
End Set
End Property
Объединить установку/получение значения свойства в одной процедуре мысль, конечно, неплохая, но зачем тогда ReadOnly|WriteOnly? Просто не писать соответственно Set или Get...
> Поддержка многопоточности на уровне языка (впрочем, и субклассинга и хуков всяких тоже).
На уровне языка - сказано довольно сильно. Поддержка параллельного исполнения на уровне языка - это я еще понимаю, но VB едва ли когда-нибудь будет позиционироваться, как язык для разработки программ для многопроцессорных систем...
> И, конечно же, структурированная обработка ошибок
Да, try-except-finally это все-таки несколько лучше, чем On error goto eh1. Также интересно было бы добавить прямое управление SEH.
> В первую голову нормально типы данных надо назвать.. А-то в VB6 несуразица с целочисленными типами имеется...
Нельзя ли поподробнее?
> Я рад, что в VB этой проблемы не бывает...
Не, ну в принципе и кролика можно научить курить...
Могу добавить концепцию подключаемых препроцессоров :) Т.е. программа состоит не только из своего кода, но еще и из препроцессоров, которые этот код обрабатывают. В результате может получиться нечто, что может иметь любой синтаксис и подходить для любого программиста, вплоть до того, что можно будет использовать классы и модули на любом алгоритмическом языке.

Ответить

Номер ответа: 27
Автор ответа:
 Павел



Администратор

ICQ: 326066673 

Вопросов: 368
Ответов: 5968
 Web-сайт: www.vbnet.ru
 Профиль | | #27
Добавлено: 12.08.04 22:16
>> В первую голову нормально типы данных надо назвать.. А-то в VB6 несуразица с целочисленными типами имеется...
> Нельзя ли поподробнее?
Везде Int32 - Integer, в VB6 - Long
Везде Int16 - Short, в VB6 - Integer


Ответить

Номер ответа: 28
Автор ответа:
 Sharp


Лидер форума

ICQ: 216865379 

Вопросов: 106
Ответов: 9979
 Web-сайт: sharpc.livejournal.com
 Профиль | | #28
Добавлено: 12.08.04 22:34
В Си long - Int32, int (по ANSI) - Int16. Поэтому я склонен считать, что названия традиционные. Хотя неплохо было бы добавить псевдонимы word и dword, почти не допускающие двояких толкований. А чрезмерно длинное unsigned сократить до изящного U :)
Типа UDWORD, UWORD, DWORD, WORD.
Где действительно путаница, так это с числами с плавающей запятой. Малоизвестно, как реализуются сишный float, вбшный single и double, паскакалевские real и extended.

Ответить

Страница: 1 | 2 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам