Deutsch

Visual basic

384  1 2 3 все
scorpi_ скептик29.03.05 14:08
NEW 29.03.05 14:08 
в ответ voxel3d 29.03.05 14:00
Как, как, через небезопасные привидения типов. То есть, через задницу.
А в Паскале они были? Это в Дельфи появился тип Pointer...
п.с. Просто любопытно. Ты бустом пользуешься?
а как же Пользуюсь конечно.
I did it my way
#21 
toptop завсегдатай29.03.05 14:44
NEW 29.03.05 14:44 
в ответ voxel3d 28.03.05 21:22
В ответ на:

Руки отрывать надо за такие языки. Там наследования даже не было.


Тогда надо отрывать руки Кернигану, Ричи, Вирту и т.д.
Не путайте процедурные языки и объектно-ориентированные.

В ответ на:

... код на нём приходилось уродский писать с бесконечными if-ами.


Речь шла о Visual Basic, а в нем, как известно, есть и case, и while и другие управляющие констрикции.

В ответ на:

Ограничение только на подключение ActiveX dll


Он прекрасно работает и с CОМ, и с COM+.

В ответ на:

использование variant там где надо и не надо


Это характерузует программиста, а не язык.

В ответ на:

типизация вообще непонятно какая


Обычная Integer, Long, String usw. Что еще надо, чтобы встретить старость?

В ответ на:

На нём только домохозяек учить неправильному программированию.


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

В ответ на:

А если говорить о VB.Net, это уже совсем другой язык, вполне вменяемый, возможности которого не уступают C#. Но синтаксис.. И ограничение одной единственной платформой.


Принципиальных отличий в синтаксисе не заметил, как впрочем к своему стыду не знаю других платформ кроме .NET, где работает C#

#22 
voxel3d свой человек29.03.05 15:02
voxel3d
NEW 29.03.05 15:02 
в ответ scorpi_ 29.03.05 14:08
Упс. Ни iso-7185, ни iso-102206 не описывают нетипизированный указатель.
Но у Борландов Pointer был ещ╦ до Delphi. В BP7 точно был.
Тогда попытка N2. Используя ассемблер. Что тоже через задницу.
---
Идиотов и фриков перевоспитать невозможно!
Dropbox - средство синхронизации и бэкапа файлов.
#23 
voxel3d свой человек29.03.05 16:57
voxel3d
NEW 29.03.05 16:57 
в ответ toptop 29.03.05 14:44
>Тогда надо отрывать руки Кернигану, Ричи, Вирту и т.д. Не путайте процедурные языки и объектно-ориентированные.
А я и не путаю. Кто, VB был процедурным?? А что там классы делают? Он поддерживал процедурную парадигму и кастрированно объектно-ориентированную.
>>код на н╦м приходилось уродский писать с бесконечными if-ами.
>Речь шла о Visual Basic, а в нем, как известно, есть и case, и while и другие управляющие констрикции.
Имеется в виду отсутствие наследования и полиморфизма, в результате чего его приходилось эмулировать, а вовсе не не отсутствие других конструкций ветвления.
>>типизация вообще непонятно какая
>Обычная Integer, Long, String usw. Что еще надо, чтобы встретить старость?
Классика:
Dim str As String
Dim n As Long
...
n = str
Ничего странного не видите?
А здесь:
Dim obj As Object
Din myobj As Object2
...
Set myobj = obj
Здесь если непонятно, опасное неявное преобразование от базового класса к наследнику.
>Неправильному программированию можно научить на любом языке, а вот научить правильно программировать на том же басике, задача не простая.
На каком-нибудь Питоне научить программированию и культуре программирования гораздо проще. А ВБ своей "упрощ╦нностью" научит писать непонятно как.
>Принципиальных отличий в синтаксисе не заметил, как впрочем к своему стыду не знаю других платформ кроме .NET, где работает C#
Так он только на дотнете и работает. Вот только .Net существует лишь в виндовсе.
---
Идиотов и фриков перевоспитать невозможно!
Dropbox - средство синхронизации и бэкапа файлов.
#24 
nihlathak местный житель29.03.05 17:06
nihlathak
NEW 29.03.05 17:06 
в ответ voxel3d 29.03.05 13:55
Ну ладно, согласен
А вот "одни шаблоны" ну зачем так Паскаль обижать? Что вот шаблоны одни, и все, Паскаль и не язык уже. Шаблоны не везде нужны, да и пользоваться ими не совсем просто, если задача не сводится к написанию класса вектора для float и int...
#25 
nihlathak местный житель29.03.05 17:09
nihlathak
NEW 29.03.05 17:09 
в ответ scorpi_ 29.03.05 14:08
п.с. Просто любопытно. Ты бустом пользуешься?
а как же Пользуюсь конечн

Видимо безостановочно пользуешься. В С++ тоже нет динамических массивов. Или возможность обращения через указатель с индексом автоматически делает из указателя массив?
#26 
voxel3d свой человек29.03.05 17:40
voxel3d
29.03.05 17:40 
в ответ nihlathak 29.03.05 17:06, Последний раз изменено 29.03.05 17:48 (voxel3d)
>Шаблоны не везде нужны
Kонтейнеры нужны практически всегда. Основанные на каком-нибудь TArrayList нетипобезопасны. Вот и все дела.
> да и пользоваться ими не совсем просто, если задача не сводится к написанию класса вектора для float и int...
Шаблоны не самая простая тема, но элегантность и мощь того, что получается при их использовании, стоят всех усилий. Вот, смотри, здесь текст читается из одного файла, преобразуется к нижнему регистру и записывается в другой:
#include <iterator>
#include <fstream>
using namespace std;
struct lower : unary_function<char,char>
{
char operator()(char c)const
{ return tolower(c,0); }
};
int main(int,char**)
{
ifstream is("source_file",0);
istream_iterator<char> ii(is),eos;
ofstream os("dest_file",0);
ostream_iterator<char> oo(os,0);
transform(ii,eos,oo,lower(),0);
return !is.eof() || !os;
}


что, слишком сложный код получился? Или слишком примитивный пример для демонстрации?
---
Идиотов и фриков перевоспитать невозможно!

Dropbox - средство синхронизации и бэкапа файлов.
#27 
voxel3d свой человек29.03.05 17:45
voxel3d
NEW 29.03.05 17:45 
в ответ nihlathak 29.03.05 17:09
std::vector<>, std::list<> вполне себе динамические массивы.
---
Идиотов и фриков перевоспитать невозможно!
Dropbox - средство синхронизации и бэкапа файлов.
#28 
toptop завсегдатай29.03.05 18:07
NEW 29.03.05 18:07 
в ответ voxel3d 29.03.05 16:57
В ответ на:

Он поддерживал процедурную парадигму и кастрированно объектно-ориентированную.


Я бы вообще убрал объектно-ориентированную, это была только попытка.

В ответ на:

Dim str As String
Dim n As Long
...
n = str


Как раз про это я речь и вел. Если научить человека, что нужно писать n=Clng(str), то он так и будет писать. Да, к сожалению, компилятор это проглатывал, не поперхнувшись, но BASIC то для других целей задумывался. Это сейчас он в ООП вырос.

В ответ на:

Вот только .Net существует лишь в виндовсе.


, а также в Linuxe и других ОСях под Моной.

#29 
scorpi_ скептик29.03.05 18:21
NEW 29.03.05 18:21 
в ответ voxel3d 29.03.05 17:40, Последний раз изменено 29.03.05 18:46 (scorpi_)
Вот только functor я несколько другой использую:
template< class Ch >
class lower : public std::unary_function< Ch, Ch >
{
std::locale const& loc_;
public:
lower( std::locale const& loc = std::locale() ) : loc_(loc) { }
Ch operator()( Ch c ) const
{
return std::tolower( c, loc_ ,0);
}
};


Почему не следует в данном контексте использовать сишную функцию

int tolower(int)

- читать здесь http://groups.google.com/groups?hl=de&lr=&threadm=5go4cs$10@netlab.cs.rpi.edu&rn...
(ещё один интересный топик на данную тему - http://groups.google.com/groups?hl=de&lr=&threadm=7tftn0$1a1$1@nnrp1.deja.com&rn...)
I did it my way

#30 
scorpi_ скептик29.03.05 18:42
NEW 29.03.05 18:42 
в ответ nihlathak 29.03.05 17:09
Видимо безостановочно пользуешься.
И каким же образом boost это меняет?
В С++ тоже нет динамических массивов.
Ну покажи мне аналог из Паскаля для new int[n] Или ещё лучше - запрограммируй в Паскале аналог std::vector
I did it my way
#31 
voxel3d свой человек29.03.05 18:43
voxel3d
NEW 29.03.05 18:43 
в ответ toptop 29.03.05 18:07
>Я бы вообще убрал объектно-ориентированную, это была только попытка.
ООП имеет право на существование. И много где его применение оправдано. Равно как и процедурного программирования. Уметь только процедурное программирование использовать, это глупо. Язык который имеет кривую поддержку ООП не предназначен для обучения. О ч╦м и говорилось.
>а также в Linuxe и других ОСях под Моной
Только, вот, проблемы у народа с переносимостью. Да и microsoft не имеет никакого отношения к mono, а когда они (microsoft) что-то поменяют в .Net-e вот, тогда совсем весло станет.
---
Идиотов и фриков перевоспитать невозможно!
Dropbox - средство синхронизации и бэкапа файлов.
#32 
scorpi_ скептик29.03.05 18:44
NEW 29.03.05 18:44 
в ответ nihlathak 29.03.05 17:06
Шаблоны не везде нужны, да и пользоваться ими не совсем просто, если задача не сводится к написанию класса вектора для float и int...
Использование != написание
А вообще мне сложно представить себе более-менее серьёзную программу не использующую стандартные контейнеры...
I did it my way
#33 
voxel3d свой человек29.03.05 18:47
voxel3d
NEW 29.03.05 18:47 
в ответ scorpi_ 29.03.05 18:21
Ок, понял, thanx.

---
Идиотов и фриков перевоспитать невозможно!
Dropbox - средство синхронизации и бэкапа файлов.
#34 
nihlathak местный житель29.03.05 19:42
nihlathak
NEW 29.03.05 19:42 
в ответ voxel3d 29.03.05 17:40
что, слишком сложный код получился? Или слишком примитивный пример для демонстрации?
Скорее второе, использовать STL довольно просто, можно даже не знать ничего о шаблонах. В принципе необходимость изобретения очередного велосипеда редко возникает... но я бы посмотрел на твою реализацию VoxelSTL
Где-то на середине книги Modern C++ я понял, что пора начинать читать ее заново. Ну да ладно, это лично моя проблема, не буду распространять на всех.
#35 
nihlathak местный житель29.03.05 19:45
nihlathak
NEW 29.03.05 19:45 
в ответ voxel3d 29.03.05 17:45
А я и не спорю. Вроде STL включена в стандарт? Но я говорил лишь про то, что если библиотека "случайно потеряется", то вместе с ней потеряются и динамические массивы. Компилятор сам по себе про них ничего не знает.
#36 
nihlathak местный житель29.03.05 19:52
nihlathak
NEW 29.03.05 19:52 
в ответ scorpi_ 29.03.05 18:42
И каким же образом boost это меняет?
Немного туманит голову, вот надо отнять у тебя boost и посмотреть что будет
Или ещё лучше - запрограммируй в Паскале аналог std::vector
На TP я за такую задачу не берусь, а вот на Object Pascal более-менее похожего инвалида можно сделать, конечно с большими ограничениями. Но я же не кричу, что Паскаль - язык всех времен и народов! Ну нет шаблонов... я не виноват
аналог из Паскаля для new int[n]
Если не придиратся к синтаксису, то особых проблем нет.
#37 
toptop завсегдатай29.03.05 20:15
NEW 29.03.05 20:15 
в ответ voxel3d 29.03.05 18:43
В ответ на:

Язык который имеет кривую поддержку ООП не предназначен для обучения.


Я учился по большой голубой С до Страуструпа и ничего живой.

В ответ на:

Да и microsoft не имеет никакого отношения к mono, а когда они (microsoft) что-то поменяют в .Net-e вот, тогда совсем весло станет.


Дело в том, что .NET был мелкомягкими застандартизован. Мона делается на основе стандарта. Если МС зарегистрирует новый стандарт, то мона тоже может дальше развиваться. Но глобальной революции в .NET пока не предвидиться.

#38 
scorpi_ скептик29.03.05 20:17
NEW 29.03.05 20:17 
в ответ nihlathak 29.03.05 19:52
Немного туманит голову, вот надо отнять у тебя boost и посмотреть что будет
ничего не будет. Вот если отнять standard library - тогда я обижусь не на шутку
Если не придиратся к синтаксису, то особых проблем нет.
Ни в стандартном паскале, ни в extended такого нет.
I did it my way
#39 
nihlathak местный житель29.03.05 20:31
nihlathak
NEW 29.03.05 20:31 
в ответ scorpi_ 29.03.05 20:17
ничего не будет. Вот если отнять standard library - тогда я обижусь не на шутку
Да? А в STL делегатов, например, нет Ничего страшного?
Ни в стандартном паскале, ни в extended такого нет.
Чего нет? new нет? Можно написать new(type, var). Только с type проблема. Можно было бы сделать TObject, но простые типы не выведены из класса, так что нужно или их переписать или делать дополнительную проверку - что передается. А возвращать видимо pointer придется... А кто сказал что легко будет?
#40 
1 2 3 все